Changeset 59e4864 in mainline for kernel/arch/ia64/src/start.S
- Timestamp:
- 2008-11-11T08:00:42Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f3c4a26
- Parents:
- a2a5529
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/start.S
ra2a5529 r59e4864 40 40 #define KERNEL_TRANSLATION_VIO 0x0010000000000671 41 41 #define KERNEL_TRANSLATION_IO 0x00100FFFFC000671 42 #define VIO_OFFSET 0x0002000000000000 43 44 #define IO_OFFSET 0x0001000000000000 42 #define KERNEL_TRANSLATION_FW 0x00100000F0000671 45 43 46 44 … … 53 51 kernel_image_start: 54 52 .auto 53 54 #identifi self(CPU) in OS structures by ID / EID 55 mov r9=cr64 56 mov r10=1 57 movl r12=0xffffffff 58 movl r8=cpu_by_id_eid_list 59 and r8=r8,r12 60 shr r9=r9,16 61 add r8=r8,r9 62 st1 [r8]=r10 63 64 55 65 56 66 mov psr.l = r0 … … 113 123 movl r10 = (KERNEL_TRANSLATION_IO) 114 124 itr.d dtr[r7] = r10 125 126 127 #setup mapping for fimware arrea (also SAPIC) 128 mov r11 = cr.itir ;; 129 movl r10 = ~0xfc;; 130 and r10 =r10 , r11 ;; 131 movl r11 = (FW_PAGE_WIDTH << PS_SHIFT);; 132 or r10 =r10 , r11 ;; 133 mov cr.itir = r10;; 134 135 136 movl r7 = 3 137 movl r8 = (VRN_KERNEL << VRN_SHIFT) | FW_OFFSET 138 mov cr.ifa = r8 139 movl r10 = (KERNEL_TRANSLATION_FW) 140 itr.d dtr[r7] = r10 141 115 142 116 143 … … 143 170 # switch to register bank 1 144 171 bsw.1 172 173 #Am'I BSP or AP 174 movl r20=bsp_started;; 175 ld8 r20=[r20];; 176 cmp.eq p3,p2=r20,r0;; 177 145 178 146 179 # initialize register stack … … 161 194 162 195 /* 163 * Initialize hardcoded_* variables. 196 * Initialize hardcoded_* variables. Do only BSP 164 197 */ 165 movl r14 = _hardcoded_ktext_size166 movl r15 = _hardcoded_kdata_size167 movl r16 = _hardcoded_load_address ;;168 addl r17 = @gprel(hardcoded_ktext_size), gp169 addl r18 = @gprel(hardcoded_kdata_size), gp170 addl r19 = @gprel(hardcoded_load_address), gp171 addl r21 = @gprel(bootinfo), gp198 (p3) movl r14 = _hardcoded_ktext_size 199 (p3) movl r15 = _hardcoded_kdata_size 200 (p3) movl r16 = _hardcoded_load_address ;; 201 (p3) addl r17 = @gprel(hardcoded_ktext_size), gp 202 (p3) addl r18 = @gprel(hardcoded_kdata_size), gp 203 (p3) addl r19 = @gprel(hardcoded_load_address), gp 204 (p3) addl r21 = @gprel(bootinfo), gp 172 205 ;; 173 st8 [r17] = r14174 st8 [r18] = r15175 st8 [r19] = r16176 st8 [r21] = r20206 (p3) st8 [r17] = r14 207 (p3) st8 [r18] = r15 208 (p3) st8 [r19] = r16 209 (p3) st8 [r21] = r20 177 210 178 211 ssm (1 << 19) ;; /* Disable f32 - f127 */ … … 180 213 srlz.d ;; 181 214 215 (p2) movl r18 = main_ap ;; 216 (p2) mov b1 = r18 ;; 217 (p2) br.call.sptk.many b0 = b1 218 219 #Mark that BSP is on 220 mov r20=1;; 221 movl r21=bsp_started;; 222 st8 [r21]=r20;; 223 224 182 225 br.call.sptk.many b0 = arch_pre_main 183 226 … … 189 232 0: 190 233 br 0b 234 .align 4096 235 236 kernel_image_ap_start: 237 .auto 238 #identifi self(CPU) in OS structures by ID / EID 239 mov r9=cr64 240 mov r10=1 241 movl r12=0xffffffff 242 movl r8=cpu_by_id_eid_list 243 and r8=r8,r12 244 shr r9=r9,16 245 add r8=r8,r9 246 st1 [r8]=r10 247 248 #wait for wakeup sychro signal (#3 in cpu_by_id_eid_list) 249 kernel_image_ap_start_loop: 250 movl r11=kernel_image_ap_start_loop 251 and r11=r11,r12 252 mov b1 = r11 253 254 ld1 r20=[r8];; 255 movl r21=3;; 256 cmp.eq p2,p3=r20,r21;; 257 (p3)br.call.sptk.many b0 = b1 258 259 movl r11=kernel_image_start 260 and r11=r11,r12 261 mov b1 = r11 262 br.call.sptk.many b0 = b1 263 264 265 .align 16 266 .global bsp_started 267 bsp_started: 268 .space 8 269 270 271 .align 4096 272 .global cpu_by_id_eid_list 273 cpu_by_id_eid_list: 274 .space 65536 275 276
Note:
See TracChangeset
for help on using the changeset viewer.