alpha-linux-user: Fix sigsuspend parameters.
Alpha passes the signal set in a register, not by reference. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
		
							parent
							
								
									9231733a82
								
							
						
					
					
						commit
						f43ce12b47
					
				@ -5088,10 +5088,15 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
 | 
				
			|||||||
    case TARGET_NR_sigsuspend:
 | 
					    case TARGET_NR_sigsuspend:
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            sigset_t set;
 | 
					            sigset_t set;
 | 
				
			||||||
 | 
					#if defined(TARGET_ALPHA)
 | 
				
			||||||
 | 
					            abi_ulong mask = arg1;
 | 
				
			||||||
 | 
					            target_to_host_old_sigset(&set, &mask);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
            if (!(p = lock_user(VERIFY_READ, arg1, sizeof(target_sigset_t), 1)))
 | 
					            if (!(p = lock_user(VERIFY_READ, arg1, sizeof(target_sigset_t), 1)))
 | 
				
			||||||
                goto efault;
 | 
					                goto efault;
 | 
				
			||||||
            target_to_host_old_sigset(&set, p);
 | 
					            target_to_host_old_sigset(&set, p);
 | 
				
			||||||
            unlock_user(p, arg1, 0);
 | 
					            unlock_user(p, arg1, 0);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
            ret = get_errno(sigsuspend(&set));
 | 
					            ret = get_errno(sigsuspend(&set));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user