Fix a problem with r222813; given that we may only operate on interrupt
globals here but clobber %y save and restore the latter.
This commit is contained in:
parent
cbebc90de0
commit
3bd5692b1f
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user