diff options
Diffstat (limited to 'arch/sparc64/kernel/entry.S')
-rw-r--r-- | arch/sparc64/kernel/entry.S | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S index f54cd2dd55dc..fd06e937ae1e 100644 --- a/arch/sparc64/kernel/entry.S +++ b/arch/sparc64/kernel/entry.S | |||
@@ -47,7 +47,7 @@ do_fpdis: | |||
47 | ba,pt %xcc, etrap | 47 | ba,pt %xcc, etrap |
48 | 109: or %g7, %lo(109b), %g7 | 48 | 109: or %g7, %lo(109b), %g7 |
49 | add %g0, %g0, %g0 | 49 | add %g0, %g0, %g0 |
50 | ba,a,pt %xcc, rtrap_clr_l6 | 50 | ba,a,pt %xcc, rtrap |
51 | 51 | ||
52 | 1: TRAP_LOAD_THREAD_REG(%g6, %g1) | 52 | 1: TRAP_LOAD_THREAD_REG(%g6, %g1) |
53 | ldub [%g6 + TI_FPSAVED], %g5 | 53 | ldub [%g6 + TI_FPSAVED], %g5 |
@@ -226,7 +226,7 @@ fp_other_bounce: | |||
226 | call do_fpother | 226 | call do_fpother |
227 | add %sp, PTREGS_OFF, %o0 | 227 | add %sp, PTREGS_OFF, %o0 |
228 | ba,pt %xcc, rtrap | 228 | ba,pt %xcc, rtrap |
229 | clr %l6 | 229 | nop |
230 | 230 | ||
231 | .globl do_fpother_check_fitos | 231 | .globl do_fpother_check_fitos |
232 | .align 32 | 232 | .align 32 |
@@ -489,7 +489,7 @@ utrap_trap: /* %g3=handler,%g4=level */ | |||
489 | call bad_trap | 489 | call bad_trap |
490 | add %sp, PTREGS_OFF, %o0 | 490 | add %sp, PTREGS_OFF, %o0 |
491 | ba,pt %xcc, rtrap | 491 | ba,pt %xcc, rtrap |
492 | clr %l6 | 492 | nop |
493 | 493 | ||
494 | invoke_utrap: | 494 | invoke_utrap: |
495 | sllx %g3, 3, %g3 | 495 | sllx %g3, 3, %g3 |
@@ -607,7 +607,7 @@ __spitfire_cee_trap_continue: | |||
607 | call spitfire_access_error | 607 | call spitfire_access_error |
608 | add %sp, PTREGS_OFF, %o0 | 608 | add %sp, PTREGS_OFF, %o0 |
609 | ba,pt %xcc, rtrap | 609 | ba,pt %xcc, rtrap |
610 | clr %l6 | 610 | nop |
611 | 611 | ||
612 | /* This is the trap handler entry point for ECC correctable | 612 | /* This is the trap handler entry point for ECC correctable |
613 | * errors. They are corrected, but we listen for the trap | 613 | * errors. They are corrected, but we listen for the trap |
@@ -686,7 +686,7 @@ __spitfire_data_access_exception_tl1: | |||
686 | call spitfire_data_access_exception_tl1 | 686 | call spitfire_data_access_exception_tl1 |
687 | add %sp, PTREGS_OFF, %o0 | 687 | add %sp, PTREGS_OFF, %o0 |
688 | ba,pt %xcc, rtrap | 688 | ba,pt %xcc, rtrap |
689 | clr %l6 | 689 | nop |
690 | 690 | ||
691 | __spitfire_data_access_exception: | 691 | __spitfire_data_access_exception: |
692 | rdpr %pstate, %g4 | 692 | rdpr %pstate, %g4 |
@@ -705,7 +705,7 @@ __spitfire_data_access_exception: | |||
705 | call spitfire_data_access_exception | 705 | call spitfire_data_access_exception |
706 | add %sp, PTREGS_OFF, %o0 | 706 | add %sp, PTREGS_OFF, %o0 |
707 | ba,pt %xcc, rtrap | 707 | ba,pt %xcc, rtrap |
708 | clr %l6 | 708 | nop |
709 | 709 | ||
710 | .globl __spitfire_insn_access_exception | 710 | .globl __spitfire_insn_access_exception |
711 | .globl __spitfire_insn_access_exception_tl1 | 711 | .globl __spitfire_insn_access_exception_tl1 |
@@ -725,7 +725,7 @@ __spitfire_insn_access_exception_tl1: | |||
725 | call spitfire_insn_access_exception_tl1 | 725 | call spitfire_insn_access_exception_tl1 |
726 | add %sp, PTREGS_OFF, %o0 | 726 | add %sp, PTREGS_OFF, %o0 |
727 | ba,pt %xcc, rtrap | 727 | ba,pt %xcc, rtrap |
728 | clr %l6 | 728 | nop |
729 | 729 | ||
730 | __spitfire_insn_access_exception: | 730 | __spitfire_insn_access_exception: |
731 | rdpr %pstate, %g4 | 731 | rdpr %pstate, %g4 |
@@ -743,7 +743,7 @@ __spitfire_insn_access_exception: | |||
743 | call spitfire_insn_access_exception | 743 | call spitfire_insn_access_exception |
744 | add %sp, PTREGS_OFF, %o0 | 744 | add %sp, PTREGS_OFF, %o0 |
745 | ba,pt %xcc, rtrap | 745 | ba,pt %xcc, rtrap |
746 | clr %l6 | 746 | nop |
747 | 747 | ||
748 | /* These get patched into the trap table at boot time | 748 | /* These get patched into the trap table at boot time |
749 | * once we know we have a cheetah processor. | 749 | * once we know we have a cheetah processor. |
@@ -937,7 +937,7 @@ do_dcpe_tl1_fatal: | |||
937 | call cheetah_plus_parity_error | 937 | call cheetah_plus_parity_error |
938 | add %sp, PTREGS_OFF, %o1 | 938 | add %sp, PTREGS_OFF, %o1 |
939 | ba,pt %xcc, rtrap | 939 | ba,pt %xcc, rtrap |
940 | clr %l6 | 940 | nop |
941 | 941 | ||
942 | do_icpe_tl1: | 942 | do_icpe_tl1: |
943 | rdpr %tl, %g1 ! Save original trap level | 943 | rdpr %tl, %g1 ! Save original trap level |
@@ -979,7 +979,7 @@ do_icpe_tl1_fatal: | |||
979 | call cheetah_plus_parity_error | 979 | call cheetah_plus_parity_error |
980 | add %sp, PTREGS_OFF, %o1 | 980 | add %sp, PTREGS_OFF, %o1 |
981 | ba,pt %xcc, rtrap | 981 | ba,pt %xcc, rtrap |
982 | clr %l6 | 982 | nop |
983 | 983 | ||
984 | dcpe_icpe_tl1_common: | 984 | dcpe_icpe_tl1_common: |
985 | /* Flush D-cache, re-enable D/I caches in DCU and finally | 985 | /* Flush D-cache, re-enable D/I caches in DCU and finally |
@@ -1281,7 +1281,7 @@ __do_privact: | |||
1281 | call do_privact | 1281 | call do_privact |
1282 | add %sp, PTREGS_OFF, %o0 | 1282 | add %sp, PTREGS_OFF, %o0 |
1283 | ba,pt %xcc, rtrap | 1283 | ba,pt %xcc, rtrap |
1284 | clr %l6 | 1284 | nop |
1285 | 1285 | ||
1286 | .globl do_mna | 1286 | .globl do_mna |
1287 | do_mna: | 1287 | do_mna: |
@@ -1308,7 +1308,7 @@ do_mna: | |||
1308 | call mem_address_unaligned | 1308 | call mem_address_unaligned |
1309 | add %sp, PTREGS_OFF, %o0 | 1309 | add %sp, PTREGS_OFF, %o0 |
1310 | ba,pt %xcc, rtrap | 1310 | ba,pt %xcc, rtrap |
1311 | clr %l6 | 1311 | nop |
1312 | 1312 | ||
1313 | .globl do_lddfmna | 1313 | .globl do_lddfmna |
1314 | do_lddfmna: | 1314 | do_lddfmna: |
@@ -1326,7 +1326,7 @@ do_lddfmna: | |||
1326 | call handle_lddfmna | 1326 | call handle_lddfmna |
1327 | add %sp, PTREGS_OFF, %o0 | 1327 | add %sp, PTREGS_OFF, %o0 |
1328 | ba,pt %xcc, rtrap | 1328 | ba,pt %xcc, rtrap |
1329 | clr %l6 | 1329 | nop |
1330 | 1330 | ||
1331 | .globl do_stdfmna | 1331 | .globl do_stdfmna |
1332 | do_stdfmna: | 1332 | do_stdfmna: |
@@ -1344,7 +1344,7 @@ do_stdfmna: | |||
1344 | call handle_stdfmna | 1344 | call handle_stdfmna |
1345 | add %sp, PTREGS_OFF, %o0 | 1345 | add %sp, PTREGS_OFF, %o0 |
1346 | ba,pt %xcc, rtrap | 1346 | ba,pt %xcc, rtrap |
1347 | clr %l6 | 1347 | nop |
1348 | 1348 | ||
1349 | .globl breakpoint_trap | 1349 | .globl breakpoint_trap |
1350 | breakpoint_trap: | 1350 | breakpoint_trap: |
@@ -1424,13 +1424,13 @@ sys32_rt_sigreturn: | |||
1424 | 1: ldx [%curptr + TI_FLAGS], %l5 | 1424 | 1: ldx [%curptr + TI_FLAGS], %l5 |
1425 | andcc %l5, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT), %g0 | 1425 | andcc %l5, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT), %g0 |
1426 | be,pt %icc, rtrap | 1426 | be,pt %icc, rtrap |
1427 | clr %l6 | 1427 | nop |
1428 | add %sp, PTREGS_OFF, %o0 | 1428 | add %sp, PTREGS_OFF, %o0 |
1429 | call syscall_trace | 1429 | call syscall_trace |
1430 | mov 1, %o1 | 1430 | mov 1, %o1 |
1431 | 1431 | ||
1432 | ba,pt %xcc, rtrap | 1432 | ba,pt %xcc, rtrap |
1433 | clr %l6 | 1433 | nop |
1434 | 1434 | ||
1435 | /* This is how fork() was meant to be done, 8 instruction entry. | 1435 | /* This is how fork() was meant to be done, 8 instruction entry. |
1436 | * | 1436 | * |
@@ -1605,7 +1605,7 @@ ret_sys_call: | |||
1605 | bne,pn %icc, linux_syscall_trace2 | 1605 | bne,pn %icc, linux_syscall_trace2 |
1606 | add %l1, 0x4, %l2 ! npc = npc+4 | 1606 | add %l1, 0x4, %l2 ! npc = npc+4 |
1607 | stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC] | 1607 | stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC] |
1608 | ba,pt %xcc, rtrap_clr_l6 | 1608 | ba,pt %xcc, rtrap |
1609 | stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] | 1609 | stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] |
1610 | 1610 | ||
1611 | 1: | 1611 | 1: |
@@ -1616,7 +1616,6 @@ ret_sys_call: | |||
1616 | sub %g0, %o0, %o0 | 1616 | sub %g0, %o0, %o0 |
1617 | or %g3, %g2, %g3 | 1617 | or %g3, %g2, %g3 |
1618 | stx %o0, [%sp + PTREGS_OFF + PT_V9_I0] | 1618 | stx %o0, [%sp + PTREGS_OFF + PT_V9_I0] |
1619 | mov 1, %l6 | ||
1620 | stx %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE] | 1619 | stx %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE] |
1621 | bne,pn %icc, linux_syscall_trace2 | 1620 | bne,pn %icc, linux_syscall_trace2 |
1622 | add %l1, 0x4, %l2 ! npc = npc+4 | 1621 | add %l1, 0x4, %l2 ! npc = npc+4 |