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