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