Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Jun 2025 09:25:40 GMT
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: fc04d82226e5 - main - arm64: Add AT_HWCAP3 and AT_HWCAP4 support
Message-ID:  <202506250925.55P9PeMI077257@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by andrew:

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

commit fc04d82226e5844fcf57d681b711e47e38b5f7c4
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2025-06-24 14:57:08 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2025-06-24 16:26:40 +0000

    arm64: Add AT_HWCAP3 and AT_HWCAP4 support
    
    The adds the parts needed to export the new AT_HWCAP3 and 4 from the
    kernel.
    
    Reviewed by:    brooks, imp, kib
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D51008
---
 sys/arm64/arm64/elf_machdep.c  | 8 ++++++--
 sys/arm64/include/md_var.h     | 4 ++++
 sys/arm64/linux/linux.h        | 2 +-
 sys/arm64/linux/linux_sysvec.c | 6 ++++--
 4 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/sys/arm64/arm64/elf_machdep.c b/sys/arm64/arm64/elf_machdep.c
index 6ca8a711839f..970dba0ca7d9 100644
--- a/sys/arm64/arm64/elf_machdep.c
+++ b/sys/arm64/arm64/elf_machdep.c
@@ -57,9 +57,13 @@
 
 u_long __read_frequently elf_hwcap;
 u_long __read_frequently elf_hwcap2;
+u_long __read_frequently elf_hwcap3;
+u_long __read_frequently elf_hwcap4;
 /* TODO: Move to a better location */
 u_long __read_frequently linux_elf_hwcap;
 u_long __read_frequently linux_elf_hwcap2;
+u_long __read_frequently linux_elf_hwcap3;
+u_long __read_frequently linux_elf_hwcap4;
 
 struct arm64_addr_mask elf64_addr_mask;
 
@@ -101,8 +105,8 @@ static struct sysentvec elf64_freebsd_sysvec = {
 	.sv_trap	= NULL,
 	.sv_hwcap	= &elf_hwcap,
 	.sv_hwcap2	= &elf_hwcap2,
-	.sv_hwcap3	= NULL,
-	.sv_hwcap4	= NULL,
+	.sv_hwcap3	= &elf_hwcap3,
+	.sv_hwcap4	= &elf_hwcap4,
 	.sv_onexec_old	= exec_onexec_old,
 	.sv_protect	= arm64_exec_protect,
 	.sv_onexit	= exit_onexit,
diff --git a/sys/arm64/include/md_var.h b/sys/arm64/include/md_var.h
index f9aaaeba7306..da136ff091db 100644
--- a/sys/arm64/include/md_var.h
+++ b/sys/arm64/include/md_var.h
@@ -37,8 +37,12 @@ extern char sigcode[];
 extern int szsigcode;
 extern u_long elf_hwcap;
 extern u_long elf_hwcap2;
+extern u_long elf_hwcap3;
+extern u_long elf_hwcap4;
 extern u_long linux_elf_hwcap;
 extern u_long linux_elf_hwcap2;
+extern u_long linux_elf_hwcap3;
+extern u_long linux_elf_hwcap4;
 #ifdef COMPAT_FREEBSD32
 extern u_long elf32_hwcap;
 extern u_long elf32_hwcap2;
diff --git a/sys/arm64/linux/linux.h b/sys/arm64/linux/linux.h
index d612ba8e5d9e..00a70fabc54f 100644
--- a/sys/arm64/linux/linux.h
+++ b/sys/arm64/linux/linux.h
@@ -77,7 +77,7 @@ typedef struct {
 #define	l_fd_set	fd_set
 
 /* Miscellaneous */
-#define	LINUX_AT_COUNT		21	/* Count of used aux entry types.
+#define	LINUX_AT_COUNT		23	/* Count of used aux entry types.
 					 * Keep this synchronized with
 					 * linux_copyout_auxargs() code.
 					 */
diff --git a/sys/arm64/linux/linux_sysvec.c b/sys/arm64/linux/linux_sysvec.c
index 13c42e061094..084b7a11b01f 100644
--- a/sys/arm64/linux/linux_sysvec.c
+++ b/sys/arm64/linux/linux_sysvec.c
@@ -156,6 +156,8 @@ linux64_arch_copyout_auxargs(struct image_params *imgp, Elf_Auxinfo **pos)
 	AUXARGS_ENTRY((*pos), LINUX_AT_SYSINFO_EHDR, linux_vdso_base);
 	AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP, *imgp->sysent->sv_hwcap);
 	AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP2, *imgp->sysent->sv_hwcap2);
+	AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP3, *imgp->sysent->sv_hwcap3);
+	AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP4, *imgp->sysent->sv_hwcap4);
 	AUXARGS_ENTRY((*pos), LINUX_AT_PLATFORM, PTROUT(linux_platform));
 }
 
@@ -458,8 +460,8 @@ struct sysentvec elf_linux_sysvec = {
 	.sv_trap	= NULL,
 	.sv_hwcap	= &linux_elf_hwcap,
 	.sv_hwcap2	= &linux_elf_hwcap2,
-	.sv_hwcap3	= NULL,
-	.sv_hwcap4	= NULL,
+	.sv_hwcap3	= &linux_elf_hwcap3,
+	.sv_hwcap4	= &linux_elf_hwcap4,
 	.sv_onexec	= linux_on_exec_vmspace,
 	.sv_onexit	= linux_on_exit,
 	.sv_ontdexit	= linux_thread_dtor,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202506250925.55P9PeMI077257>