Changeset 0882a9a in mainline for arch/mips32/include/mm/page.h
- Timestamp:
- 2006-02-10T16:11:14Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ecbdc724
- Parents:
- d0a0f12
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/mips32/include/mm/page.h
rd0a0f12 r0882a9a 49 49 * - Offset is 14 bits => pages are 16K long 50 50 * - PTE's use similar format as CP0 EntryLo[01] registers => PTE is therefore 4 bytes long 51 * - PTE's replace EntryLo v (valid) bit with p (present) bit 52 * - PTE's use only one bit to distinguish between cacheable and uncacheable mappings 53 * - PTE's define soft_valid field to ensure there is at least one 1 bit even if the p bit is cleared 51 54 * - PTE's make use of CP0 EntryLo's two-bit reserved field for bit W (writable) and bit A (accessed) 52 55 * - PTL0 has 64 entries (6 bits) … … 63 66 #define SET_PTL0_ADDRESS_ARCH(ptl0) 64 67 65 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) (((pte_t *)(ptl0))[(i)]. lo.pfn<<12)68 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) (((pte_t *)(ptl0))[(i)].pfn<<12) 66 69 #define GET_PTL2_ADDRESS_ARCH(ptl1, i) (ptl1) 67 70 #define GET_PTL3_ADDRESS_ARCH(ptl2, i) (ptl2) 68 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) (((pte_t *)(ptl3))[(i)]. lo.pfn<<12)71 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) (((pte_t *)(ptl3))[(i)].pfn<<12) 69 72 70 #define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) (((pte_t *)(ptl0))[(i)]. lo.pfn = (a)>>12)73 #define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) (((pte_t *)(ptl0))[(i)].pfn = (a)>>12) 71 74 #define SET_PTL2_ADDRESS_ARCH(ptl1, i, a) 72 75 #define SET_PTL3_ADDRESS_ARCH(ptl2, i, a) 73 #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) (((pte_t *)(ptl3))[(i)]. lo.pfn = (a)>>12)76 #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) (((pte_t *)(ptl3))[(i)].pfn = (a)>>12) 74 77 75 78 #define GET_PTL1_FLAGS_ARCH(ptl0, i) get_pt_flags((pte_t *)(ptl0), (index_t)(i)) … … 95 98 96 99 return ( 97 ( (p->lo.c>PAGE_UNCACHED)<<PAGE_CACHEABLE_SHIFT) |98 ((!p-> lo.v)<<PAGE_PRESENT_SHIFT) |100 (p->cacheable<<PAGE_CACHEABLE_SHIFT) | 101 ((!p->p)<<PAGE_PRESENT_SHIFT) | 99 102 (1<<PAGE_USER_SHIFT) | 100 103 (1<<PAGE_READ_SHIFT) | 101 104 ((p->w)<<PAGE_WRITE_SHIFT) | 102 105 (1<<PAGE_EXEC_SHIFT) | 103 p->lo.g<<PAGE_GLOBAL_SHIFT106 (p->g<<PAGE_GLOBAL_SHIFT) 104 107 ); 105 108 … … 110 113 pte_t *p = &pt[i]; 111 114 112 p-> lo.c = (flags & PAGE_CACHEABLE) != 0 ? PAGE_CACHEABLE_EXC_WRITE : PAGE_UNCACHED;113 p-> lo.v= !(flags & PAGE_NOT_PRESENT);114 p-> lo.g = (flags & PAGE_GLOBAL) != 0;115 p->cacheable = (flags & PAGE_CACHEABLE) != 0; 116 p->p = !(flags & PAGE_NOT_PRESENT); 117 p->g = (flags & PAGE_GLOBAL) != 0; 115 118 p->w = (flags & PAGE_WRITE) != 0; 119 120 /* 121 * Ensure that valid entries have at least one bit set. 122 */ 123 p->soft_valid = 1; 116 124 } 117 125
Note:
See TracChangeset
for help on using the changeset viewer.