Merge branch '3.15-fixes' into mips-for-linux-next
This commit is contained in:
@@ -513,7 +513,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
if (regs->regs[insn.i_format.rs] ==
|
||||
regs->regs[insn.i_format.rt]) {
|
||||
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||
if (insn.i_format.rt == beql_op)
|
||||
if (insn.i_format.opcode == beql_op)
|
||||
ret = BRANCH_LIKELY_TAKEN;
|
||||
} else
|
||||
epc += 8;
|
||||
@@ -525,7 +525,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
if (regs->regs[insn.i_format.rs] !=
|
||||
regs->regs[insn.i_format.rt]) {
|
||||
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||
if (insn.i_format.rt == bnel_op)
|
||||
if (insn.i_format.opcode == bnel_op)
|
||||
ret = BRANCH_LIKELY_TAKEN;
|
||||
} else
|
||||
epc += 8;
|
||||
@@ -537,7 +537,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
/* rt field assumed to be zero */
|
||||
if ((long)regs->regs[insn.i_format.rs] <= 0) {
|
||||
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||
if (insn.i_format.rt == bnel_op)
|
||||
if (insn.i_format.opcode == blezl_op)
|
||||
ret = BRANCH_LIKELY_TAKEN;
|
||||
} else
|
||||
epc += 8;
|
||||
@@ -549,7 +549,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
/* rt field assumed to be zero */
|
||||
if ((long)regs->regs[insn.i_format.rs] > 0) {
|
||||
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||
if (insn.i_format.rt == bnel_op)
|
||||
if (insn.i_format.opcode == bgtzl_op)
|
||||
ret = BRANCH_LIKELY_TAKEN;
|
||||
} else
|
||||
epc += 8;
|
||||
|
||||
@@ -163,7 +163,7 @@ int ptrace_get_watch_regs(struct task_struct *child,
|
||||
enum pt_watch_style style;
|
||||
int i;
|
||||
|
||||
if (!cpu_has_watch || current_cpu_data.watch_reg_use_cnt == 0)
|
||||
if (!cpu_has_watch || boot_cpu_data.watch_reg_use_cnt == 0)
|
||||
return -EIO;
|
||||
if (!access_ok(VERIFY_WRITE, addr, sizeof(struct pt_watch_regs)))
|
||||
return -EIO;
|
||||
@@ -177,14 +177,14 @@ int ptrace_get_watch_regs(struct task_struct *child,
|
||||
#endif
|
||||
|
||||
__put_user(style, &addr->style);
|
||||
__put_user(current_cpu_data.watch_reg_use_cnt,
|
||||
__put_user(boot_cpu_data.watch_reg_use_cnt,
|
||||
&addr->WATCH_STYLE.num_valid);
|
||||
for (i = 0; i < current_cpu_data.watch_reg_use_cnt; i++) {
|
||||
for (i = 0; i < boot_cpu_data.watch_reg_use_cnt; i++) {
|
||||
__put_user(child->thread.watch.mips3264.watchlo[i],
|
||||
&addr->WATCH_STYLE.watchlo[i]);
|
||||
__put_user(child->thread.watch.mips3264.watchhi[i] & 0xfff,
|
||||
&addr->WATCH_STYLE.watchhi[i]);
|
||||
__put_user(current_cpu_data.watch_reg_masks[i],
|
||||
__put_user(boot_cpu_data.watch_reg_masks[i],
|
||||
&addr->WATCH_STYLE.watch_masks[i]);
|
||||
}
|
||||
for (; i < 8; i++) {
|
||||
@@ -204,12 +204,12 @@ int ptrace_set_watch_regs(struct task_struct *child,
|
||||
unsigned long lt[NUM_WATCH_REGS];
|
||||
u16 ht[NUM_WATCH_REGS];
|
||||
|
||||
if (!cpu_has_watch || current_cpu_data.watch_reg_use_cnt == 0)
|
||||
if (!cpu_has_watch || boot_cpu_data.watch_reg_use_cnt == 0)
|
||||
return -EIO;
|
||||
if (!access_ok(VERIFY_READ, addr, sizeof(struct pt_watch_regs)))
|
||||
return -EIO;
|
||||
/* Check the values. */
|
||||
for (i = 0; i < current_cpu_data.watch_reg_use_cnt; i++) {
|
||||
for (i = 0; i < boot_cpu_data.watch_reg_use_cnt; i++) {
|
||||
__get_user(lt[i], &addr->WATCH_STYLE.watchlo[i]);
|
||||
#ifdef CONFIG_32BIT
|
||||
if (lt[i] & __UA_LIMIT)
|
||||
@@ -228,7 +228,7 @@ int ptrace_set_watch_regs(struct task_struct *child,
|
||||
return -EINVAL;
|
||||
}
|
||||
/* Install them. */
|
||||
for (i = 0; i < current_cpu_data.watch_reg_use_cnt; i++) {
|
||||
for (i = 0; i < boot_cpu_data.watch_reg_use_cnt; i++) {
|
||||
if (lt[i] & 7)
|
||||
watch_active = 1;
|
||||
child->thread.watch.mips3264.watchlo[i] = lt[i];
|
||||
|
||||
@@ -704,10 +704,12 @@ int process_fpemu_return(int sig, void __user *fault_addr)
|
||||
si.si_addr = fault_addr;
|
||||
si.si_signo = sig;
|
||||
if (sig == SIGSEGV) {
|
||||
down_read(¤t->mm->mmap_sem);
|
||||
if (find_vma(current->mm, (unsigned long)fault_addr))
|
||||
si.si_code = SEGV_ACCERR;
|
||||
else
|
||||
si.si_code = SEGV_MAPERR;
|
||||
up_read(¤t->mm->mmap_sem);
|
||||
} else {
|
||||
si.si_code = BUS_ADRERR;
|
||||
}
|
||||
@@ -1537,7 +1539,7 @@ asmlinkage void cache_parity_error(void)
|
||||
reg_val & (1<<30) ? "secondary" : "primary",
|
||||
reg_val & (1<<31) ? "data" : "insn");
|
||||
if (cpu_has_mips_r2 &&
|
||||
((current_cpu_data.processor_id && 0xff0000) == PRID_COMP_MIPS)) {
|
||||
((current_cpu_data.processor_id & 0xff0000) == PRID_COMP_MIPS)) {
|
||||
pr_err("Error bits: %s%s%s%s%s%s%s%s\n",
|
||||
reg_val & (1<<29) ? "ED " : "",
|
||||
reg_val & (1<<28) ? "ET " : "",
|
||||
@@ -1577,7 +1579,7 @@ asmlinkage void do_ftlb(void)
|
||||
|
||||
/* For the moment, report the problem and hang. */
|
||||
if (cpu_has_mips_r2 &&
|
||||
((current_cpu_data.processor_id && 0xff0000) == PRID_COMP_MIPS)) {
|
||||
((current_cpu_data.processor_id & 0xff0000) == PRID_COMP_MIPS)) {
|
||||
pr_err("FTLB error exception, cp0_ecc=0x%08x:\n",
|
||||
read_c0_ecc());
|
||||
pr_err("cp0_errorepc == %0*lx\n", field, read_c0_errorepc());
|
||||
|
||||
Reference in New Issue
Block a user