diff options
author | David S. Miller <davem@davemloft.net> | 2006-01-31 21:32:29 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:11:20 -0500 |
commit | 96c6e0d8e2a0eb1338751598be47fa1ffed91704 (patch) | |
tree | 7174ae7f5c052b8312549860c3a978babc1394ce | |
parent | b70c0fa1613c4f69b4a340a0e2bee387560ebbb1 (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.S | 70 | ||||
-rw-r--r-- | arch/sparc64/kernel/smp.c | 7 |
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: | |||
401 | 1: jmpl %g3, %g0 | 401 | 1: jmpl %g3, %g0 |
402 | nop | 402 | nop |
403 | 403 | ||
404 | .globl save_alternate_globals | ||
405 | save_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 | ||
440 | restore_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 |
475 | getcc: | 405 | getcc: |
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 | */ |
942 | extern void prom_world(int); | 942 | extern void prom_world(int); |
943 | extern void save_alternate_globals(unsigned long *); | 943 | |
944 | extern void restore_alternate_globals(unsigned long *); | ||
945 | void smp_penguin_jailcell(int irq, struct pt_regs *regs) | 944 | void 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 | ||