63 | | |
64 | | The generic MMU defines 10 registers, that can be accessed by the software ttrough the generic cache/proccessor interface defined |
65 | | :|| PTPR || set Page Table Pointer Register || Write |||| TLB_EN || activates Data & Instruction TLBs || Write || || ICACHE_FLUSH || flush Instruction Cache || Write |||| DCACHE_FLUSH || flush Data Cache || Write |||| ITLB_INVAL || Instruction TLB line invalidate || Write |||| DTLB_INVAL || Data TLB line invalidate || Write |||| ICACHE_INVAL || Instruction Cache line invalidate|| Write |||| DCACHE_INVAL || Data Cache line invalidate|| Write |||| BAD_VADDR || Bad Virtual Address Register || Read |||| ERR_TYPE || Exception type Register || Read ||In the Vcache and CC_Vcache components, the cachability (for both instruction & data accesses) can be defined by software - on a per-logical-page basis) through the cacheability |
| 63 | This MMU performs both the logical address to physical address translation, and access rights checking. |
| 64 | * The logical address is 32 bits. |
| 65 | * The Physical address is 36 bits (or less). |
| 66 | * It is implemented as a two level, hierarchical, page table. |
| 67 | * Both first & second level page table contains 1024 entries. |
| 68 | * Two page sizes are supported : 4 Kbytes, or 4 Mbytes. |
| 69 | * Two separated TLBs are iused for instruction and data addresses. |
| 70 | * The TLB misses are handled by hardware (hardwired table-walk). |
| 71 | * An execution context is defined by the value stored in the PTPR (Page Table Pointer Register). |
| 72 | * Any context switch flush both the instruction & data TLBs. |
| 73 | |
| 74 | The page page descriptor format is 32 bits: |
| 75 | |
| 76 | ||ET || Entry Type || 2 bits || |
| 77 | ||C || Cachable || 1 bit || |
| 78 | ||W || Writable || 1 bit || |
| 79 | ||X || eXecutable || 1 bit || |
| 80 | ||U || User 'access in user mode allowed || 1 bit || |
| 81 | ||G || Global (not invalidate by TLB flush || 1 bit || |
| 82 | ||D || Dirty (page has been modified) || 1 bit || |
| 83 | ||PPN||Physical Page Number || 24 bits || |
| 84 | |
| 85 | The generic MMU defines 10 registers, that can be accessed by the software ttrough the generic cache/proccessor interface defined in source:root/trunk/soclib/soclib/lib/iss2/include/iss2.h |
| 86 | |
| 87 | || PTPR || set Page Table Pointer Register || Write || |
| 88 | || TLB_EN || activates Data & Instruction TLBs || Write || |
| 89 | || ICACHE_FLUSH || flush Instruction Cache || Write || |
| 90 | || DCACHE_FLUSH || flush Data Cache || Write || |
| 91 | || ITLB_INVAL || Instruction TLB line invalidate || Write || |
| 92 | || DTLB_INVAL || Data TLB line invalidate || Write || |
| 93 | || ICACHE_INVAL || Instruction Cache line invalidate || Write || |
| 94 | || DCACHE_INVAL || Data Cache line invalidate || Write || |
| 95 | || BAD_VADDR || Bad Virtual Address Register || Read || |
| 96 | || ERR_TYPE || Exception type Register || Read || |
| 97 | |