[RFC PATCH 4/4] ntdll: Restore CPSR in ARM syscall dispatcher.

Jinoh Kang jinoh.kang.kr at gmail.com
Tue Feb 8 12:19:22 CST 2022


Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
---
 dlls/ntdll/unix/signal_arm.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c
index 9bd03cc8aae..9e8a227f2e6 100644
--- a/dlls/ntdll/unix/signal_arm.c
+++ b/dlls/ntdll/unix/signal_arm.c
@@ -1206,9 +1206,11 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher,
                    "3:\n\t"
 #endif
                    "tst ip, #2\n\t"                 /* CONTEXT_INTEGER */
-                   "it ne\n\t"
-                   "ldmne r8, {r0-r3}\n\t"
-                   "ldrd sp, lr, [r8, #0x38]!\n\t"
+                   "beq 3f\n\t"
+                   "ldr r4, [r8, #0x40]\n\t"
+                   "ldm r8, {r0-r3}\n\t"
+                   "msr cpsr_fsxc, r4\n"
+                   "3:\tldrd sp, lr, [r8, #0x38]!\n\t"
                    "ldmdb r8, {r4-r12,pc}\n"
                    "5:\tmovw r0, #0x000d\n\t" /* STATUS_INVALID_PARAMETER */
                    "movt r0, #0xc000\n\t"
-- 
2.35.1




More information about the wine-devel mailing list