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>
This commit is contained in:
		
							parent
							
								
									161abfb5f9
								
							
						
					
					
						commit
						d0f204952a
					
				@ -2921,6 +2921,9 @@ void cpu_loop(CPUAlphaState *env)
 | 
				
			|||||||
        case EXCP_STQ_C:
 | 
					        case EXCP_STQ_C:
 | 
				
			||||||
            do_store_exclusive(env, env->error_code, trapnr - EXCP_STL_C);
 | 
					            do_store_exclusive(env, env->error_code, trapnr - EXCP_STL_C);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					        case EXCP_INTERRUPT:
 | 
				
			||||||
 | 
					            /* Just indicate that signals should be handled asap.  */
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            printf ("Unhandled trap: 0x%x\n", trapnr);
 | 
					            printf ("Unhandled trap: 0x%x\n", trapnr);
 | 
				
			||||||
            cpu_dump_state(env, stderr, fprintf, 0);
 | 
					            cpu_dump_state(env, stderr, fprintf, 0);
 | 
				
			||||||
 | 
				
			|||||||
@ -371,7 +371,46 @@ int do_sigaction(int sig, const struct target_sigaction *act,
 | 
				
			|||||||
#define TARGET_SA_RESTORER	0x04000000
 | 
					#define TARGET_SA_RESTORER	0x04000000
 | 
				
			||||||
#endif
 | 
					#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_SIGHUP		 1
 | 
				
			||||||
#define TARGET_SIGINT		 2
 | 
					#define TARGET_SIGINT		 2
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user