Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 91983
b: refs/heads/master
c: 7697daa
h: refs/heads/master
i:
  91981: 729358e
  91979: 27c5e64
  91975: dfad2f2
  91967: 703b5cc
v: v3
  • Loading branch information
David S. Miller committed Apr 24, 2008
1 parent ab572d1 commit 4d6024a
Show file tree
Hide file tree
Showing 10 changed files with 46 additions and 64 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 238468b2ac76020c192a7402c92df5097916bf4a
refs/heads/master: 7697daaa894ca2bc5cd652269c316bcdc3ec441b
35 changes: 17 additions & 18 deletions trunk/arch/sparc64/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ do_fpdis:
ba,pt %xcc, etrap
109: or %g7, %lo(109b), %g7
add %g0, %g0, %g0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

1: TRAP_LOAD_THREAD_REG(%g6, %g1)
ldub [%g6 + TI_FPSAVED], %g5
Expand Down Expand Up @@ -226,7 +226,7 @@ fp_other_bounce:
call do_fpother
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

.globl do_fpother_check_fitos
.align 32
Expand Down Expand Up @@ -489,7 +489,7 @@ utrap_trap: /* %g3=handler,%g4=level */
call bad_trap
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

invoke_utrap:
sllx %g3, 3, %g3
Expand Down Expand Up @@ -607,7 +607,7 @@ __spitfire_cee_trap_continue:
call spitfire_access_error
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

/* This is the trap handler entry point for ECC correctable
* errors. They are corrected, but we listen for the trap
Expand Down Expand Up @@ -686,7 +686,7 @@ __spitfire_data_access_exception_tl1:
call spitfire_data_access_exception_tl1
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

__spitfire_data_access_exception:
rdpr %pstate, %g4
Expand All @@ -705,7 +705,7 @@ __spitfire_data_access_exception:
call spitfire_data_access_exception
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

.globl __spitfire_insn_access_exception
.globl __spitfire_insn_access_exception_tl1
Expand All @@ -725,7 +725,7 @@ __spitfire_insn_access_exception_tl1:
call spitfire_insn_access_exception_tl1
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

__spitfire_insn_access_exception:
rdpr %pstate, %g4
Expand All @@ -743,7 +743,7 @@ __spitfire_insn_access_exception:
call spitfire_insn_access_exception
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

/* These get patched into the trap table at boot time
* once we know we have a cheetah processor.
Expand Down Expand Up @@ -937,7 +937,7 @@ do_dcpe_tl1_fatal:
call cheetah_plus_parity_error
add %sp, PTREGS_OFF, %o1
ba,pt %xcc, rtrap
clr %l6
nop

do_icpe_tl1:
rdpr %tl, %g1 ! Save original trap level
Expand Down Expand Up @@ -979,7 +979,7 @@ do_icpe_tl1_fatal:
call cheetah_plus_parity_error
add %sp, PTREGS_OFF, %o1
ba,pt %xcc, rtrap
clr %l6
nop

dcpe_icpe_tl1_common:
/* Flush D-cache, re-enable D/I caches in DCU and finally
Expand Down Expand Up @@ -1281,7 +1281,7 @@ __do_privact:
call do_privact
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

.globl do_mna
do_mna:
Expand All @@ -1308,7 +1308,7 @@ do_mna:
call mem_address_unaligned
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

.globl do_lddfmna
do_lddfmna:
Expand All @@ -1326,7 +1326,7 @@ do_lddfmna:
call handle_lddfmna
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

.globl do_stdfmna
do_stdfmna:
Expand All @@ -1344,7 +1344,7 @@ do_stdfmna:
call handle_stdfmna
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap
clr %l6
nop

.globl breakpoint_trap
breakpoint_trap:
Expand Down Expand Up @@ -1424,13 +1424,13 @@ sys32_rt_sigreturn:
1: ldx [%curptr + TI_FLAGS], %l5
andcc %l5, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT), %g0
be,pt %icc, rtrap
clr %l6
nop
add %sp, PTREGS_OFF, %o0
call syscall_trace
mov 1, %o1

ba,pt %xcc, rtrap
clr %l6
nop

/* This is how fork() was meant to be done, 8 instruction entry.
*
Expand Down Expand Up @@ -1605,7 +1605,7 @@ ret_sys_call:
bne,pn %icc, linux_syscall_trace2
add %l1, 0x4, %l2 ! npc = npc+4
stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC]
ba,pt %xcc, rtrap_clr_l6
ba,pt %xcc, rtrap
stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC]

1:
Expand All @@ -1616,7 +1616,6 @@ ret_sys_call:
sub %g0, %o0, %o0
or %g3, %g2, %g3
stx %o0, [%sp + PTREGS_OFF + PT_V9_I0]
mov 1, %l6
stx %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE]
bne,pn %icc, linux_syscall_trace2
add %l1, 0x4, %l2 ! npc = npc+4
Expand Down
1 change: 0 additions & 1 deletion trunk/arch/sparc64/kernel/entry.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ extern void timer_interrupt(int irq, struct pt_regs *regs);

extern void do_notify_resume(struct pt_regs *regs,
unsigned long orig_i0,
int restart_syscall,
unsigned long thread_info_flags);

extern asmlinkage void syscall_trace(struct pt_regs *regs,
Expand Down
21 changes: 4 additions & 17 deletions trunk/arch/sparc64/kernel/rtrap.S
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,6 @@
#define RTRAP_PSTATE_IRQOFF (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV)
#define RTRAP_PSTATE_AG_IRQOFF (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV|PSTATE_AG)

/* Register %l6 keeps track of whether we are returning
* from a system call or not. It is cleared if we call
* do_notify_resume, and it must not be otherwise modified
* until we fully commit to returning to userspace.
*/

