Rev 1270 | Rev 1423 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1270 | Rev 1374 | ||
---|---|---|---|
Line 106... | Line 106... | ||
106 | (1 << PAGE_CACHEABLE_SHIFT) | |
106 | (1 << PAGE_CACHEABLE_SHIFT) | |
107 | ((!p->p) << PAGE_PRESENT_SHIFT) | |
107 | ((!p->p) << PAGE_PRESENT_SHIFT) | |
108 | (1 << PAGE_USER_SHIFT) | |
108 | (1 << PAGE_USER_SHIFT) | |
109 | (1 << PAGE_READ_SHIFT) | |
109 | (1 << PAGE_READ_SHIFT) | |
110 | (1 << PAGE_WRITE_SHIFT) | |
110 | (1 << PAGE_WRITE_SHIFT) | |
111 | (1 << PAGE_EXEC_SHIFT) |
111 | (1 << PAGE_EXEC_SHIFT) | |
- | 112 | (p->g << PAGE_GLOBAL_SHIFT) |
|
112 | ); |
113 | ); |
113 | } |
114 | } |
114 | 115 | ||
115 | static inline void set_pt_flags(pte_t *pt, index_t i, int flags) |
116 | static inline void set_pt_flags(pte_t *pt, index_t i, int flags) |
116 | { |
117 | { |
117 | pte_t *p = &pt[i]; |
118 | pte_t *p = &pt[i]; |
118 | 119 | ||
119 | p->p = !(flags & PAGE_NOT_PRESENT); |
120 | p->p = !(flags & PAGE_NOT_PRESENT); |
- | 121 | p->g = (flags & PAGE_GLOBAL) != 0; |
|
120 | p->valid = 1; |
122 | p->valid = 1; |
121 | } |
123 | } |
122 | 124 | ||
123 | extern void page_arch_init(void); |
125 | extern void page_arch_init(void); |
124 | 126 | ||
- | 127 | #define PHT_BITS 16 |
|
- | 128 | #define PHT_ORDER 4 |
|
- | 129 | ||
- | 130 | typedef struct { |
|
- | 131 | unsigned v : 1; /**< Valid */ |
|
- | 132 | unsigned vsid : 24; /**< Virtual Segment ID */ |
|
- | 133 | unsigned h : 1; /**< Primary/secondary hash */ |
|
- | 134 | unsigned api : 6; /**< Abbreviated Page Index */ |
|
- | 135 | unsigned rpn : 20; /**< Real Page Number */ |
|
- | 136 | unsigned reserved0 : 3; |
|
- | 137 | unsigned r : 1; /**< Reference */ |
|
- | 138 | unsigned c : 1; /**< Change */ |
|
- | 139 | unsigned wimg : 4; /**< Access control */ |
|
- | 140 | unsigned reserved1 : 1; |
|
- | 141 | unsigned pp : 2; /**< Page protection */ |
|
- | 142 | } phte_t; |
|
- | 143 | ||
- | 144 | extern void pht_refill(bool data, istate_t *istate); |
|
- | 145 | extern void pht_init(void); |
|
- | 146 | ||
125 | #endif /* __ASM__ */ |
147 | #endif /* __ASM__ */ |
126 | 148 | ||
127 | #endif /* KERNEL */ |
149 | #endif /* KERNEL */ |
128 | 150 | ||
129 | #endif |
151 | #endif |