base/dispatch-x86ish.S (dispatch_x86ish_xgetbv): Preserve `edi' on i386.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 10 Mar 2024 14:58:19 +0000 (14:58 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 10 Mar 2024 16:04:50 +0000 (16:04 +0000)
Oh, dear!  This broke the world on 32-bit x86 and I didn't notice.
Definite brown-paper-bag time.

base/dispatch-x86ish.S

index 9510f96..8a4c7b2 100644 (file)
@@ -164,8 +164,9 @@ FUNC(dispatch_x86ish_xgetbv)
 
 #if CPUFAM_X86
 #  define Z_OUT edi
-       mov     edi, [esp + 4]
-       mov     ecx, [esp + 8]
+       pushreg edi
+       mov     edi, [esp + 8]
+       mov     ecx, [esp + 12]
 #endif
 #if CPUFAM_AMD64 && ABI_SYSV
 #  define Z_OUT rdi
@@ -182,6 +183,9 @@ FUNC(dispatch_x86ish_xgetbv)
        mov     [Z_OUT + 0], eax
        mov     [Z_OUT + 4], edx
 
+#if CPUFAM_X86
+       popreg  edi
+#endif
        ret
 
 #undef Z_OUT