.text
.align 32
__handle_softirq:
Expand Down Expand Up @@ -56,14 +50,12 @@ __handle_user_windows:
be,pt %xcc, __handle_user_windows_continue
nop
mov %l5, %o1
mov %l6, %o2
add %sp, PTREGS_OFF, %o0
mov %l0, %o3
mov %l0, %o2

call do_notify_resume
wrpr %g0, RTRAP_PSTATE, %pstate
wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate
clr %l6
/* Signal delivery can modify pt_regs tstate, so we must
* reload it.
*/
Expand Down Expand Up @@ -99,14 +91,12 @@ __handle_perfctrs:
be,pt %xcc, __handle_perfctrs_continue
sethi %hi(TSTATE_PEF), %o0
mov %l5, %o1
mov %l6, %o2
add %sp, PTREGS_OFF, %o0
mov %l0, %o3
mov %l0, %o2
call do_notify_resume

wrpr %g0, RTRAP_PSTATE, %pstate
wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate
clr %l6
/* Signal delivery can modify pt_regs tstate, so we must
* reload it.
*/
Expand All @@ -127,13 +117,11 @@ __handle_userfpu:

__handle_signal:
mov %l5, %o1
mov %l6, %o2
add %sp, PTREGS_OFF, %o0
mov %l0, %o3
mov %l0, %o2
call do_notify_resume
wrpr %g0, RTRAP_PSTATE, %pstate
wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate
clr %l6

/* Signal delivery can modify pt_regs tstate, so we must
* reload it.
Expand All @@ -145,9 +133,8 @@ __handle_signal:
andn %l1, %l4, %l1

.align 64
.globl rtrap_irq, rtrap_clr_l6, rtrap, irqsz_patchme, rtrap_xcall
.globl rtrap_irq, rtrap, irqsz_patchme, rtrap_xcall
rtrap_irq:
rtrap_clr_l6: clr %l6
rtrap:
#ifndef CONFIG_SMP
sethi %hi(per_cpu____cpu_data), %l0
Expand Down
3 changes: 1 addition & 2 deletions trunk/arch/sparc64/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -580,8 +580,7 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
}
}

void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, int restart_syscall,
unsigned long thread_info_flags)
void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, unsigned long thread_info_flags)
{
if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK))
do_signal(regs, orig_i0);
Expand Down
16 changes: 8 additions & 8 deletions trunk/arch/sparc64/kernel/sun4v_tlb_miss.S
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ sun4v_iacc:
mov %l5, %o2
call sun4v_insn_access_exception
add %sp, PTREGS_OFF, %o0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

/* Instruction Access Exception, tl1. */
sun4v_iacc_tl1:
Expand All @@ -278,7 +278,7 @@ sun4v_iacc_tl1:
mov %l5, %o2
call sun4v_insn_access_exception_tl1
add %sp, PTREGS_OFF, %o0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

