commit 03e70decd6736c5047df09f04d024a3de63a6c6a
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Thu Sep 28 00:00:40 2023 +0200

    x86_64: remove more unneeded segment selectors handling on full 64bit
    
    This follows aaa33bd1ef300380279d9e2875b61a7abaf2c88d

diff --git a/i386/i386/pcb.c b/i386/i386/pcb.c
index 9576c147..e8901550 100644
--- a/i386/i386/pcb.c
+++ b/i386/i386/pcb.c
@@ -492,10 +492,12 @@ kern_return_t thread_setstatus(
 		     */
 		    state->cs &= 0xffff;
 		    state->ss &= 0xffff;
+#if !defined(__x86_64__) || defined(USER32)
 		    state->ds &= 0xffff;
 		    state->es &= 0xffff;
 		    state->fs &= 0xffff;
 		    state->gs &= 0xffff;
+#endif
 
 		    if (state->cs == 0 || (state->cs & SEL_PL) != SEL_PL_U
 		     || state->ss == 0 || (state->ss & SEL_PL) != SEL_PL_U)
commit b78e0fc8201610a7a17a163701ac06422c0a74b0
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Thu Sep 28 00:12:40 2023 +0200

    x86_64: Drop segments from thread status
    
    They are useless on x86_64.

diff --git a/i386/include/mach/i386/thread_status.h b/i386/include/mach/i386/thread_status.h
index 32e40686..94596a74 100644
--- a/i386/include/mach/i386/thread_status.h
+++ b/i386/include/mach/i386/thread_status.h
@@ -64,11 +64,6 @@
  * i386_THREAD_STATE and i386_REGS_SEGS_STATE.
  */
 struct i386_thread_state {
-	unsigned int	gs;
-	unsigned int	fs;
-	unsigned int	es;
-	unsigned int	ds;
-
 #if defined(__x86_64__) && !defined(USER32)
 	uint64_t	r8;
 	uint64_t	r9;
@@ -88,6 +83,11 @@ struct i386_thread_state {
 	uint64_t	rax;
 	uint64_t	rip;
 #else
+	unsigned int	gs;
+	unsigned int	fs;
+	unsigned int	es;
+	unsigned int	ds;
+
 	unsigned int	edi;
 	unsigned int	esi;
 	unsigned int	ebp;
diff --git a/x86_64/include/mach/x86_64/thread_status.h b/x86_64/include/mach/x86_64/thread_status.h
index 32e40686..94596a74 100644
--- a/x86_64/include/mach/x86_64/thread_status.h
+++ b/x86_64/include/mach/x86_64/thread_status.h
@@ -64,11 +64,6 @@
  * i386_THREAD_STATE and i386_REGS_SEGS_STATE.
  */
 struct i386_thread_state {
-	unsigned int	gs;
-	unsigned int	fs;
-	unsigned int	es;
-	unsigned int	ds;
-
 #if defined(__x86_64__) && !defined(USER32)
 	uint64_t	r8;
 	uint64_t	r9;
@@ -88,6 +83,11 @@ struct i386_thread_state {
 	uint64_t	rax;
 	uint64_t	rip;
 #else
+	unsigned int	gs;
+	unsigned int	fs;
+	unsigned int	es;
+	unsigned int	ds;
+
 	unsigned int	edi;
 	unsigned int	esi;
 	unsigned int	ebp;
