git: f1e8b0ff4e13 - main - bsd.cpu.mk: Add a workaround for erratum 843419

From: Andrew Turner <andrew_at_FreeBSD.org>
Date: Tue, 14 Jul 2026 15:49:08 UTC
The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=f1e8b0ff4e13b52c5e41a5eea3e686410af3dd0b

commit f1e8b0ff4e13b52c5e41a5eea3e686410af3dd0b
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2026-07-14 15:07:30 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2026-07-14 15:47:15 +0000

    bsd.cpu.mk: Add a workaround for erratum 843419
    
    Add a workaround for the Arm Cortex-A53 erratum 843419. This has been
    targeted when the build is either unoptimised for any CPU/architecture
    or targets the Cortex-A53 or ARMv8.0 architecture.
    
    PR:             296240
    PR:             296395
    Reported by:    Hal Murray <halmurray+freebsd@sonic.net>
    Reported by:    Andreas Schuh <x55839@icloud.com>
    Reviewed by:    cognet, mmel
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D58212
---
 share/mk/bsd.cpu.mk | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/share/mk/bsd.cpu.mk b/share/mk/bsd.cpu.mk
index 33587b6ba25a..b743d3e71a36 100644
--- a/share/mk/bsd.cpu.mk
+++ b/share/mk/bsd.cpu.mk
@@ -6,7 +6,7 @@
 .if !defined(CPUTYPE) || empty(CPUTYPE)
 _CPUCFLAGS =
 . if ${MACHINE_CPUARCH} == "aarch64"
-MACHINE_CPU = arm64
+MACHINE_CPU = arm64 cortexa53
 . elif ${MACHINE_CPUARCH} == "amd64"
 MACHINE_CPU = amd64 sse2 sse mmx
 . elif ${MACHINE_CPUARCH} == "arm"
@@ -124,6 +124,14 @@ _CPUCFLAGS = -mcpu=${CPUTYPE}
 . elif ${MACHINE_ARCH:Mpowerpc64*} != ""
 _CPUCFLAGS = -mcpu=${CPUTYPE}
 . elif ${MACHINE_CPUARCH} == "aarch64"
+MACHINE_CPU = arm64
+.  if ${CPUTYPE} == "generic"
+MACHINE_CPU += cortexa53
+.  elif ${CPUTYPE} == "armv8-a"
+MACHINE_CPU += cortexa53
+.  elif ${CPUTYPE:M*cortex-a53*} != ""
+MACHINE_CPU += cortexa53
+.  endif
 .  if ${CPUTYPE:Marmv*} != ""
 # Use -march when the CPU type is an architecture value, e.g. armv8.1-a
 _CPUCFLAGS = -march=${CPUTYPE}
@@ -302,6 +310,14 @@ MACHINE_CPU = riscv
 . endif
 .endif
 
+########## arm64/aarch64
+.if ${MACHINE_CPUARCH} == "aarch64"
+# Add the Cortex-A53 erratum 843419 workaround if we are targeting it.
+. if ${MACHINE_CPU:Mcortexa53} != ""
+LDFLAGS += -Wl,--fix-cortex-a53-843419
+. endif
+.endif
+
 ########## arm
 .if ${MACHINE_CPUARCH} == "arm"
 MACHINE_CPU += arm