Rev 3386 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3386 | Rev 4581 | ||
---|---|---|---|
Line 93... | Line 93... | ||
93 | #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) \ |
93 | #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) \ |
94 | (((pte_t *) (ptl3))[(i)].frame_address = (a) >> 12) |
94 | (((pte_t *) (ptl3))[(i)].frame_address = (a) >> 12) |
95 | 95 | ||
96 | /* Get PTE flags accessors for each level. */ |
96 | /* Get PTE flags accessors for each level. */ |
97 | #define GET_PTL1_FLAGS_ARCH(ptl0, i) \ |
97 | #define GET_PTL1_FLAGS_ARCH(ptl0, i) \ |
98 | get_pt_flags((pte_t *) (ptl0), (index_t) (i)) |
98 | get_pt_flags((pte_t *) (ptl0), (size_t) (i)) |
99 | #define GET_PTL2_FLAGS_ARCH(ptl1, i) \ |
99 | #define GET_PTL2_FLAGS_ARCH(ptl1, i) \ |
100 | PAGE_PRESENT |
100 | PAGE_PRESENT |
101 | #define GET_PTL3_FLAGS_ARCH(ptl2, i) \ |
101 | #define GET_PTL3_FLAGS_ARCH(ptl2, i) \ |
102 | PAGE_PRESENT |
102 | PAGE_PRESENT |
103 | #define GET_FRAME_FLAGS_ARCH(ptl3, i) \ |
103 | #define GET_FRAME_FLAGS_ARCH(ptl3, i) \ |
104 | get_pt_flags((pte_t *) (ptl3), (index_t) (i)) |
104 | get_pt_flags((pte_t *) (ptl3), (size_t) (i)) |
105 | 105 | ||
106 | /* Set PTE flags accessors for each level. */ |
106 | /* Set PTE flags accessors for each level. */ |
107 | #define SET_PTL1_FLAGS_ARCH(ptl0, i, x) \ |
107 | #define SET_PTL1_FLAGS_ARCH(ptl0, i, x) \ |
108 | set_pt_flags((pte_t *) (ptl0), (index_t) (i), (x)) |
108 | set_pt_flags((pte_t *) (ptl0), (size_t) (i), (x)) |
109 | #define SET_PTL2_FLAGS_ARCH(ptl1, i, x) |
109 | #define SET_PTL2_FLAGS_ARCH(ptl1, i, x) |
110 | #define SET_PTL3_FLAGS_ARCH(ptl2, i, x) |
110 | #define SET_PTL3_FLAGS_ARCH(ptl2, i, x) |
111 | #define SET_FRAME_FLAGS_ARCH(ptl3, i, x) \ |
111 | #define SET_FRAME_FLAGS_ARCH(ptl3, i, x) \ |
112 | set_pt_flags((pte_t *) (ptl3), (index_t) (i), (x)) |
112 | set_pt_flags((pte_t *) (ptl3), (size_t) (i), (x)) |
113 | 113 | ||
114 | /* Macros for querying the last level entries. */ |
114 | /* Macros for querying the last level entries. */ |
115 | #define PTE_VALID_ARCH(p) \ |
115 | #define PTE_VALID_ARCH(p) \ |
116 | (*((uint32_t *) (p)) != 0) |
116 | (*((uint32_t *) (p)) != 0) |
117 | #define PTE_PRESENT_ARCH(p) \ |
117 | #define PTE_PRESENT_ARCH(p) \ |
Line 143... | Line 143... | ||
143 | #define PFERR_CODE_US (1 << 2) |
143 | #define PFERR_CODE_US (1 << 2) |
144 | 144 | ||
145 | /** When bit on this position is 1, a reserved bit was set in page directory. */ |
145 | /** When bit on this position is 1, a reserved bit was set in page directory. */ |
146 | #define PFERR_CODE_RSVD (1 << 3) |
146 | #define PFERR_CODE_RSVD (1 << 3) |
147 | 147 | ||
148 | static inline int get_pt_flags(pte_t *pt, index_t i) |
148 | static inline int get_pt_flags(pte_t *pt, size_t i) |
149 | { |
149 | { |
150 | pte_t *p = &pt[i]; |
150 | pte_t *p = &pt[i]; |
151 | 151 | ||
152 | return ((!p->page_cache_disable) << PAGE_CACHEABLE_SHIFT | |
152 | return ((!p->page_cache_disable) << PAGE_CACHEABLE_SHIFT | |
153 | (!p->present) << PAGE_PRESENT_SHIFT | |
153 | (!p->present) << PAGE_PRESENT_SHIFT | |
Line 156... | Line 156... | ||
156 | p->writeable << PAGE_WRITE_SHIFT | |
156 | p->writeable << PAGE_WRITE_SHIFT | |
157 | 1 << PAGE_EXEC_SHIFT | |
157 | 1 << PAGE_EXEC_SHIFT | |
158 | p->global << PAGE_GLOBAL_SHIFT); |
158 | p->global << PAGE_GLOBAL_SHIFT); |
159 | } |
159 | } |
160 | 160 | ||
161 | static inline void set_pt_flags(pte_t *pt, index_t i, int flags) |
161 | static inline void set_pt_flags(pte_t *pt, size_t i, int flags) |
162 | { |
162 | { |
163 | pte_t *p = &pt[i]; |
163 | pte_t *p = &pt[i]; |
164 | 164 | ||
165 | p->page_cache_disable = !(flags & PAGE_CACHEABLE); |
165 | p->page_cache_disable = !(flags & PAGE_CACHEABLE); |
166 | p->present = !(flags & PAGE_NOT_PRESENT); |
166 | p->present = !(flags & PAGE_NOT_PRESENT); |