mirror of https://gitee.com/openkylin/linux.git
sparc64: Set %l4 properly on trap return after handling signals.
If we did some signal processing, we have to reload the pt_regs tstate register because it's value may have changed. In doing so we also have to extract the %pil value contained in there anre load that into %l4. This value is at bit 20 and thus needs to be shifted down before we later write it into the %pil register. Most of the time this is harmless as we are returning to userspace and the %pil is zero for that case. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b3e1eb8e7a
commit
d1f1f98c6d
|
@ -84,8 +84,9 @@ __handle_signal:
|
||||||
ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
|
ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
|
||||||
sethi %hi(0xf << 20), %l4
|
sethi %hi(0xf << 20), %l4
|
||||||
and %l1, %l4, %l4
|
and %l1, %l4, %l4
|
||||||
|
andn %l1, %l4, %l1
|
||||||
ba,pt %xcc, __handle_preemption_continue
|
ba,pt %xcc, __handle_preemption_continue
|
||||||
andn %l1, %l4, %l1
|
srl %l4, 20, %l4
|
||||||
|
|
||||||
/* When returning from a NMI (%pil==15) interrupt we want to
|
/* When returning from a NMI (%pil==15) interrupt we want to
|
||||||
* avoid running softirqs, doing IRQ tracing, preempting, etc.
|
* avoid running softirqs, doing IRQ tracing, preempting, etc.
|
||||||
|
|
Loading…
Reference in New Issue