Go to the documentation of this file.
9 #include <linux/kernel.h>
10 #include <linux/sched.h>
11 #include <linux/signal.h>
12 #include <linux/module.h>
15 #include <asm/cpu-features.h>
18 #include <asm/ptrace.h>
19 #include <asm/uaccess.h>
63 epc = epc + 4 + (insn.
i_format.simmediate << 2);
74 epc = epc + 4 + (insn.
i_format.simmediate << 2);
84 regs->
regs[31] = epc + 8;
86 epc = epc + 4 + (insn.
i_format.simmediate << 2);
96 regs->
regs[31] = epc + 8;
98 epc = epc + 4 + (insn.
i_format.simmediate << 2);
110 dspcontrol =
rddsp(0x01);
112 if (dspcontrol >= 32) {
113 epc = epc + 4 + (insn.
i_format.simmediate << 2);
141 epc = epc + 4 + (insn.
i_format.simmediate << 2);
153 epc = epc + 4 + (insn.
i_format.simmediate << 2);
165 epc = epc + 4 + (insn.
i_format.simmediate << 2);
177 epc = epc + 4 + (insn.
i_format.simmediate << 2);
191 asm volatile(
"cfc1\t%0,$31" :
"=r" (
fcr31));
193 fcr31 =
current->thread.fpu.fcr31;
202 if (~fcr31 & (1 << bit)) {
203 epc = epc + 4 + (insn.
i_format.simmediate << 2);
213 if (fcr31 & (1 << bit)) {
214 epc = epc + 4 + (insn.
i_format.simmediate << 2);
223 #ifdef CONFIG_CPU_CAVIUM_OCTEON
227 epc = epc + 4 + (insn.
i_format.simmediate << 2);
234 (1ull<<(insn.
i_format.rt+32))) == 0)
235 epc = epc + 4 + (insn.
i_format.simmediate << 2);
242 epc = epc + 4 + (insn.
i_format.simmediate << 2);
250 epc = epc + 4 + (insn.
i_format.simmediate << 2);
261 printk(
"%s: DSP branch but not DSP ASE - sending SIGBUS.\n",
current->comm);
280 addr = (
unsigned int __user *) epc;
289 printk(
"%s: unaligned epc - sending SIGBUS.\n",
current->comm);