📄 core.h
字号:
/*---------------------------------------------------------------------- DEBUG ----------------------------------------------------------------------*/#define XCHAL_HAVE_DEBUG 1 /* 1 if debug option configured, 0 otherwise */#define XCHAL_HAVE_OCD 1 /* 1 if OnChipDebug option configured, 0 otherwise */#define XCHAL_NUM_IBREAK 2 /* number of IBREAKn regs */#define XCHAL_NUM_DBREAK 2 /* number of DBREAKn regs */#define XCHAL_DEBUGLEVEL 4 /* debug interrupt level *//*DebugExternalInterrupt 0 0|1*//*DebugUseDIRArray 0 0|1*//*---------------------------------------------------------------------- COPROCESSORS and EXTRA STATE ----------------------------------------------------------------------*/#define XCHAL_HAVE_CP 0 /* 1 if coprocessor option configured (CPENABLE present) */#define XCHAL_CP_MAXCFG 0 /* max allowed cp id plus one (per cfg) */#include <xtensa/config/tie.h>/*---------------------------------------------------------------------- INTERNAL I/D RAM/ROMs and XLMI ----------------------------------------------------------------------*/#define XCHAL_NUM_INSTROM 0 /* number of core instruction ROMs configured */#define XCHAL_NUM_INSTRAM 0 /* number of core instruction RAMs configured */#define XCHAL_NUM_DATAROM 0 /* number of core data ROMs configured */#define XCHAL_NUM_DATARAM 0 /* number of core data RAMs configured */#define XCHAL_NUM_XLMI 0 /* number of core XLMI ports configured */#define XCHAL_NUM_IROM XCHAL_NUM_INSTROM /* (DEPRECATED) */#define XCHAL_NUM_IRAM XCHAL_NUM_INSTRAM /* (DEPRECATED) */#define XCHAL_NUM_DROM XCHAL_NUM_DATAROM /* (DEPRECATED) */#define XCHAL_NUM_DRAM XCHAL_NUM_DATARAM /* (DEPRECATED) *//*---------------------------------------------------------------------- CACHE ----------------------------------------------------------------------*//* Size of the cache lines in log2(bytes): */#define XCHAL_ICACHE_LINEWIDTH 4#define XCHAL_DCACHE_LINEWIDTH 4/* Size of the cache lines in bytes: */#define XCHAL_ICACHE_LINESIZE 16#define XCHAL_DCACHE_LINESIZE 16/* Max for both I-cache and D-cache (used for general alignment): */#define XCHAL_CACHE_LINEWIDTH_MAX 4#define XCHAL_CACHE_LINESIZE_MAX 16/* Number of cache sets in log2(lines per way): */#define XCHAL_ICACHE_SETWIDTH 8#define XCHAL_DCACHE_SETWIDTH 8/* Max for both I-cache and D-cache (used for general cache-coherency page alignment): */#define XCHAL_CACHE_SETWIDTH_MAX 8#define XCHAL_CACHE_SETSIZE_MAX 256/* Cache set associativity (number of ways): */#define XCHAL_ICACHE_WAYS 2#define XCHAL_DCACHE_WAYS 2/* Size of the caches in bytes (ways * 2^(linewidth + setwidth)): */#define XCHAL_ICACHE_SIZE 8192#define XCHAL_DCACHE_SIZE 8192/* Cache features: */#define XCHAL_DCACHE_IS_WRITEBACK 0/* Whether cache locking feature is available: */#define XCHAL_ICACHE_LINE_LOCKABLE 0#define XCHAL_DCACHE_LINE_LOCKABLE 0/* Number of (encoded) cache attribute bits: */#define XCHAL_CA_BITS 4 /* number of bits needed to hold cache attribute encoding *//* (The number of access mode bits (decoded cache attribute bits) is defined by the architecture; see xtensa/hal.h?) *//* Cache Attribute encodings -- lists of access modes for each cache attribute: */#define XCHAL_FCA_LIST XTHAL_FAM_EXCEPTION XCHAL_SEP \ XTHAL_FAM_BYPASS XCHAL_SEP \ XTHAL_FAM_EXCEPTION XCHAL_SEP \ XTHAL_FAM_BYPASS XCHAL_SEP \ XTHAL_FAM_EXCEPTION XCHAL_SEP \ XTHAL_FAM_CACHED XCHAL_SEP \ XTHAL_FAM_EXCEPTION XCHAL_SEP \ XTHAL_FAM_CACHED XCHAL_SEP \ XTHAL_FAM_EXCEPTION XCHAL_SEP \ XTHAL_FAM_CACHED XCHAL_SEP \ XTHAL_FAM_EXCEPTION XCHAL_SEP \ XTHAL_FAM_CACHED XCHAL_SEP \ XTHAL_FAM_EXCEPTION XCHAL_SEP \ XTHAL_FAM_EXCEPTION XCHAL_SEP \ XTHAL_FAM_EXCEPTION XCHAL_SEP \ XTHAL_FAM_EXCEPTION#define XCHAL_LCA_LIST XTHAL_LAM_EXCEPTION XCHAL_SEP \ XTHAL_LAM_BYPASSG XCHAL_SEP \ XTHAL_LAM_EXCEPTION XCHAL_SEP \ XTHAL_LAM_BYPASSG XCHAL_SEP \ XTHAL_LAM_EXCEPTION XCHAL_SEP \ XTHAL_LAM_CACHED XCHAL_SEP \ XTHAL_LAM_EXCEPTION XCHAL_SEP \ XTHAL_LAM_CACHED XCHAL_SEP \ XTHAL_LAM_EXCEPTION XCHAL_SEP \ XTHAL_LAM_NACACHED XCHAL_SEP \ XTHAL_LAM_EXCEPTION XCHAL_SEP \ XTHAL_LAM_NACACHED XCHAL_SEP \ XTHAL_LAM_EXCEPTION XCHAL_SEP \ XTHAL_LAM_ISOLATE XCHAL_SEP \ XTHAL_LAM_EXCEPTION XCHAL_SEP \ XTHAL_LAM_CACHED#define XCHAL_SCA_LIST XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_BYPASS XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_WRITETHRU XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_WRITETHRU XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_ISOLATE XCHAL_SEP \ XTHAL_SAM_EXCEPTION XCHAL_SEP \ XTHAL_SAM_WRITETHRU/* Test: read/only: 0 + 1 + 2 + 4 + 5 + 6 + 8 + 9 + 10 + 12 + 14 read/only: 0 + 1 + 2 + 4 + 5 + 6 + 8 + 9 + 10 + 12 + 14 all: 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 fault: 0 + 2 + 4 + 6 + 8 + 10 + 12 + 14 r/w/x cached: r/w/x dcached: I-bypass: 1 + 3 load guard bit set: 1 + 3 load guard bit clr: 0 + 2 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 hit-cache r/w/x: 7 + 11 fams: 5 fams: 0 / 6 / 18 / 1 / 2 fams: Bypass / Isolate / Cached / Exception / NACached MMU okay: yes*//*---------------------------------------------------------------------- MMU ----------------------------------------------------------------------*//* * General notes on MMU parameters. * * Terminology: * ASID = address-space ID (acts as an "extension" of virtual addresses) * VPN = virtual page number * PPN = physical page number * CA = encoded cache attribute (access modes) * TLB = translation look-aside buffer (term is stretched somewhat here) * I = instruction (fetch accesses) * D = data (load and store accesses) * way = each TLB (ITLB and DTLB) consists of a number of "ways" * that simultaneously match the virtual address of an access; * a TLB successfully translates a virtual address if exactly * one way matches the vaddr; if none match, it is a miss; * if multiple match, one gets a "multihit" exception; * each way can be independently configured in terms of number of * entries, page sizes, which fields are writable or constant, etc. * set = group of contiguous ways with exactly identical parameters * ARF = auto-refill; hardware services a 1st-level miss by loading a PTE * from the page table and storing it in one of the auto-refill ways; * if this PTE load also misses, a miss exception is posted for s/w. * min-wired = a "min-wired" way can be used to map a single (minimum-sized) * page arbitrarily under program control; it has a single entry, * is non-auto-refill (some other way(s) must be auto-refill), * all its fields (VPN, PPN, ASID, CA) are all writable, and it * supports the XCHAL_MMU_MIN_PTE_PAGE_SIZE page size (a current * restriction is that this be the only page size it supports). * * TLB way entries are virtually indexed. * TLB ways that support multiple page sizes: * - must have all writable VPN and PPN fields; * - can only use one page size at any given time (eg. setup at startup), * selected by the respective ITLBCFG or DTLBCFG special register, * whose bits n*4+3 .. n*4 index the list of page sizes for way n * (XCHAL_xTLB_SETm_PAGESZ_LOG2_LIST for set m corresponding to way n); * this list may be sparse for auto-refill ways because auto-refill * ways have independent lists of supported page sizes sharing a * common encoding with PTE entries; the encoding is the index into * this list; unsupported sizes for a given way are zero in the list; * selecting unsupported sizes results in undefined hardware behaviour; * - is only possible for ways 0 thru 7 (due to ITLBCFG/DTLBCFG definition). */#define XCHAL_HAVE_CACHEATTR 0 /* 1 if CACHEATTR register present, 0 if TLBs present instead */#define XCHAL_HAVE_TLBS 1 /* 1 if TLBs present, 0 if CACHEATTR present instead */#define XCHAL_HAVE_MMU XCHAL_HAVE_TLBS /* (DEPRECATED; use XCHAL_HAVE_TLBS instead; will be removed in future release) */#define XCHAL_HAVE_SPANNING_WAY 0 /* 1 if single way maps entire virtual address space in I+D */#define XCHAL_HAVE_IDENTITY_MAP 0 /* 1 if virtual addr == physical addr always, 0 otherwise */#define XCHAL_HAVE_MIMIC_CACHEATTR 0 /* 1 if have MMU that mimics a CACHEATTR config (CaMMU) */#define XCHAL_HAVE_XLT_CACHEATTR 0 /* 1 if have MMU that mimics a CACHEATTR config, but with translation (CaXltMMU) */#define XCHAL_MMU_ASID_BITS 8 /* number of bits in ASIDs (address space IDs) */#define XCHAL_MMU_ASID_INVALID 0 /* ASID value indicating invalid address space */#define XCHAL_MMU_ASID_KERNEL 1 /* ASID value indicating kernel (ring 0) address space */#define XCHAL_MMU_RINGS 4 /* number of rings supported (1..4) */#define XCHAL_MMU_RING_BITS 2 /* number of bits needed to hold ring number */#define XCHAL_MMU_SR_BITS 0 /* number of size-restriction bits supported */#define XCHAL_MMU_CA_BITS 4 /* number of bits needed to hold cache attribute encoding */#define XCHAL_MMU_MAX_PTE_PAGE_SIZE 12 /* max page size in a PTE structure (log2) */#define XCHAL_MMU_MIN_PTE_PAGE_SIZE 12 /* min page size in a PTE structure (log2) *//*** Instruction TLB: ***/#define XCHAL_ITLB_WAY_BITS 3 /* number of bits holding the ways */#define XCHAL_ITLB_WAYS 7 /* number of ways (n-way set-associative TLB) */#define XCHAL_ITLB_ARF_WAYS 4 /* number of auto-refill ways */#define XCHAL_ITLB_SETS 4 /* number of sets (groups of ways with identical settings) *//* Way set to which each way belongs: */#define XCHAL_ITLB_WAY0_SET 0#define XCHAL_ITLB_WAY1_SET 0#define XCHAL_ITLB_WAY2_SET 0#define XCHAL_ITLB_WAY3_SET 0#define XCHAL_ITLB_WAY4_SET 1#define XCHAL_ITLB_WAY5_SET 2#define XCHAL_ITLB_WAY6_SET 3/* Ways sets that are used by hardware auto-refill (ARF): */#define XCHAL_ITLB_ARF_SETS 1 /* number of auto-refill sets */#define XCHAL_ITLB_ARF_SET0 0 /* index of n'th auto-refill set */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -