aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2006-01-31 21:32:29 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:11:20 -0500
commit96c6e0d8e2a0eb1338751598be47fa1ffed91704 (patch)
tree7174ae7f5c052b8312549860c3a978babc1394ce
parentb70c0fa1613c4f69b4a340a0e2bee387560ebbb1 (diff)
[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>
-rw-r--r--arch/sparc64/kernel/entry.S70
-rw-r--r--arch/sparc64/kernel/smp.c7
2 files changed, 1 insertions, 76 deletions
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S
index 906b64ffdb1..ad919f4f4b3 100644
--- a/arch/sparc64/kernel/entry.S
+++ b/arch/sparc64/kernel/entry.S
@@ -401,76 +401,6 @@ do_ivec_xcall:
4011: jmpl %g3, %g0 4011: jmpl %g3, %g0
402 nop 402 nop
403 403
404 .globl save_alternate_globals
405save_alternate_globals: /* %o0 = save_area */
406 rdpr %pstate, %o5
407 andn %o5, PSTATE_IE, %o1
408 wrpr %o1, PSTATE_AG, %pstate
409 stx %g0, [%o0 + 0x00]
410 stx %g1, [%o0 + 0x08]
411 stx %g2, [%o0 + 0x10]
412 stx %g3, [%o0 + 0x18]
413 stx %g4, [%o0 + 0x20]
414 stx %g5, [%o0 + 0x28]
415 stx %g6, [%o0 + 0x30]
416 stx %g7, [%o0 + 0x38]
417 wrpr %o1, PSTATE_IG, %pstate
418 stx %g0, [%o0 + 0x40]
419 stx %g1, [%o0 + 0x48]
420 stx %g2, [%o0 + 0x50]
421 stx %g3, [%o0 + 0x58]
422 stx %g4, [%o0 + 0x60]
423 stx %g5, [%o0 + 0x68]
424 stx %g6, [%o0 + 0x70]
425 stx %g7, [%o0 + 0x78]
426 wrpr %o1, PSTATE_MG, %pstate
427 stx %g0, [%o0 + 0x80]
428 stx %g1, [%o0 + 0x88]
429 stx %g2, [%o0 + 0x90]
430 stx %g3, [%o0 + 0x98]
431 stx %g4, [%o0 + 0xa0]
432 stx %g5, [%o0 + 0xa8]
433 stx %g6, [%o0 + 0xb0]
434 stx %g7, [%o0 + 0xb8]
435 wrpr %o5, 0x0, %pstate
436 retl
437 nop
438
439 .globl restore_alternate_globals
440restore_alternate_globals: /* %o0 = save_area */
441 rdpr %pstate, %o5
442 andn %o5, PSTATE_IE, %o1
443 wrpr %o1, PSTATE_AG, %pstate
444 ldx [%o0 + 0x00], %g0
445 ldx [%o0 + 0x08], %g1
446 ldx [%o0 + 0x10], %g2
447 ldx [%o0 + 0x18], %g3
448 ldx [%o0 + 0x20], %g4
449 ldx [%o0 + 0x28], %g5
450 ldx [%o0 + 0x30], %g6
451 ldx [%o0 + 0x38], %g7
452 wrpr %o1, PSTATE_IG, %pstate
453 ldx [%o0 + 0x40], %g0
454 ldx [%o0 + 0x48], %g1
455 ldx [%o0 + 0x50], %g2
456 ldx [%o0 + 0x58], %g3
457 ldx [%o0 + 0x60], %g4
458 ldx [%o0 + 0x68], %g5
459 ldx [%o0 + 0x70], %g6
460 ldx [%o0 + 0x78], %g7
461 wrpr %o1, PSTATE_MG, %pstate
462 ldx [%o0 + 0x80], %g0
463 ldx [%o0 + 0x88], %g1
464 ldx [%o0 + 0x90], %g2
465 ldx [%o0 + 0x98], %g3
466 ldx [%o0 + 0xa0], %g4
467 ldx [%o0 + 0xa8], %g5
468 ldx [%o0 + 0xb0], %g6
469 ldx [%o0 + 0xb8], %g7
470 wrpr %o5, 0x0, %pstate
471 retl
472 nop
473
474 .globl getcc, setcc 404 .globl getcc, setcc
475getcc: 405getcc:
476 ldx [%o0 + PT_V9_TSTATE], %o1 406 ldx [%o0 + PT_V9_TSTATE], %o1
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index 3c14b549cf9..d030c311cfe 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -940,24 +940,19 @@ void smp_release(void)
940 * can service tlb flush xcalls... 940 * can service tlb flush xcalls...
941 */ 941 */
942extern void prom_world(int); 942extern void prom_world(int);
943extern void save_alternate_globals(unsigned long *); 943
944extern void restore_alternate_globals(unsigned long *);
945void smp_penguin_jailcell(int irq, struct pt_regs *regs) 944void smp_penguin_jailcell(int irq, struct pt_regs *regs)
946{ 945{
947 unsigned long global_save[24];
948
949 clear_softint(1 << irq); 946 clear_softint(1 << irq);
950 947
951 preempt_disable(); 948 preempt_disable();
952 949
953 __asm__ __volatile__("flushw"); 950 __asm__ __volatile__("flushw");
954 save_alternate_globals(global_save);
955 prom_world(1); 951 prom_world(1);
956 atomic_inc(&smp_capture_registry); 952 atomic_inc(&smp_capture_registry);
957 membar_storeload_storestore(); 953 membar_storeload_storestore();
958 while (penguins_are_doing_time) 954 while (penguins_are_doing_time)
959 rmb(); 955 rmb();
960 restore_alternate_globals(global_save);
961 atomic_dec(&smp_capture_registry); 956 atomic_dec(&smp_capture_registry);
962 prom_world(0); 957 prom_world(0);
963 958