summaryrefslogtreecommitdiffstats
path: root/sys/alpha/include
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2000-11-30 05:23:49 +0000
committermarcel <marcel@FreeBSD.org>2000-11-30 05:23:49 +0000
commit75c76bdc6b73745ecfa9955e547ca6ba4fd7d328 (patch)
treec43af70e24691529e40621dabcaf4913d9d353f4 /sys/alpha/include
parent673e30eadab9fe762d23631609edf13e018f59c1 (diff)
downloadFreeBSD-src-75c76bdc6b73745ecfa9955e547ca6ba4fd7d328.zip
FreeBSD-src-75c76bdc6b73745ecfa9955e547ca6ba4fd7d328.tar.gz
Don't use p->p_sigstk.ss_flags to keep state of whether the
process is on the alternate stack or not. For compatibility with sigstack(2) state is being updated if such is needed. We now determine whether the process is on the alternate stack by looking at its stack pointer. This allows a process to siglongjmp from a signal handler on the alternate stack to the place of the sigsetjmp on the normal stack. When maintaining state, this would have invalidated the state information and causing a subsequent signal to be delivered on the normal stack instead of the alternate stack. PR: 22286
Diffstat (limited to 'sys/alpha/include')
-rw-r--r--sys/alpha/include/cpu.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/alpha/include/cpu.h b/sys/alpha/include/cpu.h
index a0be38f..3da213f 100644
--- a/sys/alpha/include/cpu.h
+++ b/sys/alpha/include/cpu.h
@@ -52,6 +52,8 @@
#include <machine/frame.h>
+#define cpu_getstack(p) (alpha_pal_rdusp())
+
/*
* Arguments to hardclock and gatherstats encapsulate the previous
* machine state in an opaque clockframe. One the Alpha, we use
OpenPOWER on IntegriCloud