Changeset b3f8fb7 in mainline for kernel/arch/ia32/include/mm/page.h
- Timestamp:
- 2007-01-28T13:25:49Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8e8c1a5
- Parents:
- 1ba41c5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/include/mm/page.h
r1ba41c5 rb3f8fb7 62 62 #define PTL3_ENTRIES_ARCH 1024 63 63 64 #define PTL0_INDEX_ARCH(vaddr) (((vaddr) >>22)&0x3ff)64 #define PTL0_INDEX_ARCH(vaddr) (((vaddr) >> 22) & 0x3ff) 65 65 #define PTL1_INDEX_ARCH(vaddr) 0 66 66 #define PTL2_INDEX_ARCH(vaddr) 0 67 #define PTL3_INDEX_ARCH(vaddr) (((vaddr) >>12)&0x3ff)67 #define PTL3_INDEX_ARCH(vaddr) (((vaddr) >> 12) & 0x3ff) 68 68 69 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) ((pte_t *)((((pte_t *)(ptl0))[(i)].frame_address) <<12))69 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) ((pte_t *)((((pte_t *)(ptl0))[(i)].frame_address) << 12)) 70 70 #define GET_PTL2_ADDRESS_ARCH(ptl1, i) (ptl1) 71 71 #define GET_PTL3_ADDRESS_ARCH(ptl2, i) (ptl2) 72 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) ((uintptr_t)((((pte_t *)(ptl3))[(i)].frame_address) <<12))72 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) ((uintptr_t)((((pte_t *)(ptl3))[(i)].frame_address) << 12)) 73 73 74 74 #define SET_PTL0_ADDRESS_ARCH(ptl0) (write_cr3((uintptr_t) (ptl0))) … … 90 90 #define PTE_VALID_ARCH(p) (*((uint32_t *) (p)) != 0) 91 91 #define PTE_PRESENT_ARCH(p) ((p)->present != 0) 92 #define PTE_GET_FRAME_ARCH(p) ((p)->frame_address <<FRAME_WIDTH)92 #define PTE_GET_FRAME_ARCH(p) ((p)->frame_address << FRAME_WIDTH) 93 93 #define PTE_WRITABLE_ARCH(p) ((p)->writeable != 0) 94 94 #define PTE_EXECUTABLE_ARCH(p) 1 … … 96 96 #ifndef __ASM__ 97 97 98 #include <mm/page.h> 99 #include <arch/types.h> 100 #include <arch/mm/frame.h> 101 #include <typedefs.h> 98 #include <mm/mm.h> 99 #include <arch/interrupt.h> 102 100 103 101 /* Page fault error codes. */ 104 102 105 103 /** When bit on this position is 0, the page fault was caused by a not-present page. */ 106 #define PFERR_CODE_P (1 <<0)104 #define PFERR_CODE_P (1 << 0) 107 105 108 106 /** When bit on this position is 1, the page fault was caused by a write. */ 109 #define PFERR_CODE_RW (1 <<1)107 #define PFERR_CODE_RW (1 << 1) 110 108 111 109 /** When bit on this position is 1, the page fault was caused in user mode. */ 112 #define PFERR_CODE_US (1 <<2)110 #define PFERR_CODE_US (1 << 2) 113 111 114 112 /** When bit on this position is 1, a reserved bit was set in page directory. */ 115 #define PFERR_CODE_RSVD (1<<3) 116 117 /** Page Table Entry. */ 118 struct page_specifier { 119 unsigned present : 1; 120 unsigned writeable : 1; 121 unsigned uaccessible : 1; 122 unsigned page_write_through : 1; 123 unsigned page_cache_disable : 1; 124 unsigned accessed : 1; 125 unsigned dirty : 1; 126 unsigned pat : 1; 127 unsigned global : 1; 128 unsigned soft_valid : 1; /**< Valid content even if the present bit is not set. */ 129 unsigned avl : 2; 130 unsigned frame_address : 20; 131 } __attribute__ ((packed)); 113 #define PFERR_CODE_RSVD (1 << 3) 132 114 133 115 static inline int get_pt_flags(pte_t *pt, index_t i) … … 136 118 137 119 return ( 138 (!p->page_cache_disable) <<PAGE_CACHEABLE_SHIFT |139 (!p->present) <<PAGE_PRESENT_SHIFT |140 p->uaccessible <<PAGE_USER_SHIFT |120 (!p->page_cache_disable) << PAGE_CACHEABLE_SHIFT | 121 (!p->present) << PAGE_PRESENT_SHIFT | 122 p->uaccessible << PAGE_USER_SHIFT | 141 123 1<<PAGE_READ_SHIFT | 142 p->writeable <<PAGE_WRITE_SHIFT |124 p->writeable << PAGE_WRITE_SHIFT | 143 125 1<<PAGE_EXEC_SHIFT | 144 p->global <<PAGE_GLOBAL_SHIFT126 p->global << PAGE_GLOBAL_SHIFT 145 127 ); 146 128 }
Note:
See TracChangeset
for help on using the changeset viewer.