Changeset fd537a0 in mainline
- Timestamp:
- 2006-01-15T18:05:11Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ae10582
- Parents:
- 4be51c8
- Location:
- arch/ia64
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia64/include/mm/frame.h
r4be51c8 rfd537a0 30 30 #define __ia64_FRAME_H__ 31 31 32 #define FRAME_SIZE (16*1024) 32 #define FRAME_WIDTH 14 33 #define FRAME_SIZE (1<<FRAME_WIDTH) 33 34 34 35 extern void frame_arch_init(void); -
arch/ia64/include/mm/page.h
r4be51c8 rfd537a0 34 34 35 35 #define PAGE_SIZE FRAME_SIZE 36 #define PAGE_WIDTH FRAME_WIDTH 36 37 37 38 #define KA2PA(x) ((__address) (x)) … … 48 49 #define HT_SET_NEXT_ARCH(t, s) 49 50 #define HT_SET_RECORD_ARCH(t, page, asid, frame, flags) 51 52 #define REGION_RID_MAIN 0 53 #define REGION_RID_FIRST_INVALID 16 54 #define REGION_REGISTERS 8 55 56 #define VHPT_WIDTH 16 /*64kB*/ 57 #define VHPT_SIZE (1<<VHPT_WIDTH) 58 59 #define VHPT_BASE 0 /* Must be aligned to VHPT_SIZE */ 50 60 51 61 struct VHPT_tag_info … … 87 97 /* But I'm almost sure we nead access to whole word so there are both possibilities*/ 88 98 /* Word 3 */ 89 unsigned long long next :64; 99 unsigned long long next :64; /* This ignored field will be (in my hopes ;-) ) used as pointer in link list of entries with same hash value*/ 90 100 91 101 }__attribute__ ((packed)); … … 108 118 /* But I'm almost sure we nead access to whole word so there are both possibilities*/ 109 119 /* Word 3 */ 110 unsigned long long next :64; 120 unsigned long long next :64; /* This ignored field will be (in my hopes ;-) ) used as pointer in link list of entries with same hash value*/ 111 121 112 122 }__attribute__ ((packed)); … … 120 130 extern void page_arch_init(void); 121 131 132 133 struct region_register_map 134 { 135 unsigned ve : 1; 136 unsigned r0 : 1; 137 unsigned ps : 6; 138 unsigned rid :24; 139 unsigned r1 :32; 140 }__attribute__ ((packed)); 141 142 143 typedef union region_register 144 { 145 struct region_register_map map; 146 unsigned long long word; 147 }region_register; 148 149 struct PTA_register_map 150 { 151 unsigned ve : 1; 152 unsigned r0 : 1; 153 unsigned size : 6; 154 unsigned vf : 1; 155 unsigned r1 : 6; 156 unsigned long long base:49; 157 }__attribute__ ((packed)); 158 159 160 typedef union PTA_register 161 { 162 struct PTA_register_map map; 163 unsigned long long word; 164 }PTA_register; 165 166 122 167 #endif -
arch/ia64/src/mm/page.c
r4be51c8 rfd537a0 33 33 #include <panic.h> 34 34 35 36 static void set_VHPT_environment(void) 37 { 38 /* 39 TODO: 40 */ 41 42 int i; 43 44 /* First set up REGION REGISTER 0 */ 45 46 region_register rr; 47 rr.map.ve=0; /*Disable Walker*/ 48 rr.map.ps=PAGE_WIDTH; 49 rr.map.rid=REGION_RID_MAIN; 50 51 asm 52 ( 53 "mov rr[r0]=%0;;" 54 : 55 :"r"(rr.word) 56 ); 57 58 /* And Invalidate the rest of REGION REGISTERS */ 59 60 for(i=1;i<REGION_REGISTERS;i++) 61 { 62 rr.map.rid=REGION_RID_FIRST_INVALID+i-1; 63 asm 64 ( 65 "mov r8=%1;;" 66 "mov rr[r8]=%0;;" 67 : 68 :"r"(rr.word),"r"(i) 69 :"r8" 70 ); 71 }; 72 73 PTA_register pta; 74 pta.map.ve=0; /*Disable Walker*/ 75 pta.map.vf=1; /*Large entry format*/ 76 pta.map.size=VHPT_WIDTH; 77 pta.map.base=VHPT_BASE; 78 79 80 /*Write PTA*/ 81 asm 82 ( 83 "mov cr8=%0;;" 84 : 85 :"r"(pta.word) 86 ); 87 88 } 89 90 35 91 void page_arch_init(void) 36 92 { 37 93 page_operations = &page_ht_operations; 94 set_VHPT_environment(); 38 95 }
Note:
See TracChangeset
for help on using the changeset viewer.