Changeset ff9f858 in mainline for arch/ia32/include/mm/page.h
- Timestamp:
- 2005-06-30T23:27:02Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a1a03f9
- Parents:
- 992bbb97
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia32/include/mm/page.h
r992bbb97 rff9f858 30 30 #define __ia32_PAGE_H__ 31 31 32 #include <mm/page.h> 32 33 #include <arch/types.h> 33 34 #include <arch/mm/frame.h> 35 #include <typedefs.h> 34 36 35 37 #define PAGE_SIZE FRAME_SIZE … … 47 49 #define PTL3_INDEX_ARCH(vaddr) (((vaddr)>>12)&0x3ff) 48 50 51 #define GET_PTL0_ADDRESS_ARCH() ((pte_t *) read_cr3()) 49 52 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) ((pte_t *)((((pte_t *)(ptl0))[(i)].frame_address)<<12)) 50 53 #define GET_PTL2_ADDRESS_ARCH(ptl1, i) (ptl1) … … 52 55 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) ((__address)((((pte_t *)(ptl3))[(i)].frame_address)<<12)) 53 56 57 #define SET_PTL0_ADDRESS_ARCH(ptl0) (write_cr3((__address) (ptl0))) 58 #define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) (((pte_t *)(ptl0))[(i)].frame_address = (a)>>12) 59 #define SET_PTL2_ADDRESS_ARCH(ptl1, i, a) 60 #define SET_PTL3_ADDRESS_ARCH(ptl2, i, a) 61 #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) (((pte_t *)(ptl3))[(i)].frame_address = (a)>>12) 62 63 #define GET_PTL1_FLAGS_ARCH(ptl0, i) get_pt_flags((pte_t *)(ptl0), (index_t)(i)) 64 #define GET_PTL2_FLAGS_ARCH(ptl1, i) PAGE_PRESENT 65 #define GET_PTL3_FLAGS_ARCH(ptl2, i) PAGE_PRESENT 66 #define GET_FRAME_FLAGS_ARCH(ptl3, i) get_pt_flags((pte_t *)(ptl3), (index_t)(i)) 67 68 #define SET_PTL1_FLAGS_ARCH(ptl0, i, x) set_pt_flags((pte_t *)(ptl0), (index_t)(i), (x)) 69 #define SET_PTL2_FLAGS_ARCH(ptl1, i, x) 70 #define SET_PTL3_FLAGS_ARCH(ptl2, i, x) 71 #define SET_FRAME_FLAGS_ARCH(ptl3, i, x) set_pt_flags((pte_t *)(ptl3), (index_t)(i), (x)) 54 72 55 73 struct page_specifier { … … 66 84 } __attribute__ ((packed)); 67 85 68 typedef struct page_specifier pte_t; 86 typedef struct page_specifier pte_t; 87 88 static inline int get_pt_flags(pte_t *pt, index_t i) 89 { 90 pte_t *p = &pt[i]; 91 92 return ( 93 (!p->page_cache_disable)<<PAGE_CACHEABLE_SHIFT | 94 (!p->present)<<PAGE_PRESENT_SHIFT | 95 p->uaccessible<<PAGE_USER_SHIFT | 96 1<<PAGE_READ_SHIFT | 97 p->writeable<<PAGE_WRITE_SHIFT | 98 1<<PAGE_EXEC_SHIFT 99 ); 100 } 101 102 static inline void set_pt_flags(pte_t *pt, index_t i, int flags) 103 { 104 pte_t *p = &pt[i]; 105 106 p->page_cache_disable = !(flags & PAGE_CACHEABLE); 107 p->present = !(flags & PAGE_NOT_PRESENT); 108 p->uaccessible = flags & PAGE_USER; 109 p->writeable = flags & PAGE_WRITE; 110 } 69 111 70 112 extern void page_arch_init(void);
Note:
See TracChangeset
for help on using the changeset viewer.