diff --git a/arch/arm/src/armv6-m/arm_svcall.c b/arch/arm/src/armv6-m/arm_svcall.c index 0339cccd13..9f5447c7cc 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 9d2ddf4a1c..24323bf885 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 6119ee6297..1330dc3a81 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 32b48b25c8..06ddc27000 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 f0757c7712..50d5be51d7 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