📄 core.h
字号:
#define XCHAL_DTLB_SET3_ASID_RESET 0 /* 1 if ASID reset values defined (and all writable); 0 otherwise */#define XCHAL_DTLB_SET3_VPN_RESET 0 /* 1 if VPN reset values defined (and all writable); 0 otherwise */#define XCHAL_DTLB_SET3_PPN_RESET 0 /* 1 if PPN reset values defined (and all writable); 0 otherwise */#define XCHAL_DTLB_SET3_CA_RESET 0 /* 1 if CA reset values defined (and all writable); 0 otherwise *//* Constant ASID values for each entry of DTLB way set 3 (because ASID_CONSTMASK is non-zero): */#define XCHAL_DTLB_SET3_E0_ASID_CONST 0x01#define XCHAL_DTLB_SET3_E1_ASID_CONST 0x01/* Constant VPN values for each entry of DTLB way set 3 (because VPN_CONSTMASK is non-zero): */#define XCHAL_DTLB_SET3_E0_VPN_CONST 0xE0000000#define XCHAL_DTLB_SET3_E1_VPN_CONST 0xF0000000/* Constant PPN values for each entry of DTLB way set 3 (because PPN_CONSTMASK is non-zero): */#define XCHAL_DTLB_SET3_E0_PPN_CONST 0xF0000000#define XCHAL_DTLB_SET3_E1_PPN_CONST 0xF0000000/* Constant CA values for each entry of DTLB way set 3 (because CA_CONSTMASK is non-zero): */#define XCHAL_DTLB_SET3_E0_CA_CONST 0x07#define XCHAL_DTLB_SET3_E1_CA_CONST 0x03/* DTLB way set 4 (group of ways 7 thru 9): */#define XCHAL_DTLB_SET4_WAY 7 /* index of first way in this way set */#define XCHAL_DTLB_SET4_WAYS 3 /* number of (contiguous) ways in this way set */#define XCHAL_DTLB_SET4_ENTRIES_LOG2 0 /* log2(number of entries in this way) */#define XCHAL_DTLB_SET4_ENTRIES 1 /* number of entries in this way (always a power of 2) */#define XCHAL_DTLB_SET4_ARF 0 /* 1=autorefill by h/w, 0=non-autorefill (wired/constant/static) */#define XCHAL_DTLB_SET4_PAGESIZES 1 /* number of supported page sizes in this way */#define XCHAL_DTLB_SET4_PAGESZ_BITS 0 /* number of bits to encode the page size */#define XCHAL_DTLB_SET4_PAGESZ_LOG2_MIN 12 /* log2(minimum supported page size) */#define XCHAL_DTLB_SET4_PAGESZ_LOG2_MAX 12 /* log2(maximum supported page size) */#define XCHAL_DTLB_SET4_PAGESZ_LOG2_LIST 12 /* list of log2(page size)s, separated by XCHAL_SEP; 2^PAGESZ_BITS entries in list, unsupported entries are zero */#define XCHAL_DTLB_SET4_ASID_CONSTMASK 0 /* constant ASID bits; 0 if all writable */#define XCHAL_DTLB_SET4_VPN_CONSTMASK 0 /* constant VPN bits, not including entry index bits; 0 if all writable */#define XCHAL_DTLB_SET4_PPN_CONSTMASK 0 /* constant PPN bits, including entry index bits; 0 if all writable */#define XCHAL_DTLB_SET4_CA_CONSTMASK 0 /* constant CA bits; 0 if all writable */#define XCHAL_DTLB_SET4_ASID_RESET 0 /* 1 if ASID reset values defined (and all writable); 0 otherwise */#define XCHAL_DTLB_SET4_VPN_RESET 0 /* 1 if VPN reset values defined (and all writable); 0 otherwise */#define XCHAL_DTLB_SET4_PPN_RESET 0 /* 1 if PPN reset values defined (and all writable); 0 otherwise */#define XCHAL_DTLB_SET4_CA_RESET 0 /* 1 if CA reset values defined (and all writable); 0 otherwise *//* Indexing macros: */#define _XCHAL_DTLB_SET(n,_what) XCHAL_DTLB_SET ## n ## _what#define XCHAL_DTLB_SET(n,what) _XCHAL_DTLB_SET(n, _ ## what )#define _XCHAL_DTLB_SET_E(n,i,_what) XCHAL_DTLB_SET ## n ## _E ## i ## _what#define XCHAL_DTLB_SET_E(n,i,what) _XCHAL_DTLB_SET_E(n,i, _ ## what )/* * Example use: XCHAL_DTLB_SET(XCHAL_DTLB_ARF_SET0,ENTRIES) * to get the value of XCHAL_DTLB_SET<n>_ENTRIES where <n> is the first auto-refill set. *//* * Determine whether we have a full MMU (with Page Table and Protection) * usable for an MMU-based OS: */#if XCHAL_HAVE_TLBS && !XCHAL_HAVE_SPANNING_WAY && XCHAL_ITLB_ARF_WAYS > 0 && XCHAL_DTLB_ARF_WAYS > 0 && XCHAL_MMU_RINGS >= 2# define XCHAL_HAVE_PTP_MMU 1 /* have full MMU (with page table [autorefill] and protection) */#else# define XCHAL_HAVE_PTP_MMU 0 /* don't have full MMU */#endif/* * For full MMUs, report kernel RAM segment and kernel I/O segment static page mappings: */#if XCHAL_HAVE_PTP_MMU#define XCHAL_KSEG_CACHED_VADDR 0xD0000000 /* virt.addr of kernel RAM cached static map */#define XCHAL_KSEG_CACHED_PADDR 0x00000000 /* phys.addr of kseg_cached */#define XCHAL_KSEG_CACHED_SIZE 0x08000000 /* size in bytes of kseg_cached (assumed power of 2!!!) */#define XCHAL_KSEG_BYPASS_VADDR 0xD8000000 /* virt.addr of kernel RAM bypass (uncached) static map */#define XCHAL_KSEG_BYPASS_PADDR 0x00000000 /* phys.addr of kseg_bypass */#define XCHAL_KSEG_BYPASS_SIZE 0x08000000 /* size in bytes of kseg_bypass (assumed power of 2!!!) */#define XCHAL_KIO_CACHED_VADDR 0xE0000000 /* virt.addr of kernel I/O cached static map */#define XCHAL_KIO_CACHED_PADDR 0xF0000000 /* phys.addr of kio_cached */#define XCHAL_KIO_CACHED_SIZE 0x10000000 /* size in bytes of kio_cached (assumed power of 2!!!) */#define XCHAL_KIO_BYPASS_VADDR 0xF0000000 /* virt.addr of kernel I/O bypass (uncached) static map */#define XCHAL_KIO_BYPASS_PADDR 0xF0000000 /* phys.addr of kio_bypass */#define XCHAL_KIO_BYPASS_SIZE 0x10000000 /* size in bytes of kio_bypass (assumed power of 2!!!) */#define XCHAL_SEG_MAPPABLE_VADDR 0x00000000 /* start of largest non-static-mapped virtual addr area */#define XCHAL_SEG_MAPPABLE_SIZE 0xD0000000 /* size in bytes of " *//* define XCHAL_SEG_MAPPABLE2_xxx if more areas present, sorted in order of descending size. */#endif/*---------------------------------------------------------------------- MISC ----------------------------------------------------------------------*/#define XCHAL_NUM_WRITEBUFFER_ENTRIES 4 /* number of write buffer entries */#define XCHAL_CORE_ID "linux_be" /* configuration's alphanumeric core identifier (CoreID) set in the Xtensa Processor Generator */#define XCHAL_BUILD_UNIQUE_ID 0x00003256 /* software build-unique ID (22-bit) *//* These definitions describe the hardware targeted by this software: */#define XCHAL_HW_CONFIGID0 0xC103D1FF /* config ID reg 0 value (upper 32 of 64 bits) */#define XCHAL_HW_CONFIGID1 0x00803256 /* config ID reg 1 value (lower 32 of 64 bits) */#define XCHAL_CONFIGID0 XCHAL_HW_CONFIGID0 /* for backward compatibility only -- don't use! */#define XCHAL_CONFIGID1 XCHAL_HW_CONFIGID1 /* for backward compatibility only -- don't use! */#define XCHAL_HW_RELEASE_MAJOR 1050 /* major release of targeted hardware */#define XCHAL_HW_RELEASE_MINOR 1 /* minor release of targeted hardware */#define XCHAL_HW_RELEASE_NAME "T1050.1" /* full release name of targeted hardware */#define XTHAL_HW_REL_T1050 1#define XTHAL_HW_REL_T1050_1 1#define XCHAL_HW_CONFIGID_RELIABLE 1/* * Miscellaneous special register fields: *//* DBREAKC (special register number 160): */#define XCHAL_DBREAKC_VALIDMASK 0xC000003F /* bits of DBREAKC that are defined *//* MASK field: */#define XCHAL_DBREAKC_MASK_BITS 6 /* number of bits in MASK field */#define XCHAL_DBREAKC_MASK_NUM 64 /* max number of possible causes (2^bits) */#define XCHAL_DBREAKC_MASK_SHIFT 0 /* position of MASK bits in DBREAKC, starting from lsbit */#define XCHAL_DBREAKC_MASK_MASK 0x0000003F /* mask of bits in MASK field of DBREAKC *//* LOADBREAK field: */#define XCHAL_DBREAKC_LOADBREAK_BITS 1 /* number of bits in LOADBREAK field */#define XCHAL_DBREAKC_LOADBREAK_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_DBREAKC_LOADBREAK_SHIFT 30 /* position of LOADBREAK bits in DBREAKC, starting from lsbit */#define XCHAL_DBREAKC_LOADBREAK_MASK 0x40000000 /* mask of bits in LOADBREAK field of DBREAKC *//* STOREBREAK field: */#define XCHAL_DBREAKC_STOREBREAK_BITS 1 /* number of bits in STOREBREAK field */#define XCHAL_DBREAKC_STOREBREAK_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_DBREAKC_STOREBREAK_SHIFT 31 /* position of STOREBREAK bits in DBREAKC, starting from lsbit */#define XCHAL_DBREAKC_STOREBREAK_MASK 0x80000000 /* mask of bits in STOREBREAK field of DBREAKC *//* PS (special register number 230): */#define XCHAL_PS_VALIDMASK 0x00070FFF /* bits of PS that are defined *//* INTLEVEL field: */#define XCHAL_PS_INTLEVEL_BITS 4 /* number of bits in INTLEVEL field */#define XCHAL_PS_INTLEVEL_NUM 16 /* max number of possible causes (2^bits) */#define XCHAL_PS_INTLEVEL_SHIFT 0 /* position of INTLEVEL bits in PS, starting from lsbit */#define XCHAL_PS_INTLEVEL_MASK 0x0000000F /* mask of bits in INTLEVEL field of PS *//* EXCM field: */#define XCHAL_PS_EXCM_BITS 1 /* number of bits in EXCM field */#define XCHAL_PS_EXCM_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_PS_EXCM_SHIFT 4 /* position of EXCM bits in PS, starting from lsbit */#define XCHAL_PS_EXCM_MASK 0x00000010 /* mask of bits in EXCM field of PS *//* PROGSTACK field: */#define XCHAL_PS_PROGSTACK_BITS 1 /* number of bits in PROGSTACK field */#define XCHAL_PS_PROGSTACK_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_PS_PROGSTACK_SHIFT 5 /* position of PROGSTACK bits in PS, starting from lsbit */#define XCHAL_PS_PROGSTACK_MASK 0x00000020 /* mask of bits in PROGSTACK field of PS *//* RING field: */#define XCHAL_PS_RING_BITS 2 /* number of bits in RING field */#define XCHAL_PS_RING_NUM 4 /* max number of possible causes (2^bits) */#define XCHAL_PS_RING_SHIFT 6 /* position of RING bits in PS, starting from lsbit */#define XCHAL_PS_RING_MASK 0x000000C0 /* mask of bits in RING field of PS *//* OWB field: */#define XCHAL_PS_OWB_BITS 4 /* number of bits in OWB field */#define XCHAL_PS_OWB_NUM 16 /* max number of possible causes (2^bits) */#define XCHAL_PS_OWB_SHIFT 8 /* position of OWB bits in PS, starting from lsbit */#define XCHAL_PS_OWB_MASK 0x00000F00 /* mask of bits in OWB field of PS *//* CALLINC field: */#define XCHAL_PS_CALLINC_BITS 2 /* number of bits in CALLINC field */#define XCHAL_PS_CALLINC_NUM 4 /* max number of possible causes (2^bits) */#define XCHAL_PS_CALLINC_SHIFT 16 /* position of CALLINC bits in PS, starting from lsbit */#define XCHAL_PS_CALLINC_MASK 0x00030000 /* mask of bits in CALLINC field of PS *//* WOE field: */#define XCHAL_PS_WOE_BITS 1 /* number of bits in WOE field */#define XCHAL_PS_WOE_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_PS_WOE_SHIFT 18 /* position of WOE bits in PS, starting from lsbit */#define XCHAL_PS_WOE_MASK 0x00040000 /* mask of bits in WOE field of PS *//* EXCCAUSE (special register number 232): */#define XCHAL_EXCCAUSE_VALIDMASK 0x0000003F /* bits of EXCCAUSE that are defined *//* EXCCAUSE field: */#define XCHAL_EXCCAUSE_BITS 6 /* number of bits in EXCCAUSE register */#define XCHAL_EXCCAUSE_NUM 64 /* max number of possible causes (2^bits) */#define XCHAL_EXCCAUSE_SHIFT 0 /* position of EXCCAUSE bits in register, starting from lsbit */#define XCHAL_EXCCAUSE_MASK 0x0000003F /* mask of bits in EXCCAUSE register *//* DEBUGCAUSE (special register number 233): */#define XCHAL_DEBUGCAUSE_VALIDMASK 0x0000003F /* bits of DEBUGCAUSE that are defined *//* ICOUNT field: */#define XCHAL_DEBUGCAUSE_ICOUNT_BITS 1 /* number of bits in ICOUNT field */#define XCHAL_DEBUGCAUSE_ICOUNT_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_DEBUGCAUSE_ICOUNT_SHIFT 0 /* position of ICOUNT bits in DEBUGCAUSE, starting from lsbit */#define XCHAL_DEBUGCAUSE_ICOUNT_MASK 0x00000001 /* mask of bits in ICOUNT field of DEBUGCAUSE *//* IBREAK field: */#define XCHAL_DEBUGCAUSE_IBREAK_BITS 1 /* number of bits in IBREAK field */#define XCHAL_DEBUGCAUSE_IBREAK_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_DEBUGCAUSE_IBREAK_SHIFT 1 /* position of IBREAK bits in DEBUGCAUSE, starting from lsbit */#define XCHAL_DEBUGCAUSE_IBREAK_MASK 0x00000002 /* mask of bits in IBREAK field of DEBUGCAUSE *//* DBREAK field: */#define XCHAL_DEBUGCAUSE_DBREAK_BITS 1 /* number of bits in DBREAK field */#define XCHAL_DEBUGCAUSE_DBREAK_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_DEBUGCAUSE_DBREAK_SHIFT 2 /* position of DBREAK bits in DEBUGCAUSE, starting from lsbit */#define XCHAL_DEBUGCAUSE_DBREAK_MASK 0x00000004 /* mask of bits in DBREAK field of DEBUGCAUSE *//* BREAK field: */#define XCHAL_DEBUGCAUSE_BREAK_BITS 1 /* number of bits in BREAK field */#define XCHAL_DEBUGCAUSE_BREAK_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_DEBUGCAUSE_BREAK_SHIFT 3 /* position of BREAK bits in DEBUGCAUSE, starting from lsbit */#define XCHAL_DEBUGCAUSE_BREAK_MASK 0x00000008 /* mask of bits in BREAK field of DEBUGCAUSE *//* BREAKN field: */#define XCHAL_DEBUGCAUSE_BREAKN_BITS 1 /* number of bits in BREAKN field */#define XCHAL_DEBUGCAUSE_BREAKN_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_DEBUGCAUSE_BREAKN_SHIFT 4 /* position of BREAKN bits in DEBUGCAUSE, starting from lsbit */#define XCHAL_DEBUGCAUSE_BREAKN_MASK 0x00000010 /* mask of bits in BREAKN field of DEBUGCAUSE *//* DEBUGINT field: */#define XCHAL_DEBUGCAUSE_DEBUGINT_BITS 1 /* number of bits in DEBUGINT field */#define XCHAL_DEBUGCAUSE_DEBUGINT_NUM 2 /* max number of possible causes (2^bits) */#define XCHAL_DEBUGCAUSE_DEBUGINT_SHIFT 5 /* position of DEBUGINT bits in DEBUGCAUSE, starting from lsbit */#define XCHAL_DEBUGCAUSE_DEBUGINT_MASK 0x00000020 /* mask of bits in DEBUGINT field of DEBUGCAUSE *//*---------------------------------------------------------------------- ISA ----------------------------------------------------------------------*/#define XCHAL_HAVE_DENSITY 1 /* 1 if density option configured, 0 otherwise */#define XCHAL_HAVE_LOOPS 1 /* 1 if zero-overhead loops option configured, 0 otherwise *//* Misc instructions: */#define XCHAL_HAVE_NSA 0 /* 1 if NSA/NSAU instructions option configured, 0 otherwise */#define XCHAL_HAVE_MINMAX 0 /* 1 if MIN/MAX instructions option configured, 0 otherwise */#define XCHAL_HAVE_SEXT 0 /* 1 if sign-extend instruction option configured, 0 otherwise */#define XCHAL_HAVE_CLAMPS 0 /* 1 if CLAMPS instruction option configured, 0 otherwise */#define XCHAL_HAVE_MAC16 0 /* 1 if MAC16 option configured, 0 otherwise */#define XCHAL_HAVE_MUL16 0 /* 1 if 16-bit integer multiply option configured, 0 otherwise *//*#define XCHAL_HAVE_POPC 0*/ /* 1 if CRC instruction option configured, 0 otherwise *//*#define XCHAL_HAVE_CRC 0*/ /* 1 if POPC instruction option configured, 0 otherwise */#define XCHAL_HAVE_SPECULATION 0 /* 1 if speculation option configured, 0 otherwise *//*#define XCHAL_HAVE_MP_SYNC 0*/ /* 1 if multiprocessor sync. option configured, 0 otherwise */#define XCHAL_HAVE_PRID 0 /* 1 if processor ID register configured, 0 otherwise */#define XCHAL_NUM_MISC_REGS 2 /* number of miscellaneous registers (0..4) *//* These relate a bit more to TIE: */#define XCHAL_HAVE_BOOLEANS 0 /* 1 if booleans option configured, 0 otherwise */#define XCHAL_HAVE_MUL32 0 /* 1 if 32-bit integer multiply option configured, 0 otherwise */#define XCHAL_HAVE_MUL32_HIGH 0 /* 1 if MUL32 option includes MULUH and MULSH, 0 otherwise */#define XCHAL_HAVE_FP 0 /* 1 if floating point option configured, 0 otherwise *//*---------------------------------------------------------------------- DERIVED ------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -