Changeset 58775d30 in mainline for kernel/arch/sparc64/src/trap/sun4u/trap_table.S
- Timestamp:
- 2015-03-16T16:07:21Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2003739
- Parents:
- 6069061 (diff), 795e2bf (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/trap/sun4u/trap_table.S
r6069061 r58775d30 63 63 instruction_access_exception_tl0: 64 64 wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate 65 PREEMPTIBLE_HANDLER instruction_access_exception 65 mov TT_INSTRUCTION_ACCESS_EXCEPTION, %g2 66 clr %g5 67 PREEMPTIBLE_HANDLER exc_dispatch 66 68 67 69 /* TT = 0x0a, TL = 0, instruction_access_error */ … … 69 71 .global instruction_access_error_tl0 70 72 instruction_access_error_tl0: 71 PREEMPTIBLE_HANDLER instruction_access_error 73 mov TT_INSTRUCTION_ACCESS_ERROR, %g2 74 clr %g5 75 PREEMPTIBLE_HANDLER exc_dispatch 72 76 73 77 /* TT = 0x10, TL = 0, illegal_instruction */ … … 75 79 .global illegal_instruction_tl0 76 80 illegal_instruction_tl0: 77 PREEMPTIBLE_HANDLER illegal_instruction 81 mov TT_ILLEGAL_INSTRUCTION, %g2 82 clr %g5 83 PREEMPTIBLE_HANDLER exc_dispatch 78 84 79 85 /* TT = 0x11, TL = 0, privileged_opcode */ … … 81 87 .global privileged_opcode_tl0 82 88 privileged_opcode_tl0: 83 PREEMPTIBLE_HANDLER privileged_opcode 89 mov TT_PRIVILEGED_OPCODE, %g2 90 clr %g5 91 PREEMPTIBLE_HANDLER exc_dispatch 84 92 85 93 /* TT = 0x12, TL = 0, unimplemented_LDD */ … … 87 95 .global unimplemented_LDD_tl0 88 96 unimplemented_LDD_tl0: 89 PREEMPTIBLE_HANDLER unimplemented_LDD 97 mov TT_UNIMPLEMENTED_LDD, %g2 98 clr %g5 99 PREEMPTIBLE_HANDLER exc_dispatch 90 100 91 101 /* TT = 0x13, TL = 0, unimplemented_STD */ … … 93 103 .global unimplemented_STD_tl0 94 104 unimplemented_STD_tl0: 95 PREEMPTIBLE_HANDLER unimplemented_STD 105 mov TT_UNIMPLEMENTED_STD, %g2 106 clr %g5 107 PREEMPTIBLE_HANDLER exc_dispatch 96 108 97 109 /* TT = 0x20, TL = 0, fb_disabled handler */ … … 99 111 .global fb_disabled_tl0 100 112 fp_disabled_tl0: 101 PREEMPTIBLE_HANDLER fp_disabled 113 mov TT_FP_DISABLED, %g2 114 clr %g5 115 PREEMPTIBLE_HANDLER exc_dispatch 102 116 103 117 /* TT = 0x21, TL = 0, fb_exception_ieee_754 handler */ … … 105 119 .global fb_exception_ieee_754_tl0 106 120 fp_exception_ieee_754_tl0: 107 PREEMPTIBLE_HANDLER fp_exception_ieee_754 121 mov TT_FP_EXCEPTION_IEEE_754, %g2 122 clr %g5 123 PREEMPTIBLE_HANDLER exc_dispatch 108 124 109 125 /* TT = 0x22, TL = 0, fb_exception_other handler */ … … 111 127 .global fb_exception_other_tl0 112 128 fp_exception_other_tl0: 113 PREEMPTIBLE_HANDLER fp_exception_other 129 mov TT_FP_EXCEPTION_OTHER, %g2 130 clr %g5 131 PREEMPTIBLE_HANDLER exc_dispatch 114 132 115 133 /* TT = 0x23, TL = 0, tag_overflow */ … … 117 135 .global tag_overflow_tl0 118 136 tag_overflow_tl0: 119 PREEMPTIBLE_HANDLER tag_overflow 137 mov TT_TAG_OVERFLOW, %g2 138 clr %g5 139 PREEMPTIBLE_HANDLER exc_dispatch 120 140 121 141 /* TT = 0x24, TL = 0, clean_window handler */ … … 129 149 .global division_by_zero_tl0 130 150 division_by_zero_tl0: 131 PREEMPTIBLE_HANDLER division_by_zero 151 mov TT_DIVISION_BY_ZERO, %g2 152 clr %g5 153 PREEMPTIBLE_HANDLER exc_dispatch 132 154 133 155 /* TT = 0x30, TL = 0, data_access_exception */ … … 136 158 data_access_exception_tl0: 137 159 wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate 138 PREEMPTIBLE_HANDLER data_access_exception 160 mov TT_DATA_ACCESS_EXCEPTION, %g2 161 clr %g5 162 PREEMPTIBLE_HANDLER exc_dispatch 139 163 140 164 /* TT = 0x32, TL = 0, data_access_error */ … … 142 166 .global data_access_error_tl0 143 167 data_access_error_tl0: 144 PREEMPTIBLE_HANDLER data_access_error 168 mov TT_DATA_ACCESS_ERROR, %g2 169 clr %g5 170 PREEMPTIBLE_HANDLER exc_dispatch 145 171 146 172 /* TT = 0x34, TL = 0, mem_address_not_aligned */ … … 148 174 .global mem_address_not_aligned_tl0 149 175 mem_address_not_aligned_tl0: 150 PREEMPTIBLE_HANDLER mem_address_not_aligned 176 mov TT_MEM_ADDRESS_NOT_ALIGNED, %g2 177 clr %g5 178 PREEMPTIBLE_HANDLER exc_dispatch 151 179 152 180 /* TT = 0x35, TL = 0, LDDF_mem_address_not_aligned */ … … 154 182 .global LDDF_mem_address_not_aligned_tl0 155 183 LDDF_mem_address_not_aligned_tl0: 156 PREEMPTIBLE_HANDLER LDDF_mem_address_not_aligned 184 mov TT_LDDF_MEM_ADDRESS_NOT_ALIGNED, %g2 185 clr %g5 186 PREEMPTIBLE_HANDLER exc_dispatch 157 187 158 188 /* TT = 0x36, TL = 0, STDF_mem_address_not_aligned */ … … 160 190 .global STDF_mem_address_not_aligned_tl0 161 191 STDF_mem_address_not_aligned_tl0: 162 PREEMPTIBLE_HANDLER STDF_mem_address_not_aligned 192 mov TT_STDF_MEM_ADDRESS_NOT_ALIGNED, %g2 193 clr %g5 194 PREEMPTIBLE_HANDLER exc_dispatch 163 195 164 196 /* TT = 0x37, TL = 0, privileged_action */ … … 166 198 .global privileged_action_tl0 167 199 privileged_action_tl0: 168 PREEMPTIBLE_HANDLER privileged_action 200 mov TT_PRIVILEGED_ACTION, %g2 201 clr %g5 202 PREEMPTIBLE_HANDLER exc_dispatch 169 203 170 204 /* TT = 0x38, TL = 0, LDQF_mem_address_not_aligned */ … … 172 206 .global LDQF_mem_address_not_aligned_tl0 173 207 LDQF_mem_address_not_aligned_tl0: 174 PREEMPTIBLE_HANDLER LDQF_mem_address_not_aligned 208 mov TT_LDQF_MEM_ADDRESS_NOT_ALIGNED, %g2 209 clr %g5 210 PREEMPTIBLE_HANDLER exc_dispatch 175 211 176 212 /* TT = 0x39, TL = 0, STQF_mem_address_not_aligned */ … … 178 214 .global STQF_mem_address_not_aligned_tl0 179 215 STQF_mem_address_not_aligned_tl0: 180 PREEMPTIBLE_HANDLER STQF_mem_address_not_aligned 216 mov TT_STQF_MEM_ADDRESS_NOT_ALIGNED, %g2 217 clr %g5 218 PREEMPTIBLE_HANDLER exc_dispatch 181 219 182 220 /* TT = 0x41, TL = 0, interrupt_level_1 handler */ … … 184 222 .global interrupt_level_1_handler_tl0 185 223 interrupt_level_1_handler_tl0: 186 INTERRUPT_LEVEL_N_HANDLER 1 224 mov TT_INTERRUPT_LEVEL_1, %g2 225 clr %g5 226 PREEMPTIBLE_HANDLER exc_dispatch 187 227 188 228 /* TT = 0x42, TL = 0, interrupt_level_2 handler */ … … 190 230 .global interrupt_level_2_handler_tl0 191 231 interrupt_level_2_handler_tl0: 192 INTERRUPT_LEVEL_N_HANDLER 2 232 mov TT_INTERRUPT_LEVEL_2, %g2 233 clr %g5 234 PREEMPTIBLE_HANDLER exc_dispatch 193 235 194 236 /* TT = 0x43, TL = 0, interrupt_level_3 handler */ … … 196 238 .global interrupt_level_3_handler_tl0 197 239 interrupt_level_3_handler_tl0: 198 INTERRUPT_LEVEL_N_HANDLER 3 240 mov TT_INTERRUPT_LEVEL_3, %g2 241 clr %g5 242 PREEMPTIBLE_HANDLER exc_dispatch 199 243 200 244 /* TT = 0x44, TL = 0, interrupt_level_4 handler */ … … 202 246 .global interrupt_level_4_handler_tl0 203 247 interrupt_level_4_handler_tl0: 204 INTERRUPT_LEVEL_N_HANDLER 4 248 mov TT_INTERRUPT_LEVEL_4, %g2 249 clr %g5 250 PREEMPTIBLE_HANDLER exc_dispatch 205 251 206 252 /* TT = 0x45, TL = 0, interrupt_level_5 handler */ … … 208 254 .global interrupt_level_5_handler_tl0 209 255 interrupt_level_5_handler_tl0: 210 INTERRUPT_LEVEL_N_HANDLER 5 256 mov TT_INTERRUPT_LEVEL_5, %g2 257 clr %g5 258 PREEMPTIBLE_HANDLER exc_dispatch 211 259 212 260 /* TT = 0x46, TL = 0, interrupt_level_6 handler */ … … 214 262 .global interrupt_level_6_handler_tl0 215 263 interrupt_level_6_handler_tl0: 216 INTERRUPT_LEVEL_N_HANDLER 6 264 mov TT_INTERRUPT_LEVEL_6, %g2 265 clr %g5 266 PREEMPTIBLE_HANDLER exc_dispatch 217 267 218 268 /* TT = 0x47, TL = 0, interrupt_level_7 handler */ … … 220 270 .global interrupt_level_7_handler_tl0 221 271 interrupt_level_7_handler_tl0: 222 INTERRUPT_LEVEL_N_HANDLER 7 272 mov TT_INTERRUPT_LEVEL_7, %g2 273 clr %g5 274 PREEMPTIBLE_HANDLER exc_dispatch 223 275 224 276 /* TT = 0x48, TL = 0, interrupt_level_8 handler */ … … 226 278 .global interrupt_level_8_handler_tl0 227 279 interrupt_level_8_handler_tl0: 228 INTERRUPT_LEVEL_N_HANDLER 8 280 mov TT_INTERRUPT_LEVEL_8, %g2 281 clr %g5 282 PREEMPTIBLE_HANDLER exc_dispatch 229 283 230 284 /* TT = 0x49, TL = 0, interrupt_level_9 handler */ … … 232 286 .global interrupt_level_9_handler_tl0 233 287 interrupt_level_9_handler_tl0: 234 INTERRUPT_LEVEL_N_HANDLER 9 288 mov TT_INTERRUPT_LEVEL_9, %g2 289 clr %g5 290 PREEMPTIBLE_HANDLER exc_dispatch 235 291 236 292 /* TT = 0x4a, TL = 0, interrupt_level_10 handler */ … … 238 294 .global interrupt_level_10_handler_tl0 239 295 interrupt_level_10_handler_tl0: 240 INTERRUPT_LEVEL_N_HANDLER 10 296 mov TT_INTERRUPT_LEVEL_10, %g2 297 clr %g5 298 PREEMPTIBLE_HANDLER exc_dispatch 241 299 242 300 /* TT = 0x4b, TL = 0, interrupt_level_11 handler */ … … 244 302 .global interrupt_level_11_handler_tl0 245 303 interrupt_level_11_handler_tl0: 246 INTERRUPT_LEVEL_N_HANDLER 11 304 mov TT_INTERRUPT_LEVEL_11, %g2 305 clr %g5 306 PREEMPTIBLE_HANDLER exc_dispatch 247 307 248 308 /* TT = 0x4c, TL = 0, interrupt_level_12 handler */ … … 250 310 .global interrupt_level_12_handler_tl0 251 311 interrupt_level_12_handler_tl0: 252 INTERRUPT_LEVEL_N_HANDLER 12 312 mov TT_INTERRUPT_LEVEL_12, %g2 313 clr %g5 314 PREEMPTIBLE_HANDLER exc_dispatch 253 315 254 316 /* TT = 0x4d, TL = 0, interrupt_level_13 handler */ … … 256 318 .global interrupt_level_13_handler_tl0 257 319 interrupt_level_13_handler_tl0: 258 INTERRUPT_LEVEL_N_HANDLER 13 320 mov TT_INTERRUPT_LEVEL_13, %g2 321 clr %g5 322 PREEMPTIBLE_HANDLER exc_dispatch 259 323 260 324 /* TT = 0x4e, TL = 0, interrupt_level_14 handler */ … … 262 326 .global interrupt_level_14_handler_tl0 263 327 interrupt_level_14_handler_tl0: 264 INTERRUPT_LEVEL_N_HANDLER 14 328 mov TT_INTERRUPT_LEVEL_14, %g2 329 clr %g5 330 PREEMPTIBLE_HANDLER exc_dispatch 265 331 266 332 /* TT = 0x4f, TL = 0, interrupt_level_15 handler */ … … 268 334 .global interrupt_level_15_handler_tl0 269 335 interrupt_level_15_handler_tl0: 270 INTERRUPT_LEVEL_N_HANDLER 15 336 mov TT_INTERRUPT_LEVEL_15, %g2 337 clr %g5 338 PREEMPTIBLE_HANDLER exc_dispatch 271 339 272 340 /* TT = 0x60, TL = 0, interrupt_vector_trap handler */ … … 274 342 .global interrupt_vector_trap_handler_tl0 275 343 interrupt_vector_trap_handler_tl0: 276 INTERRUPT_VECTOR_TRAP_HANDLER 344 mov TT_INTERRUPT_VECTOR_TRAP, %g2 345 clr %g5 346 PREEMPTIBLE_HANDLER exc_dispatch 277 347 278 348 /* TT = 0x64, TL = 0, fast_instruction_access_MMU_miss */ … … 342 412 .global trap_instruction_\cur\()_tl0 343 413 trap_instruction_\cur\()_tl0: 414 mov \cur, %g2 344 415 ba %xcc, trap_instruction_handler 345 mov \cur, %g2416 clr %g5 346 417 .endr 347 418 … … 356 427 wrpr %g0, 1, %tl 357 428 wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate 358 PREEMPTIBLE_HANDLER instruction_access_exception 429 mov TT_INSTRUCTION_ACCESS_EXCEPTION, %g2 430 clr %g5 431 PREEMPTIBLE_HANDLER exc_dispatch 359 432 360 433 /* TT = 0x0a, TL > 0, instruction_access_error */ … … 363 436 instruction_access_error_tl1: 364 437 wrpr %g0, 1, %tl 365 PREEMPTIBLE_HANDLER instruction_access_error 438 mov TT_INSTRUCTION_ACCESS_ERROR, %g2 439 clr %g5 440 PREEMPTIBLE_HANDLER exc_dispatch 366 441 367 442 /* TT = 0x10, TL > 0, illegal_instruction */ … … 370 445 illegal_instruction_tl1: 371 446 wrpr %g0, 1, %tl 372 PREEMPTIBLE_HANDLER illegal_instruction 447 mov TT_ILLEGAL_INSTRUCTION, %g2 448 clr %g5 449 PREEMPTIBLE_HANDLER exc_dispatch 373 450 374 451 /* TT = 0x24, TL > 0, clean_window handler */ … … 383 460 division_by_zero_tl1: 384 461 wrpr %g0, 1, %tl 385 PREEMPTIBLE_HANDLER division_by_zero 462 mov TT_DIVISION_BY_ZERO, %g2 463 clr %g5 464 PREEMPTIBLE_HANDLER exc_dispatch 386 465 387 466 /* TT = 0x30, TL > 0, data_access_exception */ … … 391 470 wrpr %g0, 1, %tl 392 471 wrpr %g0, PSTATE_AG_BIT | PSTATE_PRIV_BIT, %pstate 393 PREEMPTIBLE_HANDLER data_access_exception 472 mov TT_DATA_ACCESS_EXCEPTION, %g2 473 clr %g5 474 PREEMPTIBLE_HANDLER exc_dispatch 394 475 395 476 /* TT = 0x32, TL > 0, data_access_error */ … … 398 479 data_access_error_tl1: 399 480 wrpr %g0, 1, %tl 400 PREEMPTIBLE_HANDLER data_access_error 481 mov TT_DATA_ACCESS_ERROR, %g2 482 clr %g5 483 PREEMPTIBLE_HANDLER exc_dispatch 401 484 402 485 /* TT = 0x34, TL > 0, mem_address_not_aligned */ … … 405 488 mem_address_not_aligned_tl1: 406 489 wrpr %g0, 1, %tl 407 PREEMPTIBLE_HANDLER mem_address_not_aligned 490 mov TT_MEM_ADDRESS_NOT_ALIGNED, %g2 491 clr %g5 492 PREEMPTIBLE_HANDLER exc_dispatch 408 493 409 494 /* TT = 0x68, TL > 0, fast_data_access_MMU_miss */ … … 470 555 * %g1 Address of function to call if this is not a syscall. 471 556 * %g2 First argument for the function. 557 * %g5 I/DTLB_TAG_ACCESS register if applicable. 472 558 * %g6 Pre-set as kernel stack base if trap from userspace. 473 559 * %g7 Pre-set as address of the userspace window buffer. 474 560 */ 475 561 .macro PREEMPTIBLE_HANDLER_TEMPLATE is_syscall 476 /*477 * ASSERT(%tl == 1)478 */479 rdpr %tl, %g3480 cmp %g3, 1481 be %xcc, 1f482 nop483 ! this is for debugging, if we ever get here it will be easy to find484 0: ba,a %xcc, 0b485 486 1:487 562 .if NOT(\is_syscall) 488 563 rdpr %tstate, %g3 … … 502 577 bnz %xcc, 0f ! ...skip setting of kernel stack and primary context 503 578 nop 504 505 579 .endif 580 506 581 /* 507 582 * Normal window spills will go to the userspace window buffer. … … 516 591 * and the new window's %fp. 517 592 */ 518 save %g6, - PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE, %sp593 save %g6, -ISTATE_SIZE, %sp 519 594 520 595 .if \is_syscall … … 548 623 ba,a %xcc, 1f 549 624 0: 550 save %sp, - PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE, %sp625 save %sp, -ISTATE_SIZE, %sp 551 626 552 627 /* … … 570 645 .else 571 646 ! store the syscall number on the stack as 7th argument 572 stx %g2, [%sp + STACK_ WINDOW_SAVE_AREA_SIZE + STACK_BIAS + STACK_ARG6]647 stx %g2, [%sp + STACK_BIAS + ISTATE_OFFSET_ARG6] 573 648 .endif 574 649 575 650 /* 576 * Save TSTATE, TPC and TNPCaside.651 * Save TSTATE, TPC, TNPC and I/DTLB_TAG_ACCESS aside. 577 652 */ 578 653 rdpr %tstate, %g1 … … 581 656 rd %y, %g4 582 657 583 stx %g1, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TSTATE] 584 stx %g2, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TPC] 585 stx %g3, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC] 658 stx %g1, [%sp + STACK_BIAS + ISTATE_OFFSET_TSTATE] 659 stx %g2, [%sp + STACK_BIAS + ISTATE_OFFSET_TPC] 660 stx %g3, [%sp + STACK_BIAS + ISTATE_OFFSET_TNPC] 661 stx %g5, [%sp + STACK_BIAS + ISTATE_OFFSET_TLB_TAG_ACCESS] 586 662 587 663 /* 588 664 * Save the Y register. 589 * This register is deprecated according to SPARC V9 specification 590 * and is only present for backward compatibility with previous 591 * versions of the SPARC architecture. 592 * Surprisingly, gcc makes use of this register without a notice. 593 */ 594 stx %g4, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_Y] 665 */ 666 stx %g4, [%sp + STACK_BIAS + ISTATE_OFFSET_Y] 595 667 596 668 wrpr %g0, 0, %tl … … 603 675 */ 604 676 call %l0 605 add %sp, PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC, %o1677 add %sp, STACK_BIAS, %o1 606 678 .else 607 679 /* … … 621 693 * Read TSTATE, TPC and TNPC from saved copy. 622 694 */ 623 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TSTATE], %g1624 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TPC], %g2625 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC], %g3695 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_TSTATE], %g1 696 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_TPC], %g2 697 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_TNPC], %g3 626 698 627 699 /* … … 644 716 * Restore Y. 645 717 */ 646 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_Y], %g4718 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_Y], %g4 647 719 wr %g4, %y 648 720 … … 684 756 */ 685 757 mov %sp, %g2 686 stx %i0, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I0]687 stx %i1, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I1]688 stx %i2, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I2]689 stx %i3, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I3]690 stx %i4, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I4]691 stx %i5, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I5]692 stx %i6, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I6]693 stx %i7, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I7]758 stx %i0, [%sp + STACK_BIAS + ISTATE_OFFSET_O0] 759 stx %i1, [%sp + STACK_BIAS + ISTATE_OFFSET_O1] 760 stx %i2, [%sp + STACK_BIAS + ISTATE_OFFSET_O2] 761 stx %i3, [%sp + STACK_BIAS + ISTATE_OFFSET_O3] 762 stx %i4, [%sp + STACK_BIAS + ISTATE_OFFSET_O4] 763 stx %i5, [%sp + STACK_BIAS + ISTATE_OFFSET_O5] 764 stx %i6, [%sp + STACK_BIAS + ISTATE_OFFSET_O6] 765 stx %i7, [%sp + STACK_BIAS + ISTATE_OFFSET_O7] 694 766 wrpr %l0, 0, %cwp 695 767 mov %g2, %sp 696 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I0], %i0697 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I1], %i1698 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I2], %i2699 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I3], %i3700 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I4], %i4701 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I5], %i5702 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I6], %i6703 ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_I7], %i7768 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_O0], %i0 769 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_O1], %i1 770 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_O2], %i2 771 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_O3], %i3 772 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_O4], %i4 773 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_O5], %i5 774 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_O6], %i6 775 ldx [%sp + STACK_BIAS + ISTATE_OFFSET_O7], %i7 704 776 705 777 /* … … 807 879 * If the: 808 880 * 809 * save %g6, - PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE, %sp881 * save %g6, -ISTATE_SIZE, %sp 810 882 * 811 883 * instruction trapped and spilled a register window into the userspace
Note:
See TracChangeset
for help on using the changeset viewer.