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



The following reply was made to PR port-sgimips/60204; it has been noted by GNATS.

From: Nick Hudson <nick.hudson%gmx.co.uk@localhost>
To: gnats-bugs%netbsd.org@localhost,
 port-sgimips-maintainer%netbsd.org@localhost,
 gnats-admin%netbsd.org@localhost,
 netbsd-bugs%netbsd.org@localhost,
 adrian%freebsd.org@localhost
Cc: 
Subject: Re: port-sgimips/60204: sgimips: arcbios calls require FPU to be
 enabled
Date: Thu, 30 Apr 2026 06:59:57 +0100

 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)
 >    ```
 > =20
 



Home | Main Index | Thread Index | Old Index