x86/math-emu: Fix function cast warnings
clang-16 warns about casting function pointers with incompatible prototypes. The x86 math-emu code does this in a number of places to call some trivial functions that need no arguments: arch/x86/math-emu/fpu_etc.c:124:14: error: cast from 'void (*)(void)' to 'FUNC_ST0' \ (aka 'void (*)(struct fpu__reg *, unsigned char)') converts to incompatible function \ type [-Werror,-Wcast-function-type-strict] 124 | fchs, fabs, (FUNC_ST0) FPU_illegal, (FUNC_ST0) FPU_illegal, | ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/math-emu/fpu_trig.c:1634:19: error: cast from 'void (*)(void)' to 'FUNC_ST0' \ (aka 'void (*)(struct fpu__reg *, unsigned char)') converts to incompatible function \ type [-Werror,-Wcast-function-type-strict] 1634 | fxtract, fprem1, (FUNC_ST0) fdecstp, (FUNC_ST0) fincstp | ^~~~~~~~~~~~~~~~~~ arch/x86/math-emu/reg_constant.c:112:53: error: cast from 'void (*)(void)' to 'FUNC_RC' \ (aka 'void (*)(int)') converts to incompatible function \ type [-Werror,-Wcast-function-type-strict] 112 | fld1, fldl2t, fldl2e, fldpi, fldlg2, fldln2, fldz, (FUNC_RC) FPU_illegal Change the fdecstp() and fincstp() functions to actually have the correct prototypes based on the caller, and add wrappers around FPU_illegal() for adapting those. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Link: https://lore.kernel.org/lkml/20240213095631.454543-1-arnd@kernel.org
This commit is contained in:
parent
cb517619f9
commit
e0ca9353a8
@ -120,9 +120,14 @@ static void fxam(FPU_REG *st0_ptr, u_char st0tag)
|
||||
setcc(c);
|
||||
}
|
||||
|
||||
static void FPU_ST0_illegal(FPU_REG *st0_ptr, u_char st0_tag)
|
||||
{
|
||||
FPU_illegal();
|
||||
}
|
||||
|
||||
static FUNC_ST0 const fp_etc_table[] = {
|
||||
fchs, fabs, (FUNC_ST0) FPU_illegal, (FUNC_ST0) FPU_illegal,
|
||||
ftst_, fxam, (FUNC_ST0) FPU_illegal, (FUNC_ST0) FPU_illegal
|
||||
fchs, fabs, FPU_ST0_illegal, FPU_ST0_illegal,
|
||||
ftst_, fxam, FPU_ST0_illegal, FPU_ST0_illegal,
|
||||
};
|
||||
|
||||
void FPU_etc(void)
|
||||
|
@ -433,13 +433,13 @@ static void fxtract(FPU_REG *st0_ptr, u_char st0_tag)
|
||||
#endif /* PARANOID */
|
||||
}
|
||||
|
||||
static void fdecstp(void)
|
||||
static void fdecstp(FPU_REG *st0_ptr, u_char st0_tag)
|
||||
{
|
||||
clear_C1();
|
||||
top--;
|
||||
}
|
||||
|
||||
static void fincstp(void)
|
||||
static void fincstp(FPU_REG *st0_ptr, u_char st0_tag)
|
||||
{
|
||||
clear_C1();
|
||||
top++;
|
||||
@ -1631,7 +1631,7 @@ static void fscale(FPU_REG *st0_ptr, u_char st0_tag)
|
||||
|
||||
static FUNC_ST0 const trig_table_a[] = {
|
||||
f2xm1, fyl2x, fptan, fpatan,
|
||||
fxtract, fprem1, (FUNC_ST0) fdecstp, (FUNC_ST0) fincstp
|
||||
fxtract, fprem1, fdecstp, fincstp,
|
||||
};
|
||||
|
||||
void FPU_triga(void)
|
||||
|
@ -108,8 +108,13 @@ static void fldz(int rc)
|
||||
|
||||
typedef void (*FUNC_RC) (int);
|
||||
|
||||
static void FPU_RC_illegal(int unused)
|
||||
{
|
||||
FPU_illegal();
|
||||
}
|
||||
|
||||
static FUNC_RC constants_table[] = {
|
||||
fld1, fldl2t, fldl2e, fldpi, fldlg2, fldln2, fldz, (FUNC_RC) FPU_illegal
|
||||
fld1, fldl2t, fldl2e, fldpi, fldlg2, fldln2, fldz, FPU_RC_illegal
|
||||
};
|
||||
|
||||
void fconst(void)
|
||||
|
Loading…
Reference in New Issue
Block a user