Module Name: src Committed By: nat Date: Sun Mar 30 04:44:26 UTC 2025
Modified Files: src/sys/arch/m68k/m68k: switch_subr.s Log Message: Sprinkle nop. This is the kernel part of addressing the issue with fpu emulation on lc040 cpus. The idea is that we might be switch from or to an f-line (MMU/FPU Trap) instruction so prepend a nop to flush the caches. Addresses part of PR/13078. The second part to this (patch to binutils/gas) has been submitted upstream and will be fixed when this part is reviewed and included in our local copy of binutils or (hopefully) in a later version of binutils from upstream. See: https://sourceware.org/pipermail/binutils/2025-March/140270.html To generate a diff of this commit: cvs rdiff -u -r1.38 -r1.39 src/sys/arch/m68k/m68k/switch_subr.s Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/m68k/m68k/switch_subr.s diff -u src/sys/arch/m68k/m68k/switch_subr.s:1.38 src/sys/arch/m68k/m68k/switch_subr.s:1.39 --- src/sys/arch/m68k/m68k/switch_subr.s:1.38 Thu Oct 31 07:30:28 2024 +++ src/sys/arch/m68k/m68k/switch_subr.s Sun Mar 30 04:44:26 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: switch_subr.s,v 1.38 2024/10/31 07:30:28 isaki Exp $ */ +/* $NetBSD: switch_subr.s,v 1.39 2025/03/30 04:44:26 nat Exp $ */ /* * Copyright (c) 2001 The NetBSD Foundation. @@ -80,6 +80,7 @@ GLOBAL(masterpaddr) | XXXcompatibility ASENTRY_NOPROFILE(cpu_idle) stop #PSL_LOWIPL GLOBAL(_Idle) /* For sun2/sun3's clock.c ... */ + nop rts /* @@ -207,6 +208,7 @@ ENTRY(cpu_switchto) .Lcpu_switch_nofprest: movl %d1,%d0 | return outgoing lwp movl %d0,%a0 | (in a0, too) + nop rts /* @@ -255,6 +257,7 @@ ENTRY(savectx) #endif /* FPCOPROC */ #endif /* !_M68K_CUSTOM_FPU_CTX */ moveq #0,%d0 | return 0 + nop rts #if !defined(M68010) @@ -286,6 +289,7 @@ ENTRY(m68k_make_fpu_idle_frame) frestore (%sp) fnop addql #4,%sp + nop rts #endif @@ -307,6 +311,7 @@ ENTRY(m68881_save) fmovem %fp0-%fp7,FPF_REGS(%a0) | save FP general registers fmovem %fpcr/%fpsr/%fpi,FPF_FPCR(%a0) | save FP control registers .Lm68881sdone: + nop rts #endif #if defined(M68060) @@ -318,6 +323,7 @@ ENTRY(m68881_save) fmovem %fpsr,FPF_FPSR(%a0) fmovem %fpi,FPF_FPI(%a0) .Lm68060sdone: + nop rts #endif @@ -335,6 +341,7 @@ ENTRY(m68881_restore) fmovem FPF_REGS(%a0),%fp0-%fp7 | restore FP general registers .Lm68881rdone: frestore (%a0) | restore state + nop rts #endif #if defined(M68060) @@ -347,6 +354,7 @@ ENTRY(m68881_restore) fmovem FPF_REGS(%a0),%fp0-%fp7 | restore FP general registers .Lm68060fprdone: frestore (%a0) | restore state + nop rts #endif #endif