mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 18:26:42 +00:00
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);
|
setcc(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void FPU_ST0_illegal(FPU_REG *st0_ptr, u_char st0_tag)
|
||||||
|
{
|
||||||
|
FPU_illegal();
|
||||||
|
}
|
||||||
|
|
||||||
static FUNC_ST0 const fp_etc_table[] = {
|
static FUNC_ST0 const fp_etc_table[] = {
|
||||||
fchs, fabs, (FUNC_ST0) FPU_illegal, (FUNC_ST0) FPU_illegal,
|
fchs, fabs, FPU_ST0_illegal, FPU_ST0_illegal,
|
||||||
ftst_, fxam, (FUNC_ST0) FPU_illegal, (FUNC_ST0) FPU_illegal
|
ftst_, fxam, FPU_ST0_illegal, FPU_ST0_illegal,
|
||||||
};
|
};
|
||||||
|
|
||||||
void FPU_etc(void)
|
void FPU_etc(void)
|
||||||
|
@ -433,13 +433,13 @@ static void fxtract(FPU_REG *st0_ptr, u_char st0_tag)
|
|||||||
#endif /* PARANOID */
|
#endif /* PARANOID */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fdecstp(void)
|
static void fdecstp(FPU_REG *st0_ptr, u_char st0_tag)
|
||||||
{
|
{
|
||||||
clear_C1();
|
clear_C1();
|
||||||
top--;
|
top--;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fincstp(void)
|
static void fincstp(FPU_REG *st0_ptr, u_char st0_tag)
|
||||||
{
|
{
|
||||||
clear_C1();
|
clear_C1();
|
||||||
top++;
|
top++;
|
||||||
@ -1631,7 +1631,7 @@ static void fscale(FPU_REG *st0_ptr, u_char st0_tag)
|
|||||||
|
|
||||||
static FUNC_ST0 const trig_table_a[] = {
|
static FUNC_ST0 const trig_table_a[] = {
|
||||||
f2xm1, fyl2x, fptan, fpatan,
|
f2xm1, fyl2x, fptan, fpatan,
|
||||||
fxtract, fprem1, (FUNC_ST0) fdecstp, (FUNC_ST0) fincstp
|
fxtract, fprem1, fdecstp, fincstp,
|
||||||
};
|
};
|
||||||
|
|
||||||
void FPU_triga(void)
|
void FPU_triga(void)
|
||||||
|
@ -108,8 +108,13 @@ static void fldz(int rc)
|
|||||||
|
|
||||||
typedef void (*FUNC_RC) (int);
|
typedef void (*FUNC_RC) (int);
|
||||||
|
|
||||||
|
static void FPU_RC_illegal(int unused)
|
||||||
|
{
|
||||||
|
FPU_illegal();
|
||||||
|
}
|
||||||
|
|
||||||
static FUNC_RC constants_table[] = {
|
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)
|
void fconst(void)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user