[SPARC64]: Kill {save,restore}_alternate_globals()
No longer needed now that we no longer have hard-coded alternate global register usage. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b70c0fa161
commit
96c6e0d8e2
@ -401,76 +401,6 @@ do_ivec_xcall:
|
||||
1: jmpl %g3, %g0
|
||||
nop
|
||||
|
||||
.globl save_alternate_globals
|
||||
save_alternate_globals: /* %o0 = save_area */
|
||||
rdpr %pstate, %o5
|
||||
andn %o5, PSTATE_IE, %o1
|
||||
wrpr %o1, PSTATE_AG, %pstate
|
||||
stx %g0, [%o0 + 0x00]
|
||||
stx %g1, [%o0 + 0x08]
|
||||
stx %g2, [%o0 + 0x10]
|
||||
stx %g3, [%o0 + 0x18]
|
||||
stx %g4, [%o0 + 0x20]
|
||||
stx %g5, [%o0 + 0x28]
|
||||
stx %g6, [%o0 + 0x30]
|
||||
stx %g7, [%o0 + 0x38]
|
||||
wrpr %o1, PSTATE_IG, %pstate
|
||||
stx %g0, [%o0 + 0x40]
|
||||
stx %g1, [%o0 + 0x48]
|
||||
stx %g2, [%o0 + 0x50]
|
||||
stx %g3, [%o0 + 0x58]
|
||||
stx %g4, [%o0 + 0x60]
|
||||
stx %g5, [%o0 + 0x68]
|
||||
stx %g6, [%o0 + 0x70]
|
||||
stx %g7, [%o0 + 0x78]
|
||||
wrpr %o1, PSTATE_MG, %pstate
|
||||
stx %g0, [%o0 + 0x80]
|
||||
stx %g1, [%o0 + 0x88]
|
||||
stx %g2, [%o0 + 0x90]
|
||||
stx %g3, [%o0 + 0x98]
|
||||
stx %g4, [%o0 + 0xa0]
|
||||
stx %g5, [%o0 + 0xa8]
|
||||
stx %g6, [%o0 + 0xb0]
|
||||
stx %g7, [%o0 + 0xb8]
|
||||
wrpr %o5, 0x0, %pstate
|
||||
retl
|
||||
nop
|
||||
|
||||
.globl restore_alternate_globals
|
||||
restore_alternate_globals: /* %o0 = save_area */
|
||||
rdpr %pstate, %o5
|
||||
andn %o5, PSTATE_IE, %o1
|
||||
wrpr %o1, PSTATE_AG, %pstate
|
||||
ldx [%o0 + 0x00], %g0
|
||||
ldx [%o0 + 0x08], %g1
|
||||
ldx [%o0 + 0x10], %g2
|
||||
ldx [%o0 + 0x18], %g3
|
||||
ldx [%o0 + 0x20], %g4
|
||||
ldx [%o0 + 0x28], %g5
|
||||
ldx [%o0 + 0x30], %g6
|
||||
ldx [%o0 + 0x38], %g7
|
||||
wrpr %o1, PSTATE_IG, %pstate
|
||||
ldx [%o0 + 0x40], %g0
|
||||
ldx [%o0 + 0x48], %g1
|
||||
ldx [%o0 + 0x50], %g2
|
||||
ldx [%o0 + 0x58], %g3
|
||||
ldx [%o0 + 0x60], %g4
|
||||
ldx [%o0 + 0x68], %g5
|
||||
ldx [%o0 + 0x70], %g6
|
||||
ldx [%o0 + 0x78], %g7
|
||||
wrpr %o1, PSTATE_MG, %pstate
|
||||
ldx [%o0 + 0x80], %g0
|
||||
ldx [%o0 + 0x88], %g1
|
||||
ldx [%o0 + 0x90], %g2
|
||||
ldx [%o0 + 0x98], %g3
|
||||
ldx [%o0 + 0xa0], %g4
|
||||
ldx [%o0 + 0xa8], %g5
|
||||
ldx [%o0 + 0xb0], %g6
|
||||
ldx [%o0 + 0xb8], %g7
|
||||
wrpr %o5, 0x0, %pstate
|
||||
retl
|
||||
nop
|
||||
|
||||
.globl getcc, setcc
|
||||
getcc:
|
||||
ldx [%o0 + PT_V9_TSTATE], %o1
|
||||
|
@ -940,24 +940,19 @@ void smp_release(void)
|
||||
* can service tlb flush xcalls...
|
||||
*/
|
||||
extern void prom_world(int);
|
||||
extern void save_alternate_globals(unsigned long *);
|
||||
extern void restore_alternate_globals(unsigned long *);
|
||||
|
||||
void smp_penguin_jailcell(int irq, struct pt_regs *regs)
|
||||
{
|
||||
unsigned long global_save[24];
|
||||
|
||||
clear_softint(1 << irq);
|
||||
|
||||
preempt_disable();
|
||||
|
||||
__asm__ __volatile__("flushw");
|
||||
save_alternate_globals(global_save);
|
||||
prom_world(1);
|
||||
atomic_inc(&smp_capture_registry);
|
||||
membar_storeload_storestore();
|
||||
while (penguins_are_doing_time)
|
||||
rmb();
|
||||
restore_alternate_globals(global_save);
|
||||
atomic_dec(&smp_capture_registry);
|
||||
prom_world(0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user