diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2010-12-30 15:10:55 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2010-12-30 15:10:55 +0000 |
commit | 81c55a1c7576a4b53e312d70e0fd4880762f18da (patch) | |
tree | 9aa19a9a953d6ba2e0d69c341f47a9a83d08dff0 /sys/arch/hppa | |
parent | fbdc0a4d566f770a8922e3787790a8e86b7ffb4c (diff) |
Since we save the interrupt mask in the trapframe when we get a trap, we
might restore the wrong mask when we switch CPUs. Since we should be
running with the proper mask when we enter $syscall_return, simply save
the proper mask into the trapframe such that we restore the right interrupt
mask later on.
tested by jsing@
Diffstat (limited to 'sys/arch/hppa')
-rw-r--r-- | sys/arch/hppa/hppa/locore.S | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/arch/hppa/hppa/locore.S b/sys/arch/hppa/hppa/locore.S index d4430e2f00b..7011bc9e498 100644 --- a/sys/arch/hppa/hppa/locore.S +++ b/sys/arch/hppa/hppa/locore.S @@ -1,4 +1,4 @@ -/* $OpenBSD: locore.S,v 1.183 2010/12/30 14:30:12 jsing Exp $ */ +/* $OpenBSD: locore.S,v 1.184 2010/12/30 15:10:54 kettenis Exp $ */ /* * Copyright (c) 1998-2004 Michael Shalayeff @@ -680,6 +680,10 @@ $syscall_return /* t3 == VA trapframe */ /* disable interrupts, just in case */ +#ifdef MULTIPROCESSOR + mfctl eiem, t1 + stw t1, TF_CR15(t3) +#endif mtctl r0, eiem /* |