[RFC PATCH 3/4] ntdll: Use writeback addressing to eliminate ADD in ARM syscall dispatcher.

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


Shortened code leads to less time spent on instruction fetch and more
efficient I-cache utilization.

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

diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c
index c63f669668c..9bd03cc8aae 100644
--- a/dlls/ntdll/unix/signal_arm.c
+++ b/dlls/ntdll/unix/signal_arm.c
@@ -1208,9 +1208,8 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher,
                    "tst ip, #2\n\t"                 /* CONTEXT_INTEGER */
                    "it ne\n\t"
                    "ldmne r8, {r0-r3}\n\t"
-                   "ldrd sp, lr, [r8, #0x38]\n\t"
-                   "add r8, r8, #0x10\n\t"
-                   "ldm r8, {r4-r12,pc}\n"
+                   "ldrd 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"
                    "add sp, sp, #0x10\n\t"
-- 
2.35.1




More information about the wine-devel mailing list