Rev 2071 | Rev 2465 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2071 | Rev 2089 | ||
---|---|---|---|
Line 55... | Line 55... | ||
55 | #define PAGE_COLOR_BITS 0 /* dummy */ |
55 | #define PAGE_COLOR_BITS 0 /* dummy */ |
56 | 56 | ||
57 | #ifdef KERNEL |
57 | #ifdef KERNEL |
58 | 58 | ||
59 | #ifndef __ASM__ |
59 | #ifndef __ASM__ |
60 | # include <mm/page.h> |
60 | # include <mm/mm.h> |
61 | # include <arch/types.h> |
61 | # include <arch/types.h> |
62 | #endif |
62 | # include <arch/interrupt.h> |
63 | 63 | ||
64 | #ifndef __ASM__ |
- | |
65 | static inline uintptr_t ka2pa(uintptr_t x) |
64 | static inline uintptr_t ka2pa(uintptr_t x) |
66 | { |
65 | { |
67 | if (x > 0xffffffff80000000) |
66 | if (x > 0xffffffff80000000) |
68 | return x - 0xffffffff80000000; |
67 | return x - 0xffffffff80000000; |
69 | else |
68 | else |
70 | return x - 0xffff800000000000; |
69 | return x - 0xffff800000000000; |
71 | } |
70 | } |
- | 71 | ||
72 | # define KA2PA(x) ka2pa((uintptr_t)x) |
72 | # define KA2PA(x) ka2pa((uintptr_t)x) |
73 | # define PA2KA_CODE(x) (((uintptr_t) (x)) + 0xffffffff80000000) |
73 | # define PA2KA_CODE(x) (((uintptr_t) (x)) + 0xffffffff80000000) |
74 | # define PA2KA(x) (((uintptr_t) (x)) + 0xffff800000000000) |
74 | # define PA2KA(x) (((uintptr_t) (x)) + 0xffff800000000000) |
75 | #else |
75 | #else |
76 | # define KA2PA(x) ((x) - 0xffffffff80000000) |
76 | # define KA2PA(x) ((x) - 0xffffffff80000000) |
77 | # define PA2KA(x) ((x) + 0xffffffff80000000) |
77 | # define PA2KA(x) ((x) + 0xffffffff80000000) |
78 | #endif |
78 | #endif |
79 | 79 | ||
80 | #define PTL0_ENTRIES_ARCH 512 |
80 | #define PTL0_ENTRIES_ARCH 512 |
81 | #define PTL1_ENTRIES_ARCH 512 |
81 | #define PTL1_ENTRIES_ARCH 512 |
82 | #define PTL2_ENTRIES_ARCH 512 |
82 | #define PTL2_ENTRIES_ARCH 512 |
Line 131... | Line 131... | ||
131 | #define PFERR_CODE_RSVD (1<<3) |
131 | #define PFERR_CODE_RSVD (1<<3) |
132 | 132 | ||
133 | /** When bit on this position os 1, the page fault was caused during instruction fecth. */ |
133 | /** When bit on this position os 1, the page fault was caused during instruction fecth. */ |
134 | #define PFERR_CODE_ID (1<<4) |
134 | #define PFERR_CODE_ID (1<<4) |
135 | 135 | ||
136 | /** Page Table Entry. */ |
- | |
137 | struct page_specifier { |
- | |
138 | unsigned present : 1; |
- | |
139 | unsigned writeable : 1; |
- | |
140 | unsigned uaccessible : 1; |
- | |
141 | unsigned page_write_through : 1; |
- | |
142 | unsigned page_cache_disable : 1; |
- | |
143 | unsigned accessed : 1; |
- | |
144 | unsigned dirty : 1; |
- | |
145 | unsigned unused: 1; |
- | |
146 | unsigned global : 1; |
- | |
147 | unsigned soft_valid : 1; /**< Valid content even if present bit is cleared. */ |
- | |
148 | unsigned avl : 2; |
- | |
149 | unsigned addr_12_31 : 30; |
- | |
150 | unsigned addr_32_51 : 21; |
- | |
151 | unsigned no_execute : 1; |
- | |
152 | } __attribute__ ((packed)); |
- | |
153 | - | ||
154 | static inline int get_pt_flags(pte_t *pt, index_t i) |
136 | static inline int get_pt_flags(pte_t *pt, index_t i) |
155 | { |
137 | { |
156 | pte_t *p = &pt[i]; |
138 | pte_t *p = &pt[i]; |
157 | 139 | ||
158 | return ( |
140 | return ( |