The branch main has been updated by brooks:

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

commit 8d26a9da0c94f314b7e37a2784b13e2f5fb8052d
Author:     Brooks Davis <bro...@freebsd.org>
AuthorDate: 2025-08-08 17:15:21 +0000
Commit:     Brooks Davis <bro...@freebsd.org>
CommitDate: 2025-08-08 17:15:21 +0000

    amd64: assume the kernel supports RDFSBASE and RDGSBASE
    
    There is no need to support pre-12.0 (and thus pre-ino64) kernels in a
    15.x libc.
    
    Continue to check if the CPU supports these features before using them
    and fall back as required.
    
    Reviewed by:    kib
    Differential Revision:  https://reviews.freebsd.org/D50732
---
 lib/libsys/amd64/amd64_get_fsbase.c | 7 +------
 lib/libsys/amd64/amd64_get_gsbase.c | 7 +------
 lib/libsys/amd64/amd64_set_fsbase.c | 7 +------
 lib/libsys/amd64/amd64_set_gsbase.c | 7 +------
 libexec/rtld-elf/amd64/reloc.c      | 3 +--
 5 files changed, 5 insertions(+), 26 deletions(-)

diff --git a/lib/libsys/amd64/amd64_get_fsbase.c 
b/lib/libsys/amd64/amd64_get_fsbase.c
index 00f16a5e404f..b5e87f8a3ce5 100644
--- a/lib/libsys/amd64/amd64_get_fsbase.c
+++ b/lib/libsys/amd64/amd64_get_fsbase.c
@@ -30,7 +30,6 @@
  * SUCH DAMAGE.
  */
 
-#define _WANT_P_OSREL
 #include <sys/param.h>
 #include <machine/cpufunc.h>
 #include <machine/specialreg.h>
@@ -41,7 +40,6 @@
 static int
 amd64_get_fsbase_cpu(void **addr)
 {
-
        *addr = (void *)rdfsbase();
        return (0);
 }
@@ -49,15 +47,12 @@ amd64_get_fsbase_cpu(void **addr)
 static int
 amd64_get_fsbase_syscall(void **addr)
 {
-
        return (sysarch(AMD64_GET_FSBASE, addr));
 }
 
 DEFINE_UIFUNC(, int, amd64_get_fsbase, (void **))
 {
-
-       if (__getosreldate() >= P_OSREL_WRFSBASE &&
-           (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
+       if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
                return (amd64_get_fsbase_cpu);
        return (amd64_get_fsbase_syscall);
 }
diff --git a/lib/libsys/amd64/amd64_get_gsbase.c 
b/lib/libsys/amd64/amd64_get_gsbase.c
index ef135b1eed7f..51be412ddd7a 100644
--- a/lib/libsys/amd64/amd64_get_gsbase.c
+++ b/lib/libsys/amd64/amd64_get_gsbase.c
@@ -30,7 +30,6 @@
  * SUCH DAMAGE.
  */
 
-#define _WANT_P_OSREL
 #include <sys/param.h>
 #include <machine/cpufunc.h>
 #include <machine/specialreg.h>
@@ -41,7 +40,6 @@
 static int
 amd64_get_gsbase_cpu(void **addr)
 {
-
        *addr = (void *)rdgsbase();
        return (0);
 }
@@ -49,15 +47,12 @@ amd64_get_gsbase_cpu(void **addr)
 static int
 amd64_get_gsbase_syscall(void **addr)
 {
-
        return (sysarch(AMD64_GET_GSBASE, addr));
 }
 
 DEFINE_UIFUNC(, int, amd64_get_gsbase, (void **))
 {
-
-       if (__getosreldate() >= P_OSREL_WRFSBASE &&
-           (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
+       if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
                return (amd64_get_gsbase_cpu);
        return (amd64_get_gsbase_syscall);
 }
diff --git a/lib/libsys/amd64/amd64_set_fsbase.c 
b/lib/libsys/amd64/amd64_set_fsbase.c
index f1690fde6e17..5265bd712f17 100644
--- a/lib/libsys/amd64/amd64_set_fsbase.c
+++ b/lib/libsys/amd64/amd64_set_fsbase.c
@@ -30,7 +30,6 @@
  * SUCH DAMAGE.
  */
 
-#define _WANT_P_OSREL
 #include <sys/param.h>
 #include <machine/cpufunc.h>
 #include <machine/specialreg.h>
@@ -41,7 +40,6 @@
 static int
 amd64_set_fsbase_cpu(void *addr)
 {
-
        wrfsbase((uintptr_t)addr);
        return (0);
 }
@@ -49,15 +47,12 @@ amd64_set_fsbase_cpu(void *addr)
 static int
 amd64_set_fsbase_syscall(void *addr)
 {
-
        return (sysarch(AMD64_SET_FSBASE, &addr));
 }
 
 DEFINE_UIFUNC(, int, amd64_set_fsbase, (void *))
 {
-
-       if (__getosreldate() >= P_OSREL_WRFSBASE &&
-           (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
+       if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
                return (amd64_set_fsbase_cpu);
        return (amd64_set_fsbase_syscall);
 }
diff --git a/lib/libsys/amd64/amd64_set_gsbase.c 
b/lib/libsys/amd64/amd64_set_gsbase.c
index 756bbae18844..94f5736ed1ab 100644
--- a/lib/libsys/amd64/amd64_set_gsbase.c
+++ b/lib/libsys/amd64/amd64_set_gsbase.c
@@ -30,7 +30,6 @@
  * SUCH DAMAGE.
  */
 
-#define _WANT_P_OSREL
 #include <sys/param.h>
 #include <machine/cpufunc.h>
 #include <machine/specialreg.h>
@@ -41,7 +40,6 @@
 static int
 amd64_set_gsbase_cpu(void *addr)
 {
-
        wrgsbase((uintptr_t)addr);
        return (0);
 }
@@ -49,15 +47,12 @@ amd64_set_gsbase_cpu(void *addr)
 static int
 amd64_set_gsbase_syscall(void *addr)
 {
-
        return (sysarch(AMD64_SET_GSBASE, &addr));
 }
 
 DEFINE_UIFUNC(, int, amd64_set_gsbase, (void *))
 {
-
-       if (__getosreldate() >= P_OSREL_WRFSBASE &&
-           (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
+       if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
                return (amd64_set_gsbase_cpu);
        return (amd64_set_gsbase_syscall);
 }
diff --git a/libexec/rtld-elf/amd64/reloc.c b/libexec/rtld-elf/amd64/reloc.c
index 883e3dcdff88..b1a2069edb2f 100644
--- a/libexec/rtld-elf/amd64/reloc.c
+++ b/libexec/rtld-elf/amd64/reloc.c
@@ -548,8 +548,7 @@ allocate_initial_tls(Obj_Entry *objs)
         */
        if (__getosreldate() >= P_OSREL_TLSBASE)
                sysarch(AMD64_SET_TLSBASE, &addr);
-       else if (__getosreldate() >= P_OSREL_WRFSBASE &&
-           (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
+       else if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0)
                wrfsbase((uintptr_t)addr);
        else
                sysarch(AMD64_SET_FSBASE, &addr);

Reply via email to