ソースを参照

Fix build on arm64ec.

Esme Povirk 2 ヶ月 前
コミット
3fc8509b36
2 ファイル変更4 行追加4 行削除
  1. 1 1
      include/SDL3/SDL_atomic.h
  2. 3 3
      src/cpuinfo/SDL_cpuinfo.c

+ 1 - 1
include/SDL3/SDL_atomic.h

@@ -355,7 +355,7 @@ typedef void (*SDL_KernelMemoryBarrierFunc)();
  */
 #define SDL_CPUPauseInstruction() DoACPUPauseInACompilerAndArchitectureSpecificWay
 
-#elif (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))
+#elif (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__)) && !defined(__arm64ec__)
     #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n")  /* Some assemblers can't do REP NOP, so go with PAUSE. */
 #elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__)
     #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory")

+ 3 - 3
src/cpuinfo/SDL_cpuinfo.c

@@ -154,7 +154,7 @@ static int CPU_haveCPUID(void)
     :
     : "%eax", "%ecx"
     );
-#elif (defined(__GNUC__) || defined(__llvm__)) && defined(__x86_64__)
+#elif (defined(__GNUC__) || defined(__llvm__)) && defined(__x86_64__) && !defined(__arm64ec__)
 /* Technically, if this is being compiled under __x86_64__ then it has
    CPUid by definition.  But it's nice to be able to prove it.  :)      */
     __asm__ (
@@ -237,7 +237,7 @@ done:
         "        popl %%ebx         \n"      \
         : "=a"(a), "=S"(b), "=c"(c), "=d"(d) \
         : "a"(func))
-#elif (defined(__GNUC__) || defined(__llvm__)) && defined(__x86_64__)
+#elif (defined(__GNUC__) || defined(__llvm__)) && defined(__x86_64__) && !defined(__arm64ec__)
 #define cpuid(func, a, b, c, d)              \
     __asm__ __volatile__(                    \
         "        pushq %%rbx        \n"      \
@@ -304,7 +304,7 @@ static void CPU_calcCPUIDFeatures(void)
                 // Check to make sure we can call xgetbv
                 if (c & 0x08000000) {
                     // Call xgetbv to see if YMM (etc) register state is saved
-#if (defined(__GNUC__) || defined(__llvm__)) && (defined(__i386__) || defined(__x86_64__))
+#if (defined(__GNUC__) || defined(__llvm__)) && (defined(__i386__) || defined(__x86_64__)) && !defined(__arm64ec__)
                     __asm__(".byte 0x0f, 0x01, 0xd0"
                             : "=a"(a)
                             : "c"(0)