aboutsummaryrefslogtreecommitdiff
path: root/lib/libc_r/uthread/pthread_private.h
diff options
context:
space:
mode:
authorDaniel Eischen <deischen@FreeBSD.org>2004-01-22 19:15:08 +0000
committerDaniel Eischen <deischen@FreeBSD.org>2004-01-22 19:15:08 +0000
commit39edba076eebd5effcca91a2bb5545e5908b3445 (patch)
tree20c115679d14ffbb9efa1dc9c883e2029e87b17b /lib/libc_r/uthread/pthread_private.h
parentcc7282659a9cb522b3bf71da8ee8c696e8b1882a (diff)
downloadsrc-39edba076eebd5effcca91a2bb5545e5908b3445.tar.gz
src-39edba076eebd5effcca91a2bb5545e5908b3445.zip
Initialize the (i386) frame pointer when setting up a thread
context. Submitted by: Marc Olzheim <marcolz@stack.nl> Tested by: Marc Olzheim <marcolz@stack.nl>
Notes
Notes: svn path=/head/; revision=124841
Diffstat (limited to 'lib/libc_r/uthread/pthread_private.h')
-rw-r--r--lib/libc_r/uthread/pthread_private.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/libc_r/uthread/pthread_private.h b/lib/libc_r/uthread/pthread_private.h
index 6807f2f59b5a..f83e2f4b2617 100644
--- a/lib/libc_r/uthread/pthread_private.h
+++ b/lib/libc_r/uthread/pthread_private.h
@@ -86,7 +86,10 @@
fdata = (char *) (ucp)->uc_mcontext.mc_fpstate; \
__asm__("frstor %0": :"m"(*fdata)); \
} while (0)
-#define SET_RETURN_ADDR_JB(jb, ra) (jb)[0]._jb[0] = (int)(ra)
+#define SET_RETURN_ADDR_JB(jb, ra) do { \
+ (jb)[0]._jb[0] = (int)(ra); \
+ (jb)[0]._jb[3] = 0; \
+} while (0)
#elif defined(__amd64__)
#define GET_STACK_JB(jb) ((unsigned long)((jb)[0]._jb[2]))
#define GET_STACK_SJB(sjb) ((unsigned long)((sjb)[0]._sjb[2]))