Signed-off-by: Chip Davis cdavis5x@gmail.com --- dlls/ntdll/unix/thread.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c index 451402159d46..3e9e4d740e6a 100644 --- a/dlls/ntdll/unix/thread.c +++ b/dlls/ntdll/unix/thread.c @@ -2285,6 +2285,21 @@ ULONG WINAPI NtGetCurrentProcessorNumber(void) if (res != -1) return processor; #endif
+#if defined(__APPLE__) && (defined(__i386__) || defined(__x86_64__)) + /* A little known feature of macOS is that it will stash the CPU number + * in the low 12 bits of the IDTR's limit field. + */ +#include "pshpack1.h" + struct + { + USHORT limit; + ULONG_PTR base; + } idtr; +#include "poppack.h" + asm("sidt %0" : "=m" (idtr)); + return idtr.limit & 0xfff; +#endif + if (peb->NumberOfProcessors > 1) { ULONG_PTR thread_mask, processor_mask;