Re: [PATCH] arch/mips/kernel/traps: add CONFIG_MIPS_FP_SUPPORT when using handle_fpe

From: Maciej W. Rozycki
Date: Tue Apr 26 2022 - 20:40:21 EST


On Tue, 26 Apr 2022, Stephen Zhang wrote:

> diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
> index 246c6a6b0261..ef9792261f91 100644
> --- a/arch/mips/kernel/traps.c
> +++ b/arch/mips/kernel/traps.c
> @@ -90,7 +90,9 @@ extern asmlinkage void handle_cpu(void);
> extern asmlinkage void handle_ov(void);
> extern asmlinkage void handle_tr(void);
> extern asmlinkage void handle_msa_fpe(void);
> +#ifdef CONFIG_MIPS_FP_SUPPORT
> extern asmlinkage void handle_fpe(void);
> +#endif

No need to conditionalise declarations ever.

> @@ -2489,8 +2491,10 @@ void __init trap_init(void)
> if (board_nmi_handler_setup)
> board_nmi_handler_setup();
>
> +#ifdef CONFIG_MIPS_FP_SUPPORT
> if (cpu_has_fpu && !cpu_has_nofpuex)
> set_except_vector(EXCCODE_FPE, handle_fpe);
> +#endif

No need to conditionalise this either, because `cpu_has_fpu' is forced 0
(in arch/mips/include/asm/cpu-features.h) if !CONFIG_MIPS_FP_SUPPORT. So
this code translates to:

if (0 && !0)
set_except_vector(15, handle_fpe);

in the preprocessor if CONFIG_MIPS_FP_SUPPORT is unset and is optimised
away. Otherwise it should be written as:

if (IS_ENABLED(CONFIG_MIPS_FP_SUPPORT) && ...

so as not to clutter C code with #ifdef, as per our coding style.

Maciej