aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShuai Xue <xueshuai@linux.alibaba.com>2022-08-19 18:52:09 +0800
committerShuai Xue <xueshuai@linux.alibaba.com>2022-08-25 09:03:49 +0800
commitb7b70cc62fb9737eff82fc191b6a0391b3f93b94 (patch)
tree494903e67c1308adcc8a9ff57be5f2b9480bcf4e
parentcb5e1bc7b56a54682765f8a8fac0e69a77231ca2 (diff)
downloadras-tools-b7b70cc62fb9737eff82fc191b6a0391b3f93b94.tar.gz
einj_mem_uc: implement memcpy in assembly on Arm64
There is only X86 assembly version of memcpy, add Arm64 version for memcpy case. Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
-rw-r--r--do_memcpy.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/do_memcpy.S b/do_memcpy.S
index e3dcf70..059e597 100644
--- a/do_memcpy.S
+++ b/do_memcpy.S
@@ -11,8 +11,20 @@ do_memcpy:
.size do_memcpy, .-do_memcpy
#elif __aarch64__
+dst .req x0
+src .req x1
+count .req x2
+tmp .req w3
+
+
.globl do_memcpy
do_memcpy:
+ cbz count, .Lexit
+ ldrb tmp, [src], #0x1
+ strb tmp, [dst], #0x1
+ sub count, count, #0x1
+ b.ge do_memcpy
+.Lexit:
ret
#endif