powerpc/math-emu: Remove -w build flag and fix warnings
As reported by Nathan, the module_init() macro was not taken into account because the header was missing. That means spe_mathemu_init() was never called. This should have been detected by gcc at build time, but due to '-w' flag it went undetected. Removing that flag leads to many warnings hence errors. Fix those warnings then remove the -w flag. Reported-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Reviewed-by: Nathan Chancellor <nathan@kernel.org> Link: https://lore.kernel.org/r/2663961738a46073713786d4efeb53100ca156e7.1662134272.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
cfe0d370e0
commit
7245fc5bb7
|
@ -16,5 +16,3 @@ obj-$(CONFIG_SPE) += math_efp.o
|
|||
|
||||
CFLAGS_fabs.o = -fno-builtin-fabs
|
||||
CFLAGS_math.o = -fno-builtin-fabs
|
||||
|
||||
ccflags-y = -w
|
||||
|
|
|
@ -24,9 +24,9 @@ FLOATFUNC(mtfsf);
|
|||
FLOATFUNC(mtfsfi);
|
||||
|
||||
#ifdef CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED
|
||||
#undef FLOATFUNC(x)
|
||||
#undef FLOATFUNC
|
||||
#define FLOATFUNC(x) static inline int x(void *op1, void *op2, void *op3, \
|
||||
void *op4) { }
|
||||
void *op4) { return 0; }
|
||||
#endif
|
||||
|
||||
FLOATFUNC(fadd);
|
||||
|
@ -396,28 +396,28 @@ do_mathemu(struct pt_regs *regs)
|
|||
|
||||
case XCR:
|
||||
op0 = (void *)®s->ccr;
|
||||
op1 = (void *)((insn >> 23) & 0x7);
|
||||
op1 = (void *)(long)((insn >> 23) & 0x7);
|
||||
op2 = (void *)¤t->thread.TS_FPR((insn >> 16) & 0x1f);
|
||||
op3 = (void *)¤t->thread.TS_FPR((insn >> 11) & 0x1f);
|
||||
break;
|
||||
|
||||
case XCRL:
|
||||
op0 = (void *)®s->ccr;
|
||||
op1 = (void *)((insn >> 23) & 0x7);
|
||||
op2 = (void *)((insn >> 18) & 0x7);
|
||||
op1 = (void *)(long)((insn >> 23) & 0x7);
|
||||
op2 = (void *)(long)((insn >> 18) & 0x7);
|
||||
break;
|
||||
|
||||
case XCRB:
|
||||
op0 = (void *)((insn >> 21) & 0x1f);
|
||||
op0 = (void *)(long)((insn >> 21) & 0x1f);
|
||||
break;
|
||||
|
||||
case XCRI:
|
||||
op0 = (void *)((insn >> 23) & 0x7);
|
||||
op1 = (void *)((insn >> 12) & 0xf);
|
||||
op0 = (void *)(long)((insn >> 23) & 0x7);
|
||||
op1 = (void *)(long)((insn >> 12) & 0xf);
|
||||
break;
|
||||
|
||||
case XFLB:
|
||||
op0 = (void *)((insn >> 17) & 0xff);
|
||||
op0 = (void *)(long)((insn >> 17) & 0xff);
|
||||
op1 = (void *)¤t->thread.TS_FPR((insn >> 11) & 0x1f);
|
||||
break;
|
||||
|
||||
|
|
|
@ -219,6 +219,7 @@ int do_spe_mathemu(struct pt_regs *regs)
|
|||
case AB:
|
||||
case XCR:
|
||||
FP_UNPACK_SP(SA, va.wp + 1);
|
||||
fallthrough;
|
||||
case XB:
|
||||
FP_UNPACK_SP(SB, vb.wp + 1);
|
||||
break;
|
||||
|
@ -227,8 +228,8 @@ int do_spe_mathemu(struct pt_regs *regs)
|
|||
break;
|
||||
}
|
||||
|
||||
pr_debug("SA: %ld %08lx %ld (%ld)\n", SA_s, SA_f, SA_e, SA_c);
|
||||
pr_debug("SB: %ld %08lx %ld (%ld)\n", SB_s, SB_f, SB_e, SB_c);
|
||||
pr_debug("SA: %d %08x %d (%d)\n", SA_s, SA_f, SA_e, SA_c);
|
||||
pr_debug("SB: %d %08x %d (%d)\n", SB_s, SB_f, SB_e, SB_c);
|
||||
|
||||
switch (func) {
|
||||
case EFSABS:
|
||||
|
@ -279,7 +280,7 @@ int do_spe_mathemu(struct pt_regs *regs)
|
|||
} else {
|
||||
SB_e += (func == EFSCTSF ? 31 : 32);
|
||||
FP_TO_INT_ROUND_S(vc.wp[1], SB, 32,
|
||||
(func == EFSCTSF));
|
||||
(func == EFSCTSF) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -288,7 +289,7 @@ int do_spe_mathemu(struct pt_regs *regs)
|
|||
FP_CLEAR_EXCEPTIONS;
|
||||
FP_UNPACK_DP(DB, vb.dp);
|
||||
|
||||
pr_debug("DB: %ld %08lx %08lx %ld (%ld)\n",
|
||||
pr_debug("DB: %d %08x %08x %d (%d)\n",
|
||||
DB_s, DB_f1, DB_f0, DB_e, DB_c);
|
||||
|
||||
FP_CONV(S, D, 1, 2, SR, DB);
|
||||
|
@ -302,7 +303,7 @@ int do_spe_mathemu(struct pt_regs *regs)
|
|||
FP_SET_EXCEPTION(FP_EX_INVALID);
|
||||
} else {
|
||||
FP_TO_INT_ROUND_S(vc.wp[1], SB, 32,
|
||||
((func & 0x3) != 0));
|
||||
((func & 0x3) != 0) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -313,7 +314,7 @@ int do_spe_mathemu(struct pt_regs *regs)
|
|||
FP_SET_EXCEPTION(FP_EX_INVALID);
|
||||
} else {
|
||||
FP_TO_INT_S(vc.wp[1], SB, 32,
|
||||
((func & 0x3) != 0));
|
||||
((func & 0x3) != 0) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -323,7 +324,7 @@ int do_spe_mathemu(struct pt_regs *regs)
|
|||
break;
|
||||
|
||||
pack_s:
|
||||
pr_debug("SR: %ld %08lx %ld (%ld)\n", SR_s, SR_f, SR_e, SR_c);
|
||||
pr_debug("SR: %d %08x %d (%d)\n", SR_s, SR_f, SR_e, SR_c);
|
||||
|
||||
FP_PACK_SP(vc.wp + 1, SR);
|
||||
goto update_regs;
|
||||
|
@ -347,6 +348,7 @@ cmp_s:
|
|||
case AB:
|
||||
case XCR:
|
||||
FP_UNPACK_DP(DA, va.dp);
|
||||
fallthrough;
|
||||
case XB:
|
||||
FP_UNPACK_DP(DB, vb.dp);
|
||||
break;
|
||||
|
@ -355,9 +357,9 @@ cmp_s:
|
|||
break;
|
||||
}
|
||||
|
||||
pr_debug("DA: %ld %08lx %08lx %ld (%ld)\n",
|
||||
pr_debug("DA: %d %08x %08x %d (%d)\n",
|
||||
DA_s, DA_f1, DA_f0, DA_e, DA_c);
|
||||
pr_debug("DB: %ld %08lx %08lx %ld (%ld)\n",
|
||||
pr_debug("DB: %d %08x %08x %d (%d)\n",
|
||||
DB_s, DB_f1, DB_f0, DB_e, DB_c);
|
||||
|
||||
switch (func) {
|
||||
|
@ -409,7 +411,7 @@ cmp_s:
|
|||
} else {
|
||||
DB_e += (func == EFDCTSF ? 31 : 32);
|
||||
FP_TO_INT_ROUND_D(vc.wp[1], DB, 32,
|
||||
(func == EFDCTSF));
|
||||
(func == EFDCTSF) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -418,7 +420,7 @@ cmp_s:
|
|||
FP_CLEAR_EXCEPTIONS;
|
||||
FP_UNPACK_SP(SB, vb.wp + 1);
|
||||
|
||||
pr_debug("SB: %ld %08lx %ld (%ld)\n",
|
||||
pr_debug("SB: %d %08x %d (%d)\n",
|
||||
SB_s, SB_f, SB_e, SB_c);
|
||||
|
||||
FP_CONV(D, S, 2, 1, DR, SB);
|
||||
|
@ -432,7 +434,7 @@ cmp_s:
|
|||
FP_SET_EXCEPTION(FP_EX_INVALID);
|
||||
} else {
|
||||
FP_TO_INT_D(vc.dp[0], DB, 64,
|
||||
((func & 0x1) == 0));
|
||||
((func & 0x1) == 0) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -443,7 +445,7 @@ cmp_s:
|
|||
FP_SET_EXCEPTION(FP_EX_INVALID);
|
||||
} else {
|
||||
FP_TO_INT_ROUND_D(vc.wp[1], DB, 32,
|
||||
((func & 0x3) != 0));
|
||||
((func & 0x3) != 0) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -454,7 +456,7 @@ cmp_s:
|
|||
FP_SET_EXCEPTION(FP_EX_INVALID);
|
||||
} else {
|
||||
FP_TO_INT_D(vc.wp[1], DB, 32,
|
||||
((func & 0x3) != 0));
|
||||
((func & 0x3) != 0) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -464,7 +466,7 @@ cmp_s:
|
|||
break;
|
||||
|
||||
pack_d:
|
||||
pr_debug("DR: %ld %08lx %08lx %ld (%ld)\n",
|
||||
pr_debug("DR: %d %08x %08x %d (%d)\n",
|
||||
DR_s, DR_f1, DR_f0, DR_e, DR_c);
|
||||
|
||||
FP_PACK_DP(vc.dp, DR);
|
||||
|
@ -493,6 +495,7 @@ cmp_d:
|
|||
case XCR:
|
||||
FP_UNPACK_SP(SA0, va.wp);
|
||||
FP_UNPACK_SP(SA1, va.wp + 1);
|
||||
fallthrough;
|
||||
case XB:
|
||||
FP_UNPACK_SP(SB0, vb.wp);
|
||||
FP_UNPACK_SP(SB1, vb.wp + 1);
|
||||
|
@ -503,13 +506,13 @@ cmp_d:
|
|||
break;
|
||||
}
|
||||
|
||||
pr_debug("SA0: %ld %08lx %ld (%ld)\n",
|
||||
pr_debug("SA0: %d %08x %d (%d)\n",
|
||||
SA0_s, SA0_f, SA0_e, SA0_c);
|
||||
pr_debug("SA1: %ld %08lx %ld (%ld)\n",
|
||||
pr_debug("SA1: %d %08x %d (%d)\n",
|
||||
SA1_s, SA1_f, SA1_e, SA1_c);
|
||||
pr_debug("SB0: %ld %08lx %ld (%ld)\n",
|
||||
pr_debug("SB0: %d %08x %d (%d)\n",
|
||||
SB0_s, SB0_f, SB0_e, SB0_c);
|
||||
pr_debug("SB1: %ld %08lx %ld (%ld)\n",
|
||||
pr_debug("SB1: %d %08x %d (%d)\n",
|
||||
SB1_s, SB1_f, SB1_e, SB1_c);
|
||||
|
||||
switch (func) {
|
||||
|
@ -568,7 +571,7 @@ cmp_d:
|
|||
} else {
|
||||
SB0_e += (func == EVFSCTSF ? 31 : 32);
|
||||
FP_TO_INT_ROUND_S(vc.wp[0], SB0, 32,
|
||||
(func == EVFSCTSF));
|
||||
(func == EVFSCTSF) ? 1 : 0);
|
||||
}
|
||||
if (SB1_c == FP_CLS_NAN) {
|
||||
vc.wp[1] = 0;
|
||||
|
@ -576,7 +579,7 @@ cmp_d:
|
|||
} else {
|
||||
SB1_e += (func == EVFSCTSF ? 31 : 32);
|
||||
FP_TO_INT_ROUND_S(vc.wp[1], SB1, 32,
|
||||
(func == EVFSCTSF));
|
||||
(func == EVFSCTSF) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -587,14 +590,14 @@ cmp_d:
|
|||
FP_SET_EXCEPTION(FP_EX_INVALID);
|
||||
} else {
|
||||
FP_TO_INT_ROUND_S(vc.wp[0], SB0, 32,
|
||||
((func & 0x3) != 0));
|
||||
((func & 0x3) != 0) ? 1 : 0);
|
||||
}
|
||||
if (SB1_c == FP_CLS_NAN) {
|
||||
vc.wp[1] = 0;
|
||||
FP_SET_EXCEPTION(FP_EX_INVALID);
|
||||
} else {
|
||||
FP_TO_INT_ROUND_S(vc.wp[1], SB1, 32,
|
||||
((func & 0x3) != 0));
|
||||
((func & 0x3) != 0) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -605,14 +608,14 @@ cmp_d:
|
|||
FP_SET_EXCEPTION(FP_EX_INVALID);
|
||||
} else {
|
||||
FP_TO_INT_S(vc.wp[0], SB0, 32,
|
||||
((func & 0x3) != 0));
|
||||
((func & 0x3) != 0) ? 1 : 0);
|
||||
}
|
||||
if (SB1_c == FP_CLS_NAN) {
|
||||
vc.wp[1] = 0;
|
||||
FP_SET_EXCEPTION(FP_EX_INVALID);
|
||||
} else {
|
||||
FP_TO_INT_S(vc.wp[1], SB1, 32,
|
||||
((func & 0x3) != 0));
|
||||
((func & 0x3) != 0) ? 1 : 0);
|
||||
}
|
||||
goto update_regs;
|
||||
|
||||
|
@ -622,9 +625,9 @@ cmp_d:
|
|||
break;
|
||||
|
||||
pack_vs:
|
||||
pr_debug("SR0: %ld %08lx %ld (%ld)\n",
|
||||
pr_debug("SR0: %d %08x %d (%d)\n",
|
||||
SR0_s, SR0_f, SR0_e, SR0_c);
|
||||
pr_debug("SR1: %ld %08lx %ld (%ld)\n",
|
||||
pr_debug("SR1: %d %08x %d (%d)\n",
|
||||
SR1_s, SR1_f, SR1_e, SR1_c);
|
||||
|
||||
FP_PACK_SP(vc.wp, SR0);
|
||||
|
|
|
@ -662,12 +662,14 @@ do { \
|
|||
if (X##_e < 0) \
|
||||
{ \
|
||||
FP_SET_EXCEPTION(FP_EX_INEXACT); \
|
||||
fallthrough; \
|
||||
case FP_CLS_ZERO: \
|
||||
r = 0; \
|
||||
} \
|
||||
else if (X##_e >= rsize - (rsigned > 0 || X##_s) \
|
||||
|| (!rsigned && X##_s)) \
|
||||
{ /* overflow */ \
|
||||
fallthrough; \
|
||||
case FP_CLS_NAN: \
|
||||
case FP_CLS_INF: \
|
||||
if (rsigned == 2) \
|
||||
|
@ -767,6 +769,7 @@ do { \
|
|||
if (X##_e >= rsize - (rsigned > 0 || X##_s) \
|
||||
|| (!rsigned && X##_s)) \
|
||||
{ /* overflow */ \
|
||||
fallthrough; \
|
||||
case FP_CLS_NAN: \
|
||||
case FP_CLS_INF: \
|
||||
if (!rsigned) \
|
||||
|
|
Loading…
Reference in New Issue