From 810d063d36b16eaa542d85b1cc3476927d606894 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Wed, 15 May 2019 20:44:03 +0200 Subject: [PATCH] ARM: Use %fp in _start. * lib/linux/arm-mes-mescc/crt1.c (_start): Use %fp instead of %sp. --- lib/linux/arm-mes-mescc/crt1.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/linux/arm-mes-mescc/crt1.c b/lib/linux/arm-mes-mescc/crt1.c index d2f61c64..0601a415 100644 --- a/lib/linux/arm-mes-mescc/crt1.c +++ b/lib/linux/arm-mes-mescc/crt1.c @@ -32,9 +32,9 @@ sp -> argc environ = &argv[argc + 1] +HOWEVER, the function entry already allocated space for locals on the stack (after saving fp, which moved sp again). Hence, use fp instead of sp. */ - /* stdin = 0 */ asm ("!0 mov____$i8,%r0"); @@ -52,8 +52,8 @@ environ = &argv[argc + 1] /* Add "environ" to main's arguments */ - asm ("!0 ldr____%r0,(%sp,#$i8)"); /* "argc" */ - asm ("!4 ldr____%r1,(%sp,#$i8)"); /* "argv" */ + asm ("!4 ldr____%r0,(%fp,+#$i8)"); /* "argc" */ + asm ("!8 ldr____%r1,(%fp,+#$i8)"); /* "argv" */ asm ("add____%r2,%r0,%r1,lsl#4"); /* "environ": argv + argc */ asm ("!4 add____%r2,$i8"); /* "environ": argv + argc + 1 */