| .. | .. |
|---|
| 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 | } |
|---|