/* Data Access Exception, tl0. */
sun4v_dacc:
Expand All @@ -294,7 +294,7 @@ sun4v_dacc:
mov %l5, %o2
call sun4v_data_access_exception
add %sp, PTREGS_OFF, %o0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

/* Data Access Exception, tl1. */
sun4v_dacc_tl1:
Expand All @@ -310,7 +310,7 @@ sun4v_dacc_tl1:
mov %l5, %o2
call sun4v_data_access_exception_tl1
add %sp, PTREGS_OFF, %o0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

/* Memory Address Unaligned. */
sun4v_mna:
Expand Down Expand Up @@ -344,15 +344,15 @@ sun4v_mna:
mov %l5, %o2
call sun4v_do_mna
add %sp, PTREGS_OFF, %o0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

/* Privileged Action. */
sun4v_privact:
ba,pt %xcc, etrap
rd %pc, %g7
call do_privact
add %sp, PTREGS_OFF, %o0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

/* Unaligned ldd float, tl0. */
sun4v_lddfmna:
Expand All @@ -368,7 +368,7 @@ sun4v_lddfmna:
mov %l5, %o2
call handle_lddfmna
add %sp, PTREGS_OFF, %o0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

/* Unaligned std float, tl0. */
sun4v_stdfmna:
Expand All @@ -384,7 +384,7 @@ sun4v_stdfmna:
mov %l5, %o2
call handle_stdfmna
add %sp, PTREGS_OFF, %o0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

#define BRANCH_ALWAYS 0x10680000
#define NOP 0x01000000
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/sparc64/kernel/tsb.S
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ sparc64_realfault_common:
stx %l5, [%g6 + TI_FAULT_ADDR] ! Save fault address
call do_sparc64_fault ! Call fault handler
add %sp, PTREGS_OFF, %o0 ! Compute pt_regs arg
ba,pt %xcc, rtrap_clr_l6 ! Restore cpu state
ba,pt %xcc, rtrap ! Restore cpu state
nop ! Delay slot (fill me)

winfix_trampoline:
Expand Down
12 changes: 6 additions & 6 deletions trunk/arch/sparc64/kernel/winfixup.S
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ fill_fixup:
rd %pc, %g7
call do_sparc64_fault
add %sp, PTREGS_OFF, %o0
ba,pt %xcc, rtrap_clr_l6
ba,pt %xcc, rtrap
nop

/* Be very careful about usage of the trap globals here.
Expand Down Expand Up @@ -100,7 +100,7 @@ spill_fixup_dax:
rd %pc, %g7
call do_sparc64_fault
add %sp, PTREGS_OFF, %o0
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

winfix_mna:
andn %g3, 0x7f, %g3
Expand All @@ -122,12 +122,12 @@ fill_fixup_mna:
mov %l4, %o2
call sun4v_do_mna
mov %l5, %o1
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap
1: mov %l4, %o1
mov %l5, %o2
call mem_address_unaligned
nop
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap

winfix_dax:
andn %g3, 0x7f, %g3
Expand All @@ -150,7 +150,7 @@ fill_fixup_dax:
add %sp, PTREGS_OFF, %o0
call sun4v_data_access_exception
nop
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap
1: call spitfire_data_access_exception
nop
ba,a,pt %xcc, rtrap_clr_l6
ba,a,pt %xcc, rtrap
Loading

0 comments on commit 4d6024a

Please sign in to comment.