From 346a380129e3ac30c1e86089a12ca63eec81e5e7 Mon Sep 17 00:00:00 2001 From: Luca Dariz Date: Sat, 9 Mar 2024 15:02:42 +0100 Subject: x86_64: split SET_KERNEL_SEGMENTS() for NCPU > 1 This allows 32on64 to work again. Also, it's a clearer indication of a missing part. Message-ID: <20240309140244.347835-1-luca@orpolo.org> --- x86_64/locore.S | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'x86_64') diff --git a/x86_64/locore.S b/x86_64/locore.S index 806762bb..8f39a677 100644 --- a/x86_64/locore.S +++ b/x86_64/locore.S @@ -163,17 +163,21 @@ #define POP_SEGMENTS_ISR(reg) #endif +#if NCPUS > 1 +#define SET_KERNEL_SEGMENTS(reg) \ + ud2 /* TODO: use swapgs or similar */ +#else // NCPUS > 1 #ifdef USER32 #define SET_KERNEL_SEGMENTS(reg) \ mov %ss,reg /* switch to kernel segments */ ;\ mov reg,%ds /* (same as kernel stack segment) */ ;\ mov reg,%es ;\ mov reg,%fs ;\ - mov $(PERCPU_DS),reg ;\ mov reg,%gs -#else +#else // USER32 #define SET_KERNEL_SEGMENTS(reg) -#endif +#endif // USER32 +#endif // NCPUS > 1 /* * Fault recovery. -- cgit v1.2.3