diff options
Diffstat (limited to 'linux-user/signal.c')
-rw-r--r-- | linux-user/signal.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/linux-user/signal.c b/linux-user/signal.c index 1e29c2c502..5a99e610dc 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -690,7 +690,11 @@ static void setup_frame(int sig, struct emulated_sigaction *ka, err |= __put_user(frame->retcode, &frame->pretcode); /* This is popl %eax ; movl $,%eax ; int $0x80 */ err |= __put_user(0xb858, (short *)(frame->retcode+0)); +#if defined(TARGET_X86_64) +#warning "Fix this !" +#else err |= __put_user(TARGET_NR_sigreturn, (int *)(frame->retcode+2)); +#endif err |= __put_user(0x80cd, (short *)(frame->retcode+6)); } @@ -2048,7 +2052,7 @@ void process_pending_signals(void *cpu_env) host_to_target_sigset_internal(&target_old_set, &old_set); /* if the CPU is in VM86 mode, we restore the 32 bit values */ -#ifdef TARGET_I386 +#if defined(TARGET_I386) && !defined(TARGET_X86_64) { CPUX86State *env = cpu_env; if (env->eflags & VM_MASK) |