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

From: Dima Panov <fluffy_at_FreeBSD.org>
Date: Thu, 20 Aug 2026 15:40:43 UTC
Hello!

At least it badly affected aarch64 build on Apple Silicon in VMWare guest and always set LDFLAGS += -Wl,--fix-cortex-a53-843419

However here is no cortex cores at all:
$ dmesg | grep CPU
Starting CPU 1 (10000)
Starting CPU 2 (20000)
Starting CPU 3 (30000)
Starting CPU 4 (40000)
Starting CPU 5 (50000)
FreeBSD/SMP: Multiprocessor System Detected: 6 CPUs
cpu0: <ACPI CPU> on acpi0
CPU  0: Apple Unknown CPU r0p0 (midr: 610f0000) affinity:  0  0  0
CPU  1: Apple Unknown CPU r0p0 (midr: 610f0000) affinity:  1  0  0
CPU  2: Apple Unknown CPU r0p0 (midr: 610f0000) affinity:  2  0  0
CPU  3: Apple Unknown CPU r0p0 (midr: 610f0000) affinity:  3  0  0
CPU  4: Apple Unknown CPU r0p0 (midr: 610f0000) affinity:  4  0  0
CPU  5: Apple Unknown CPU r0p0 (midr: 610f0000) affinity:  5  0  0

Some rust and go ports now failed with error "flag provided but not defined: -Wl,--fix-cortex-a53-843419", see www/gitea or lang/rust-bootstrap for example


On 14.07.2026 18:49, Andrew Turner wrote:
> 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

-- 
Sincerely,
Dima (fluffy@FreeBSD.org, https://t.me/FluffyBSD, @fluffy:matrix-dev.freebsd.org)
(desktop, kde, x11, office, ports-secteam)@FreeBSD team