Rev 819 | Rev 870 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 819 | Rev 869 | ||
|---|---|---|---|
| Line 28... | Line 28... | ||
| 28 | */ |
28 | */ |
| 29 | 29 | ||
| 30 | #ifndef __ia64_PAGE_H__ |
30 | #ifndef __ia64_PAGE_H__ |
| 31 | #define __ia64_PAGE_H__ |
31 | #define __ia64_PAGE_H__ |
| 32 | 32 | ||
| - | 33 | #ifndef __ASM__ |
|
| - | 34 | ||
| - | 35 | ||
| 33 | #include <arch/mm/frame.h> |
36 | #include <arch/mm/frame.h> |
| - | 37 | #include <arch/barrier.h> |
|
| 34 | #include <genarch/mm/page_ht.h> |
38 | #include <genarch/mm/page_ht.h> |
| 35 | #include <arch/mm/asid.h> |
39 | #include <arch/mm/asid.h> |
| 36 | #include <arch/types.h> |
40 | #include <arch/types.h> |
| 37 | #include <typedefs.h> |
41 | #include <typedefs.h> |
| 38 | #include <debug.h> |
42 | #include <debug.h> |
| 39 | 43 | ||
| - | 44 | #endif |
|
| - | 45 | ||
| 40 | #define PAGE_SIZE FRAME_SIZE |
46 | #define PAGE_SIZE FRAME_SIZE |
| 41 | #define PAGE_WIDTH FRAME_WIDTH |
47 | #define PAGE_WIDTH FRAME_WIDTH |
| - | 48 | #define KERNEL_PAGE_WIDTH 26 |
|
| - | 49 | ||
| 42 | 50 | ||
| 43 | #define KA2PA(x) ((__address) (x)) |
- | |
| 44 | #define PA2KA(x) ((__address) (x)) |
- | |
| 45 | 51 | ||
| 46 | #define SET_PTL0_ADDRESS_ARCH(x) /**< To be removed as situation permits. */ |
52 | #define SET_PTL0_ADDRESS_ARCH(x) /**< To be removed as situation permits. */ |
| 47 | 53 | ||
| 48 | #define PPN_SHIFT 12 |
54 | #define PPN_SHIFT 12 |
| 49 | 55 | ||
| 50 | #define VRN_SHIFT 61 |
56 | #define VRN_SHIFT 61 |
| 51 | #define VRN_MASK (7LL << VRN_SHIFT) |
57 | #define VRN_MASK (7LL << VRN_SHIFT) |
| - | 58 | ||
| - | 59 | #ifdef __ASM__ |
|
| 52 | #define VRN_KERNEL 0 |
60 | #define VRN_KERNEL 7 |
| - | 61 | #else |
|
| - | 62 | #define VRN_KERNEL 7LL |
|
| - | 63 | #endif |
|
| - | 64 | ||
| 53 | #define REGION_REGISTERS 8 |
65 | #define REGION_REGISTERS 8 |
| 54 | 66 | ||
| - | 67 | #define KA2PA(x) ((__address) (x-(VRN_KERNEL<<VRN_SHIFT))) |
|
| - | 68 | #define PA2KA(x) ((__address) (x+(VRN_KERNEL<<VRN_SHIFT))) |
|
| - | 69 | ||
| - | 70 | ||
| 55 | #define VHPT_WIDTH 20 /* 1M */ |
71 | #define VHPT_WIDTH 20 /* 1M */ |
| 56 | #define VHPT_SIZE (1 << VHPT_WIDTH) |
72 | #define VHPT_SIZE (1 << VHPT_WIDTH) |
| 57 | #define VHPT_BASE 0 /* Must be aligned to VHPT_SIZE */ |
73 | #define VHPT_BASE 0 /* Must be aligned to VHPT_SIZE */ |
| 58 | 74 | ||
| 59 | #define PTA_BASE_SHIFT 15 |
75 | #define PTA_BASE_SHIFT 15 |
| Line 74... | Line 90... | ||
| 74 | 90 | ||
| 75 | #define VA_REGION_INDEX 61 |
91 | #define VA_REGION_INDEX 61 |
| 76 | 92 | ||
| 77 | #define VA_REGION(va) (va>>VA_REGION_INDEX) |
93 | #define VA_REGION(va) (va>>VA_REGION_INDEX) |
| 78 | 94 | ||
| 79 | 95 | #ifndef __ASM__ |
|
| 80 | 96 | ||
| 81 | struct vhpt_tag_info { |
97 | struct vhpt_tag_info { |
| 82 | unsigned long long tag : 63; |
98 | unsigned long long tag : 63; |
| 83 | unsigned ti : 1; |
99 | unsigned ti : 1; |
| 84 | } __attribute__ ((packed)); |
100 | } __attribute__ ((packed)); |
| Line 261... | Line 277... | ||
| 261 | 277 | ||
| 262 | extern vhpt_entry_t *vhpt_hash(__address page, asid_t asid); |
278 | extern vhpt_entry_t *vhpt_hash(__address page, asid_t asid); |
| 263 | extern bool vhpt_compare(__address page, asid_t asid, vhpt_entry_t *v); |
279 | extern bool vhpt_compare(__address page, asid_t asid, vhpt_entry_t *v); |
| 264 | extern void vhpt_set_record(vhpt_entry_t *v, __address page, asid_t asid, __address frame, int flags); |
280 | extern void vhpt_set_record(vhpt_entry_t *v, __address page, asid_t asid, __address frame, int flags); |
| 265 | 281 | ||
| - | 282 | ||
| - | 283 | static inline void pokus(void) |
|
| - | 284 | { |
|
| - | 285 | region_register rr; |
|
| - | 286 | rr.word=rr_read(0); |
|
| - | 287 | srlz_d(); |
|
| - | 288 | rr_write(0,rr.word); |
|
| - | 289 | srlz_d(); |
|
| - | 290 | ||
| - | 291 | } |
|
| - | 292 | ||
| - | 293 | #endif |
|
| - | 294 | ||
| 266 | #endif |
295 | #endif |
| - | 296 | ||
| - | 297 | ||