diff options
author | Richard Henderson <rth@twiddle.net> | 2012-05-31 12:05:23 -0700 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2012-08-04 09:37:48 -0700 |
commit | d0f204952a02a69bc853a1c274b2a5ee4acfd39f (patch) | |
tree | c50641f0e85bb985e624663f63209a03f0af98a8 | |
parent | 161abfb5f929184a68baa16701606015f5683722 (diff) | |
download | hqemu-d0f204952a02a69bc853a1c274b2a5ee4acfd39f.zip hqemu-d0f204952a02a69bc853a1c274b2a5ee4acfd39f.tar.gz |
alpha-linux-user: Fix signal handling
Proper signal numbers were not defined, and EXCP_INTERRUPT
was unhandled, leading to all sorts of subtle confusion.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
-rw-r--r-- | linux-user/main.c | 3 | ||||
-rw-r--r-- | linux-user/syscall_defs.h | 41 |
2 files changed, 43 insertions, 1 deletions
diff --git a/linux-user/main.c b/linux-user/main.c index 25eaa11..a21942c 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -2921,6 +2921,9 @@ void cpu_loop(CPUAlphaState *env) case EXCP_STQ_C: do_store_exclusive(env, env->error_code, trapnr - EXCP_STL_C); break; + case EXCP_INTERRUPT: + /* Just indicate that signals should be handled asap. */ + break; default: printf ("Unhandled trap: 0x%x\n", trapnr); cpu_dump_state(env, stderr, fprintf, 0); diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index cfece21..308831f 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -371,7 +371,46 @@ int do_sigaction(int sig, const struct target_sigaction *act, #define TARGET_SA_RESTORER 0x04000000 #endif -#if defined(TARGET_SPARC) +#if defined(TARGET_ALPHA) + +#define TARGET_SIGHUP 1 +#define TARGET_SIGINT 2 +#define TARGET_SIGQUIT 3 +#define TARGET_SIGILL 4 +#define TARGET_SIGTRAP 5 +#define TARGET_SIGABRT 6 +#define TARGET_SIGSTKFLT 7 /* actually SIGEMT */ +#define TARGET_SIGFPE 8 +#define TARGET_SIGKILL 9 +#define TARGET_SIGBUS 10 +#define TARGET_SIGSEGV 11 +#define TARGET_SIGSYS 12 +#define TARGET_SIGPIPE 13 +#define TARGET_SIGALRM 14 +#define TARGET_SIGTERM 15 +#define TARGET_SIGURG 16 +#define TARGET_SIGSTOP 17 +#define TARGET_SIGTSTP 18 +#define TARGET_SIGCONT 19 +#define TARGET_SIGCHLD 20 +#define TARGET_SIGTTIN 21 +#define TARGET_SIGTTOU 22 +#define TARGET_SIGIO 23 +#define TARGET_SIGXCPU 24 +#define TARGET_SIGXFSZ 25 +#define TARGET_SIGVTALRM 26 +#define TARGET_SIGPROF 27 +#define TARGET_SIGWINCH 28 +#define TARGET_SIGPWR 29 /* actually SIGINFO */ +#define TARGET_SIGUSR1 30 +#define TARGET_SIGUSR2 31 +#define TARGET_SIGRTMIN 32 + +#define TARGET_SIG_BLOCK 1 +#define TARGET_SIG_UNBLOCK 2 +#define TARGET_SIG_SETMASK 3 + +#elif defined(TARGET_SPARC) #define TARGET_SIGHUP 1 #define TARGET_SIGINT 2 |