Commit 0e6ecc1a authored by Jayachandran C's avatar Jayachandran C Committed by Ralf Baechle

MIPS: Fixup check for invalid scratch register

The invalid value for scratch register is -1, so update the checks of
the form (scratch_reg > 0) to be (scratch_reg >= 0).  This will fix
the case in Netlogic XLP where the scratch_reg can be 0.
Signed-off-by: default avatarJayachandran C <jchandra@broadcom.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/5444/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 7777b939
...@@ -345,7 +345,7 @@ static struct work_registers __cpuinit build_get_work_registers(u32 **p) ...@@ -345,7 +345,7 @@ static struct work_registers __cpuinit build_get_work_registers(u32 **p)
int smp_processor_id_sel; int smp_processor_id_sel;
int smp_processor_id_shift; int smp_processor_id_shift;
if (scratch_reg > 0) { if (scratch_reg >= 0) {
/* Save in CPU local C0_KScratch? */ /* Save in CPU local C0_KScratch? */
UASM_i_MTC0(p, 1, c0_kscratch(), scratch_reg); UASM_i_MTC0(p, 1, c0_kscratch(), scratch_reg);
r.r1 = K0; r.r1 = K0;
...@@ -395,7 +395,7 @@ static struct work_registers __cpuinit build_get_work_registers(u32 **p) ...@@ -395,7 +395,7 @@ static struct work_registers __cpuinit build_get_work_registers(u32 **p)
static void __cpuinit build_restore_work_registers(u32 **p) static void __cpuinit build_restore_work_registers(u32 **p)
{ {
if (scratch_reg > 0) { if (scratch_reg >= 0) {
UASM_i_MFC0(p, 1, c0_kscratch(), scratch_reg); UASM_i_MFC0(p, 1, c0_kscratch(), scratch_reg);
return; return;
} }
...@@ -684,7 +684,7 @@ static __cpuinit void build_restore_pagemask(u32 **p, ...@@ -684,7 +684,7 @@ static __cpuinit void build_restore_pagemask(u32 **p,
uasm_i_mtc0(p, 0, C0_PAGEMASK); uasm_i_mtc0(p, 0, C0_PAGEMASK);
uasm_il_b(p, r, lid); uasm_il_b(p, r, lid);
} }
if (scratch_reg > 0) if (scratch_reg >= 0)
UASM_i_MFC0(p, 1, c0_kscratch(), scratch_reg); UASM_i_MFC0(p, 1, c0_kscratch(), scratch_reg);
else else
UASM_i_LW(p, 1, scratchpad_offset(0), 0); UASM_i_LW(p, 1, scratchpad_offset(0), 0);
...@@ -940,7 +940,7 @@ build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, ...@@ -940,7 +940,7 @@ build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
uasm_i_jr(p, ptr); uasm_i_jr(p, ptr);
if (mode == refill_scratch) { if (mode == refill_scratch) {
if (scratch_reg > 0) if (scratch_reg >= 0)
UASM_i_MFC0(p, 1, c0_kscratch(), scratch_reg); UASM_i_MFC0(p, 1, c0_kscratch(), scratch_reg);
else else
UASM_i_LW(p, 1, scratchpad_offset(0), 0); UASM_i_LW(p, 1, scratchpad_offset(0), 0);
...@@ -1297,7 +1297,7 @@ static void __cpuinit build_r4000_tlb_refill_handler(void) ...@@ -1297,7 +1297,7 @@ static void __cpuinit build_r4000_tlb_refill_handler(void)
memset(relocs, 0, sizeof(relocs)); memset(relocs, 0, sizeof(relocs));
memset(final_handler, 0, sizeof(final_handler)); memset(final_handler, 0, sizeof(final_handler));
if ((scratch_reg > 0 || scratchpad_available()) && use_bbit_insns()) { if ((scratch_reg >= 0 || scratchpad_available()) && use_bbit_insns()) {
htlb_info = build_fast_tlb_refill_handler(&p, &l, &r, K0, K1, htlb_info = build_fast_tlb_refill_handler(&p, &l, &r, K0, K1,
scratch_reg); scratch_reg);
vmalloc_mode = refill_scratch; vmalloc_mode = refill_scratch;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment