diff --git a/arch/arm/src/armv6-m/arm_dispatch_syscall.S b/arch/arm/src/armv6-m/arm_dispatch_syscall.S index 20b341477ab..9d1d73c1ce8 100644 --- a/arch/arm/src/armv6-m/arm_dispatch_syscall.S +++ b/arch/arm/src/armv6-m/arm_dispatch_syscall.S @@ -89,6 +89,7 @@ arm_dispatch_syscall: lsl r0, r0, #2 /* R0=Offset of the stub for this syscall */ ldr r4, [r4, r0] /* R4=Address of the stub for this syscall */ blx r4 /* Call the stub (modifies lr) */ + ldr r4, [sp, #0] /* Restore r4 */ add sp, sp, #32 /* Destroy the stack frame */ mov r2, r0 /* R2=Save return value in R2 */ mov r0, SYS_syscall_return /* R0=SYS_syscall_return */ diff --git a/arch/arm/src/armv7-m/arm_dispatch_syscall.S b/arch/arm/src/armv7-m/arm_dispatch_syscall.S index fcc87656420..6b2b88bfd5f 100644 --- a/arch/arm/src/armv7-m/arm_dispatch_syscall.S +++ b/arch/arm/src/armv7-m/arm_dispatch_syscall.S @@ -78,9 +78,8 @@ arm_dispatch_syscall: .cfi_sections .debug_frame .cfi_startproc - mov r11, sp - .cfi_register sp, r11 sub sp, sp, #32 + .cfi_def_cfa_offset 32 str r4, [sp, #0] .cfi_offset r4, 0 str r5, [sp, #4]