alpha-linux-user: Fix siginfo.si_addr for SIGSEGV and SIGBUS.
authorRichard Henderson <rth@twiddle.net>
Mon, 3 May 2010 17:07:50 +0000 (10:07 -0700)
committerAurelien Jarno <aurelien@aurel32.net>
Fri, 21 May 2010 16:22:20 +0000 (16:22 +0000)
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
linux-user/main.c

index 99a7cde559ca03132ed93d2e1cca9e3141e49c62..b158bbc296487bfcc72759b5e88596a4253f4b48 100644 (file)
@@ -2434,7 +2434,7 @@ void cpu_loop (CPUState *env)
             info.si_signo = TARGET_SIGSEGV;
             info.si_errno = 0;
             info.si_code = 0;  /* ??? SEGV_MAPERR vs SEGV_ACCERR.  */
-            info._sifields._sigfault._addr = env->pc;
+            info._sifields._sigfault._addr = env->ipr[IPR_EXC_ADDR];
             queue_signal(env, info.si_signo, &info);
             break;
         case EXCP_DTB_MISS_PAL:
@@ -2458,7 +2458,7 @@ void cpu_loop (CPUState *env)
             info.si_signo = TARGET_SIGBUS;
             info.si_errno = 0;
             info.si_code = TARGET_BUS_ADRALN;
-            info._sifields._sigfault._addr = env->pc;
+            info._sifields._sigfault._addr = env->ipr[IPR_EXC_ADDR];
             queue_signal(env, info.si_signo, &info);
             break;
         case EXCP_OPCDEC: