mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
sparc64: Do not clobber %g2 in xcall_fetch_glob_regs().
[ Upstream commit a5a737e090 ]
%g2 is meant to hold the CPUID number throughout this routine, since
at the very beginning, and at the very end, we use %g2 to calculate
indexes into per-cpu arrays.
However we erroneously clobber it in order to hold the %cwp register
value mid-stream.
Fix this code to use %g3 for the %cwp read and related calulcations
instead.
Reported-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
6f6f21ecee
commit
1c1cb5756a
@@ -268,4 +268,4 @@ static int __init sunfire_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
subsys_initcall(sunfire_init);
|
||||
fs_initcall(sunfire_init);
|
||||
|
||||
@@ -495,11 +495,11 @@ xcall_fetch_glob_regs:
|
||||
stx %o7, [%g1 + GR_SNAP_O7]
|
||||
stx %i7, [%g1 + GR_SNAP_I7]
|
||||
/* Don't try this at home kids... */
|
||||
rdpr %cwp, %g2
|
||||
sub %g2, 1, %g7
|
||||
rdpr %cwp, %g3
|
||||
sub %g3, 1, %g7
|
||||
wrpr %g7, %cwp
|
||||
mov %i7, %g7
|
||||
wrpr %g2, %cwp
|
||||
wrpr %g3, %cwp
|
||||
stx %g7, [%g1 + GR_SNAP_RPC]
|
||||
sethi %hi(trap_block), %g7
|
||||
or %g7, %lo(trap_block), %g7
|
||||
|
||||
Reference in New Issue
Block a user