diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-24 11:37:29 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-24 11:37:29 -0400 |
| commit | e270b51df657011983241ec61a1fc7de186e16cd (patch) | |
| tree | 3397be4cbf31676ca6ebb187903e8cfc2218f223 /arch/sparc64/kernel/entry.S | |
| parent | 8fa82790fb9dfe57aeafc8de6b6a5c1df63efa06 (diff) | |
| parent | 227739bf4c110bbd02d0c0f13b272c32de406e4c (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: (23 commits)
sparc: sunzilog uart order
[SPARC64]: Detect trap frames in stack backtraces.
[SPARC64]: %l6 trap return handling no longer necessary.
[SPARC64]: Use trap type stored in pt_regs to handle syscall restart.
[SPARC64]: Store magic cookie and trap type in pt_regs.
[SPARC64]: PROM debug console can be CON_ANYTIME.
sparc64: cleanup after SunOS/Solaris binary emulation removal
sparc: cleanup after SunOS binary emulation removal
[SPARC64]: Add NUMA support.
[SPARC64]: Allocate TSB node-local.
[SPARC64]: NUMA device infrastructure.
[SPARC64]: Kill pci_iommu_table_init() declaration.
[SPARC64]: Once we have the boot cmdline, call parse_early_param()
[SPARC64]: Remove unused asm-sparc64/numnodes.h
[SPARC64]: Decrease SECTION_SIZE_BITS to 30.
[SPARC64]: Initialize MDESC earlier and use lmb_alloc()
[SPARC64]: Use lmb_alloc() for PROM device tree.
[SPARC64]: Call real_setup_per_cpu_areas() earlier and use lmb_alloc().
[SPARC64]: Fully use LMB information in bootmem_init().
[SPARC64]: Start using LMB information in bootmem_init().
...
Diffstat (limited to 'arch/sparc64/kernel/entry.S')
| -rw-r--r-- | arch/sparc64/kernel/entry.S | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S index fb43c76bdc26..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 | * |
| @@ -1559,7 +1559,7 @@ linux_sparc_syscall32: | |||
| 1559 | 1559 | ||
| 1560 | /* Linux native system calls enter here... */ | 1560 | /* Linux native system calls enter here... */ |
| 1561 | .align 32 | 1561 | .align 32 |
| 1562 | .globl linux_sparc_syscall, ret_sys_call | 1562 | .globl linux_sparc_syscall |
| 1563 | linux_sparc_syscall: | 1563 | linux_sparc_syscall: |
| 1564 | /* Direct access to user regs, much faster. */ | 1564 | /* Direct access to user regs, much faster. */ |
| 1565 | cmp %g1, NR_SYSCALLS ! IEU1 Group | 1565 | cmp %g1, NR_SYSCALLS ! IEU1 Group |
| @@ -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 |
