signal/ia64: Use force_sig_fault where appropriate
Acked-by: Tony Luck <tony.luck@intel.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
@@ -58,11 +58,9 @@ ia64_emulate_brl (struct pt_regs *regs, unsigned long ar_ec)
|
||||
unsigned long bundle[2];
|
||||
unsigned long opcode, btype, qp, offset, cpl;
|
||||
unsigned long next_ip;
|
||||
struct siginfo siginfo;
|
||||
struct illegal_op_return rv;
|
||||
long tmp_taken, unimplemented_address;
|
||||
|
||||
clear_siginfo(&siginfo);
|
||||
rv.fkt = (unsigned long) -1;
|
||||
|
||||
/*
|
||||
@@ -198,39 +196,22 @@ ia64_emulate_brl (struct pt_regs *regs, unsigned long ar_ec)
|
||||
* The target address contains unimplemented bits.
|
||||
*/
|
||||
printk(KERN_DEBUG "Woah! Unimplemented Instruction Address Trap!\n");
|
||||
siginfo.si_signo = SIGILL;
|
||||
siginfo.si_errno = 0;
|
||||
siginfo.si_flags = 0;
|
||||
siginfo.si_isr = 0;
|
||||
siginfo.si_imm = 0;
|
||||
siginfo.si_code = ILL_BADIADDR;
|
||||
force_sig_info(SIGILL, &siginfo, current);
|
||||
force_sig_fault(SIGILL, ILL_BADIADDR, (void __user *)NULL,
|
||||
0, 0, 0, current);
|
||||
} else if (ia64_psr(regs)->tb) {
|
||||
/*
|
||||
* Branch Tracing is enabled.
|
||||
* Force a taken branch signal.
|
||||
*/
|
||||
siginfo.si_signo = SIGTRAP;
|
||||
siginfo.si_errno = 0;
|
||||
siginfo.si_code = TRAP_BRANCH;
|
||||
siginfo.si_flags = 0;
|
||||
siginfo.si_isr = 0;
|
||||
siginfo.si_addr = 0;
|
||||
siginfo.si_imm = 0;
|
||||
force_sig_info(SIGTRAP, &siginfo, current);
|
||||
force_sig_fault(SIGTRAP, TRAP_BRANCH, (void __user *)NULL,
|
||||
0, 0, 0, current);
|
||||
} else if (ia64_psr(regs)->ss) {
|
||||
/*
|
||||
* Single Step is enabled.
|
||||
* Force a trace signal.
|
||||
*/
|
||||
siginfo.si_signo = SIGTRAP;
|
||||
siginfo.si_errno = 0;
|
||||
siginfo.si_code = TRAP_TRACE;
|
||||
siginfo.si_flags = 0;
|
||||
siginfo.si_isr = 0;
|
||||
siginfo.si_addr = 0;
|
||||
siginfo.si_imm = 0;
|
||||
force_sig_info(SIGTRAP, &siginfo, current);
|
||||
force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)NULL,
|
||||
0, 0, 0, current);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
Reference in New Issue
Block a user