You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/02/22 09:59:13 UTC

[incubator-nuttx] 01/02: arch/arm: replace SYS_syscall_return hardcode from syscall

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit e0fabbfdd6a55510eae265472fd992aba1c0b588
Author: chao.an <an...@xiaomi.com>
AuthorDate: Tue Feb 22 15:25:56 2022 +0800

    arch/arm: replace SYS_syscall_return hardcode from syscall
    
    Signed-off-by: chao.an <an...@xiaomi.com>
---
 arch/arm/src/armv6-m/arm_svcall.c  | 5 +++--
 arch/arm/src/armv7-a/arm_syscall.c | 5 +++--
 arch/arm/src/armv7-m/arm_svcall.c  | 5 +++--
 arch/arm/src/armv7-r/arm_syscall.c | 5 +++--
 arch/arm/src/armv8-m/arm_svcall.c  | 5 +++--
 5 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/arch/arm/src/armv6-m/arm_svcall.c b/arch/arm/src/armv6-m/arm_svcall.c
index 0339ccc..9f5447c 100644
--- a/arch/arm/src/armv6-m/arm_svcall.c
+++ b/arch/arm/src/armv6-m/arm_svcall.c
@@ -95,8 +95,9 @@ static void dispatch_syscall(void)
     " add sp, sp, #12\n"          /* Destroy the stack frame */
     " pop {r4, r5}\n"             /* Recover R4 and R5 */
     " mov r2, r0\n"               /* R2=Save return value in R2 */
-    " mov r0, #3\n"               /* R0=SYS_syscall_return */
-    " svc %0\n"::"i"(SYS_syscall) /* Return from the SYSCALL */
+    " mov r0, %0\n"               /* R0=SYS_syscall_return */
+    " svc %1\n"::"i"(SYS_syscall_return),
+                 "i"(SYS_syscall) /* Return from the SYSCALL */
   );
 }
 #endif
diff --git a/arch/arm/src/armv7-a/arm_syscall.c b/arch/arm/src/armv7-a/arm_syscall.c
index 9d2ddf4..24323bf 100644
--- a/arch/arm/src/armv7-a/arm_syscall.c
+++ b/arch/arm/src/armv7-a/arm_syscall.c
@@ -96,8 +96,9 @@ static void dispatch_syscall(void)
     " ldr lr, [sp, #12]\n"         /* Restore lr */
     " add sp, sp, #16\n"           /* Destroy the stack frame */
     " mov r2, r0\n"                /* R2=Save return value in R2 */
-    " mov r0, #0\n"                /* R0=SYS_syscall_return */
-    " svc %0\n"::"i"(SYS_syscall)  /* Return from the SYSCALL */
+    " mov r0, %0\n"                /* R0=SYS_syscall_return */
+    " svc %1\n"::"i"(SYS_syscall_return),
+                 "i"(SYS_syscall)  /* Return from the SYSCALL */
   );
 }
 #endif
diff --git a/arch/arm/src/armv7-m/arm_svcall.c b/arch/arm/src/armv7-m/arm_svcall.c
index 6119ee6..1330dc3 100644
--- a/arch/arm/src/armv7-m/arm_svcall.c
+++ b/arch/arm/src/armv7-m/arm_svcall.c
@@ -103,8 +103,9 @@ static void dispatch_syscall(void)
       " ldr r2, [sp, #16]\n"         /* Restore (orig_SP - new_SP) value */
       " add sp, sp, r2\n"            /* Restore SP */
       " mov r2, r0\n"                /* R2=Save return value in R2 */
-      " mov r0, #3\n"                /* R0=SYS_syscall_return */
-      " svc %0\n"::"i"(SYS_syscall)  /* Return from the SYSCALL */
+      " mov r0, %0\n"                /* R0=SYS_syscall_return */
+      " svc %1\n"::"i"(SYS_syscall_return),
+                   "i"(SYS_syscall)  /* Return from the SYSCALL */
     );
 }
 #endif
diff --git a/arch/arm/src/armv7-r/arm_syscall.c b/arch/arm/src/armv7-r/arm_syscall.c
index 32b48b2..06ddc27 100644
--- a/arch/arm/src/armv7-r/arm_syscall.c
+++ b/arch/arm/src/armv7-r/arm_syscall.c
@@ -93,8 +93,9 @@ static void dispatch_syscall(void)
     " ldr lr, [sp, #12]\n"         /* Restore lr */
     " add sp, sp, #16\n"           /* Destroy the stack frame */
     " mov r2, r0\n"                /* R2=Save return value in R2 */
-    " mov r0, #0\n"                /* R0=SYS_syscall_return */
-    " svc %0\n"::"i"(SYS_syscall)  /* Return from the SYSCALL */
+    " mov r0, %0\n"                /* R0=SYS_syscall_return */
+    " svc %1\n"::"i"(SYS_syscall_return),
+                 "i"(SYS_syscall)  /* Return from the SYSCALL */
   );
 }
 #endif
diff --git a/arch/arm/src/armv8-m/arm_svcall.c b/arch/arm/src/armv8-m/arm_svcall.c
index f0757c7..50d5be5 100644
--- a/arch/arm/src/armv8-m/arm_svcall.c
+++ b/arch/arm/src/armv8-m/arm_svcall.c
@@ -102,8 +102,9 @@ static void dispatch_syscall(void)
       " ldr r2, [sp, #16]\n"         /* Restore (orig_SP - new_SP) value */
       " add sp, sp, r2\n"            /* Restore SP */
       " mov r2, r0\n"                /* R2=Save return value in R2 */
-      " mov r0, #3\n"                /* R0=SYS_syscall_return */
-      " svc %0\n"::"i"(SYS_syscall)  /* Return from the SYSCALL */
+      " mov r0, %0\n"                /* R0=SYS_syscall_return */
+      " svc %1\n"::"i"(SYS_syscall_return),
+                   "i"(SYS_syscall)  /* Return from the SYSCALL */
     );
 }
 #endif