Changeset a0d74fd in mainline for arch/ia64/include/mm/page.h
- Timestamp:
- 2006-03-01T11:07:04Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9ad03fe
- Parents:
- 2c49fbbe
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia64/include/mm/page.h
r2c49fbbe ra0d74fd 31 31 #define __ia64_PAGE_H__ 32 32 33 #define PAGE_SIZE FRAME_SIZE 34 #define PAGE_WIDTH FRAME_WIDTH 35 36 /** Bit width of the TLB-locked portion of kernel address space. */ 37 #define KERNEL_PAGE_WIDTH 28 /* 256M */ 38 39 #define SET_PTL0_ADDRESS_ARCH(x) /**< To be removed as situation permits. */ 40 41 #define PPN_SHIFT 12 42 43 #define VRN_SHIFT 61 44 #define VRN_MASK (7LL << VRN_SHIFT) 45 #define VA2VRN(va) ((va)>>VRN_SHIFT) 46 47 #ifdef __ASM__ 48 #define VRN_KERNEL 7 49 #else 50 #define VRN_KERNEL 7LL 51 #endif 52 53 #define REGION_REGISTERS 8 54 55 #define KA2PA(x) ((__address) (x-(VRN_KERNEL<<VRN_SHIFT))) 56 #define PA2KA(x) ((__address) (x+(VRN_KERNEL<<VRN_SHIFT))) 57 58 #define VHPT_WIDTH 20 /* 1M */ 59 #define VHPT_SIZE (1 << VHPT_WIDTH) 60 #define VHPT_BASE 0 /* Must be aligned to VHPT_SIZE */ 61 62 #define PTA_BASE_SHIFT 15 63 64 /** Memory Attributes. */ 65 #define MA_WRITEBACK 0x0 66 #define MA_UNCACHEABLE 0x4 67 68 /** Privilege Levels. Only the most and the least privileged ones are ever used. */ 69 #define PL_KERNEL 0x0 70 #define PL_USER 0x3 71 72 /* Access Rigths. Only certain combinations are used by the kernel. */ 73 #define AR_READ 0x0 74 #define AR_EXECUTE 0x1 75 #define AR_WRITE 0x2 76 33 77 #ifndef __ASM__ 34 35 78 36 79 #include <arch/mm/frame.h> … … 41 84 #include <typedefs.h> 42 85 #include <debug.h> 43 44 #endif45 46 #define PAGE_SIZE FRAME_SIZE47 #define PAGE_WIDTH FRAME_WIDTH48 #define KERNEL_PAGE_WIDTH 2849 50 51 52 #define SET_PTL0_ADDRESS_ARCH(x) /**< To be removed as situation permits. */53 54 #define PPN_SHIFT 1255 56 #define VRN_SHIFT 6157 #define VRN_MASK (7LL << VRN_SHIFT)58 59 #ifdef __ASM__60 #define VRN_KERNEL 761 #else62 #define VRN_KERNEL 7LL63 #endif64 65 #define REGION_REGISTERS 866 67 #define KA2PA(x) ((__address) (x-(VRN_KERNEL<<VRN_SHIFT)))68 #define PA2KA(x) ((__address) (x+(VRN_KERNEL<<VRN_SHIFT)))69 70 71 #define VHPT_WIDTH 20 /* 1M */72 #define VHPT_SIZE (1 << VHPT_WIDTH)73 #define VHPT_BASE 0 /* Must be aligned to VHPT_SIZE */74 75 #define PTA_BASE_SHIFT 1576 77 /** Memory Attributes. */78 #define MA_WRITEBACK 0x079 #define MA_UNCACHEABLE 0x480 81 /** Privilege Levels. Only the most and the least privileged ones are ever used. */82 #define PL_KERNEL 0x083 #define PL_USER 0x384 85 /* Access Rigths. Only certain combinations are used by the kernel. */86 #define AR_READ 0x087 #define AR_EXECUTE 0x188 #define AR_WRITE 0x289 90 91 #define VA_REGION_INDEX 6192 93 #define VA_REGION(va) (va>>VA_REGION_INDEX)94 95 #ifndef __ASM__96 86 97 87 struct vhpt_tag_info { … … 156 146 } vhpt_entry_t; 157 147 158 typedef vhpt_entry_t tlb_entry_t;159 160 148 struct region_register_map { 161 149 unsigned ve : 1; … … 231 219 __u64 ret; 232 220 ASSERT(i < REGION_REGISTERS); 233 i=i<<VRN_SHIFT; 234 __asm__ volatile ("mov %0 = rr[%1]\n" : "=r" (ret) : "r" (i)); 235 236 return ret; 237 } 238 221 __asm__ volatile ("mov %0 = rr[%1]\n" : "=r" (ret) : "r" (i << VRN_SHIFT)); 222 return ret; 223 } 239 224 240 225 /** Write Region Register. … … 246 231 { 247 232 ASSERT(i < REGION_REGISTERS); 248 i=i<<VRN_SHIFT;249 233 __asm__ volatile ( 250 "mov rr[%0] = %1;;\n" 251 : 252 : "r" (i), "r" (v)); 234 "mov rr[%0] = %1\n" 235 : 236 : "r" (i << VRN_SHIFT), "r" (v) 237 ); 253 238 } 254 239 … … 281 266 extern void vhpt_set_record(vhpt_entry_t *v, __address page, asid_t asid, __address frame, int flags); 282 267 283 284 285 268 #endif 286 269 287 270 #endif 288 289
Note:
See TracChangeset
for help on using the changeset viewer.