[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