aboutsummaryrefslogtreecommitdiff
path: root/sys/i386
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2008-09-15 19:40:49 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2008-09-15 19:40:49 +0000
commit2feda37ff0f66bb4b31e8d9a141b0c9aef645d81 (patch)
tree18e6dde512a00398d4291fc1022edae58e7c4292 /sys/i386
parent880a184c29be0769e92fc0168c682cea37ea2b1c (diff)
Notes
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/linux/linux_genassym.c1
-rw-r--r--sys/i386/linux/linux_locore.s3
2 files changed, 3 insertions, 1 deletions
diff --git a/sys/i386/linux/linux_genassym.c b/sys/i386/linux/linux_genassym.c
index 3a36432174b1..1e845724cfdc 100644
--- a/sys/i386/linux/linux_genassym.c
+++ b/sys/i386/linux/linux_genassym.c
@@ -13,3 +13,4 @@ ASSYM(LINUX_SC_GS, offsetof(struct l_sigcontext, sc_gs));
ASSYM(LINUX_SC_EFLAGS, offsetof(struct l_sigcontext, sc_eflags));
ASSYM(LINUX_RT_SIGF_HANDLER, offsetof(struct l_rt_sigframe, sf_handler));
ASSYM(LINUX_RT_SIGF_UC, offsetof(struct l_rt_sigframe, sf_sc));
+ASSYM(LINUX_RT_SIGF_SC, offsetof(struct l_ucontext, uc_mcontext));
diff --git a/sys/i386/linux/linux_locore.s b/sys/i386/linux/linux_locore.s
index 1c23b3a370e8..044e8e2e9951 100644
--- a/sys/i386/linux/linux_locore.s
+++ b/sys/i386/linux/linux_locore.s
@@ -19,7 +19,8 @@ NON_GPROF_ENTRY(linux_sigcode)
linux_rt_sigcode:
call *LINUX_RT_SIGF_HANDLER(%esp)
leal LINUX_RT_SIGF_UC(%esp),%ebx /* linux ucp */
- movl LINUX_SC_GS(%ebx),%gs
+ leal LINUX_RT_SIGF_SC(%ebx),%ecx /* linux sigcontext */
+ movl LINUX_SC_GS(%ecx),%gs
push %eax /* fake ret addr */
movl $LINUX_SYS_linux_rt_sigreturn,%eax /* linux_rt_sigreturn() */
int $0x80 /* enter kernel with args */