.. | .. |
---|
58 | 58 | unsigned long bundle[2]; |
---|
59 | 59 | unsigned long opcode, btype, qp, offset, cpl; |
---|
60 | 60 | unsigned long next_ip; |
---|
61 | | - struct siginfo siginfo; |
---|
62 | 61 | struct illegal_op_return rv; |
---|
63 | 62 | long tmp_taken, unimplemented_address; |
---|
64 | 63 | |
---|
65 | | - clear_siginfo(&siginfo); |
---|
66 | 64 | rv.fkt = (unsigned long) -1; |
---|
67 | 65 | |
---|
68 | 66 | /* |
---|
.. | .. |
---|
198 | 196 | * The target address contains unimplemented bits. |
---|
199 | 197 | */ |
---|
200 | 198 | printk(KERN_DEBUG "Woah! Unimplemented Instruction Address Trap!\n"); |
---|
201 | | - siginfo.si_signo = SIGILL; |
---|
202 | | - siginfo.si_errno = 0; |
---|
203 | | - siginfo.si_flags = 0; |
---|
204 | | - siginfo.si_isr = 0; |
---|
205 | | - siginfo.si_imm = 0; |
---|
206 | | - siginfo.si_code = ILL_BADIADDR; |
---|
207 | | - force_sig_info(SIGILL, &siginfo, current); |
---|
| 199 | + force_sig_fault(SIGILL, ILL_BADIADDR, (void __user *)NULL, |
---|
| 200 | + 0, 0, 0); |
---|
208 | 201 | } else if (ia64_psr(regs)->tb) { |
---|
209 | 202 | /* |
---|
210 | 203 | * Branch Tracing is enabled. |
---|
211 | 204 | * Force a taken branch signal. |
---|
212 | 205 | */ |
---|
213 | | - siginfo.si_signo = SIGTRAP; |
---|
214 | | - siginfo.si_errno = 0; |
---|
215 | | - siginfo.si_code = TRAP_BRANCH; |
---|
216 | | - siginfo.si_flags = 0; |
---|
217 | | - siginfo.si_isr = 0; |
---|
218 | | - siginfo.si_addr = 0; |
---|
219 | | - siginfo.si_imm = 0; |
---|
220 | | - force_sig_info(SIGTRAP, &siginfo, current); |
---|
| 206 | + force_sig_fault(SIGTRAP, TRAP_BRANCH, (void __user *)NULL, |
---|
| 207 | + 0, 0, 0); |
---|
221 | 208 | } else if (ia64_psr(regs)->ss) { |
---|
222 | 209 | /* |
---|
223 | 210 | * Single Step is enabled. |
---|
224 | 211 | * Force a trace signal. |
---|
225 | 212 | */ |
---|
226 | | - siginfo.si_signo = SIGTRAP; |
---|
227 | | - siginfo.si_errno = 0; |
---|
228 | | - siginfo.si_code = TRAP_TRACE; |
---|
229 | | - siginfo.si_flags = 0; |
---|
230 | | - siginfo.si_isr = 0; |
---|
231 | | - siginfo.si_addr = 0; |
---|
232 | | - siginfo.si_imm = 0; |
---|
233 | | - force_sig_info(SIGTRAP, &siginfo, current); |
---|
| 213 | + force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)NULL, |
---|
| 214 | + 0, 0, 0); |
---|
234 | 215 | } |
---|
235 | 216 | return rv; |
---|
236 | 217 | } |
---|