/* decodes <14:13> of a kseg3 window address */ typedefenum {
CVMX_ADD_WIN_SCR = 0L, /* see cvmx_add_win_dma_dec_t for further decode */
CVMX_ADD_WIN_DMA = 1L,
CVMX_ADD_WIN_UNUSED = 2L,
CVMX_ADD_WIN_UNUSED2 = 3L
} cvmx_add_win_dec_t;
/* decode within DMA space */ typedefenum { /* *Addstoredatatothewritebufferentry,allocatingitif *necessary.
*/
CVMX_ADD_WIN_DMA_ADD = 0L, /* send out the write buffer entry to DRAM */
CVMX_ADD_WIN_DMA_SENDMEM = 1L, /* store data must be normal DRAM memory space address in this case */ /* send out the write buffer entry as an IOBDMA command */
CVMX_ADD_WIN_DMA_SENDDMA = 2L, /* see CVMX_ADD_WIN_DMA_SEND_DEC for data contents */ /* send out the write buffer entry as an IO write */
CVMX_ADD_WIN_DMA_SENDIO = 3L, /* store data must be normal IO space address in this case */ /* send out a single-tick command on the NCB bus */
CVMX_ADD_WIN_DMA_SENDSINGLE = 4L, /* no write buffer data needed/used */
} cvmx_add_win_dma_dec_t;
/* *physicaladdressaccessedthroughxkphysunmappedvirtual *address.
*/ struct {
uint64_t R:2; /* CVMX_MIPS_SPACE_XKPHYS in this case */
uint64_t cca:3; /* ignored by octeon */
uint64_t mbz:10;
uint64_t pa:49; /* physical address */
} sxkphys;
/* physical address */ struct {
uint64_t mbz:15; /* if set, the address is uncached and resides on MCB bus */
uint64_t is_io:1; /* *thehardwareignoresthisfieldwhenis_io==0,else *deviceID.
*/
uint64_t did:8; /* the hardware ignores <39:36> in Octeon I */
uint64_t unaddr:4;
uint64_t offset:36;
} sphys;
/* physical mem address */ struct { /* technically, <47:40> are dont-cares */
uint64_t zeroes:24; /* the hardware ignores <39:36> in Octeon I */
uint64_t unaddr:4;
uint64_t offset:36;
} smem;
/* physical IO address */ struct {
uint64_t mem_region:2;
uint64_t mbz:13; /* 1 in this case */
uint64_t is_io:1; /* *Thehardwareignoresthisfieldwhenis_io==0,else *deviceID.
*/
uint64_t did:8; /* the hardware ignores <39:36> in Octeon I */
uint64_t unaddr:4;
uint64_t offset:36;
} sio;
/* *Scratchpadvirtualaddress-accessedthroughawindowat *theendofkseg3
*/ struct {
uint64_t ones:49; /* CVMX_ADD_WIN_SCR (0) in this case */
cvmx_add_win_dec_t csrdec:2;
uint64_t addr:13;
} sscr;
/* there should only be stores to IOBDMA space, no loads */ /* *IOBDMAvirtualaddress-accessedthroughawindowatthe *endofkseg3
*/ struct {
uint64_t ones:49;
uint64_t csrdec:2; /* CVMX_ADD_WIN_DMA (1) in this case */
uint64_t unused2:3;
uint64_t type:3;
uint64_t addr:7;
} sdma;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.