NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-sgimips/60204: sgimips: arcbios calls require FPU to be enabled



On 22/04/2026 19:55, Adrian Chadd via gnats wrote:
> The following reply was made to PR port-sgimips/60204; it has been noted by GNATS.
> From: Adrian Chadd <adrian%freebsd.org@localhost>
> To: gnats-bugs%netbsd.org@localhost
> Cc:
> Subject: Re: port-sgimips/60204: sgimips: arcbios calls require FPU to be enabled
> Date: Wed, 22 Apr 2026 11:53:34 -0700
>  Ok, let's try this one.

Still think my patch is relevant.

Also, why doesn't your patch restore FP enable state rather than always disabling it? That is, can it be enabled on entry to an arcbios call?

Actually, wouldn't restoring it be less instructions too... no need for second mfc0 k0, MIPS_COP_0_STATUS and hazard

>    ```
>    diff --git a/sys/dev/arcbios/arcbios_calls.S b/sys/dev/arcbios/arcbios_calls.S
>  index c184d9786daaf..0bf715212ec36 100644
>  --- a/sys/dev/arcbios/arcbios_calls.S
>  +++ b/sys/dev/arcbios/arcbios_calls.S
>  @@ -32,6 +32,9 @@
>   #include <sys/cdefs.h>
>   #include <machine/asm.h>
>    +#include <mips/asm.h>
>  +#include <mips/cpuregs.h>
>  +
>   #include "assym.h"
>     RCSID("$NetBSD: arcbios_calls.S,v 1.6 2026/01/11 06:41:42 tsutsui Exp $")
>  @@ -56,6 +59,13 @@ NESTED(arcbios_4orless_args, CALLFRAME_SIZ, ra)
>    REG_S ra, CALLFRAME_RA(sp)
>    REG_S s0, CALLFRAME_SP(sp)
>    + /* Enable FPU - see PR port-sgimips/60204 */
>  + mfc0 k0, MIPS_COP_0_STATUS
>  + MFC0_HAZARD
>  + or k0, MIPS_SR_COP_1_BIT
>  + mtc0 k0, MIPS_COP_0_STATUS
>  + COP0_HAZARD_FPUENABLE
>  +
>    PTR_L t9, _C_LABEL(ARCBIOS)
>    nop
>    PTR_ADDU t9, t0
>  @@ -67,6 +77,12 @@ NESTED(arcbios_4orless_args, CALLFRAME_SIZ, ra)
>      FIX_V0
>    + /* Disable FPU */
>  + mfc0 k0, MIPS_COP_0_STATUS
>  + MFC0_HAZARD
>  + and k0, ~MIPS_SR_COP_1_BIT
>  + mtc0 k0, MIPS_COP_0_STATUS
>  +
>    move MIPS_CURLWP, s0
>      REG_L ra, CALLFRAME_RA(sp)
>  @@ -98,6 +114,13 @@ NESTED(arcbios_5to8_args, CALLFRAME2_SIZ, ra)
>    INT_S a7, 28(sp) # save 8th arg on stack (o32)
>   #endif
>    + /* Enable FPU - see PR port-sgimips/60204 */
>  + mfc0 k0, MIPS_COP_0_STATUS
>  + MFC0_HAZARD
>  + or k0, MIPS_SR_COP_1_BIT
>  + mtc0 k0, MIPS_COP_0_STATUS
>  + COP0_HAZARD_FPUENABLE
>  +
>    PTR_L t9, _C_LABEL(ARCBIOS)
>    nop
>    PTR_ADDU t9, t0
>  @@ -109,6 +132,12 @@ NESTED(arcbios_5to8_args, CALLFRAME2_SIZ, ra)
>      FIX_V0
>    + /* Disable FPU */
>  + mfc0 k0, MIPS_COP_0_STATUS
>  + MFC0_HAZARD
>  + and k0, ~MIPS_SR_COP_1_BIT
>  + mtc0 k0, MIPS_COP_0_STATUS
>  +
>    move MIPS_CURLWP, s0
>      REG_L ra, CALLFRAME2_RA(sp)
>    ```
>  




Home | Main Index | Thread Index | Old Index