Author: marius
Date: Tue Jun  7 17:19:14 2011
New Revision: 222827
URL: http://svn.freebsd.org/changeset/base/222827

Log:
  Fix a problem with r222813; given that we may only operate on interrupt
  globals here but clobber %y save and restore the latter.

Modified:
  head/sys/sparc64/sparc64/mp_exception.S

Modified: head/sys/sparc64/sparc64/mp_exception.S
==============================================================================
--- head/sys/sparc64/sparc64/mp_exception.S     Tue Jun  7 17:01:52 2011        
(r222826)
+++ head/sys/sparc64/sparc64/mp_exception.S     Tue Jun  7 17:19:14 2011        
(r222827)
@@ -38,7 +38,8 @@ __FBSDID("$FreeBSD$");
        .register       %g2, #ignore
        .register       %g3, #ignore
 
-#define        IPI_DONE(r1, r2, r3, r4, r5)                                    
\
+#define        IPI_DONE(r1, r2, r3, r4, r5, r6)                                
\
+       rd      %y, r6 ;                                                \
        lduw    [PCPU(CPUID)], r2 ;                                     \
        mov     _NCPUBITS, r3 ;                                         \
        mov     %g0, %y ;                                               \
@@ -50,6 +51,7 @@ __FBSDID("$FreeBSD$");
        sub     r2, r3, r3 ;                                            \
        mov     1, r4 ;                                                 \
        sllx    r4, r3, r4 ;                                            \
+       wr      r6, %y ;                                                \
        ATOMIC_CLEAR_LONG(r1, r2, r3, r4)
 
 /*
@@ -87,7 +89,7 @@ ENTRY(tl_ipi_spitfire_dcache_page_inval)
 2:     brgz,pt %g2, 1b
         sub    %g2, %g4, %g2
 
-       IPI_DONE(%g5, %g1, %g2, %g3, %g4)
+       IPI_DONE(%g5, %g1, %g2, %g3, %g4, %g6)
        retry
 END(tl_ipi_spitfire_dcache_page_inval)
 
@@ -127,7 +129,7 @@ ENTRY(tl_ipi_spitfire_icache_page_inval)
 2:     brgz,pt %g2, 1b
         sub    %g2, %g4, %g2
 
-       IPI_DONE(%g5, %g1, %g2, %g3, %g4)
+       IPI_DONE(%g5, %g1, %g2, %g3, %g4, %g6)
        retry
 END(tl_ipi_spitfire_icache_page_inval)
 
@@ -158,7 +160,7 @@ ENTRY(tl_ipi_cheetah_dcache_page_inval)
        blt,a,pt %xcc, 1b
         nop
 
-       IPI_DONE(%g5, %g1, %g2, %g3, %g4)
+       IPI_DONE(%g5, %g1, %g2, %g3, %g4, %g6)
        retry
 END(tl_ipi_cheetah_dcache_page_inval)
 
@@ -214,7 +216,7 @@ ENTRY(tl_ipi_tlb_page_demap)
        stxa    %g0, [%g2] ASI_IMMU_DEMAP
        flush   %g3
 
-       IPI_DONE(%g5, %g1, %g2, %g3, %g4)
+       IPI_DONE(%g5, %g1, %g2, %g3, %g4, %g6)
        retry
 END(tl_ipi_tlb_page_demap)
 
@@ -257,7 +259,7 @@ ENTRY(tl_ipi_tlb_range_demap)
        blt,a,pt %xcc, 1b
         nop
 
-       IPI_DONE(%g5, %g1, %g2, %g3, %g4)
+       IPI_DONE(%g5, %g1, %g2, %g3, %g4, %g6)
        retry
 END(tl_ipi_tlb_range_demap)
 
@@ -281,7 +283,7 @@ ENTRY(tl_ipi_tlb_context_demap)
        stxa    %g0, [%g1] ASI_IMMU_DEMAP
        flush   %g3
 
-       IPI_DONE(%g5, %g1, %g2, %g3, %g4)
+       IPI_DONE(%g5, %g1, %g2, %g3, %g4, %g6)
        retry
 END(tl_ipi_tlb_context_demap)
 
@@ -293,7 +295,7 @@ ENTRY(tl_ipi_stick_rd)
        rd      %asr24, %g2
        stx     %g2, [%g1]
 
-       IPI_DONE(%g5, %g1, %g2, %g3, %g4)
+       IPI_DONE(%g5, %g1, %g2, %g3, %g4, %g6)
        retry
 END(tl_ipi_stick_rd)
 
@@ -305,6 +307,6 @@ ENTRY(tl_ipi_tick_rd)
        rd      %tick, %g2
        stx     %g2, [%g1]
 
-       IPI_DONE(%g5, %g1, %g2, %g3, %g4)
+       IPI_DONE(%g5, %g1, %g2, %g3, %g4, %g6)
        retry
 END(tl_ipi_tick_rd)
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to