Zero the frame pointer
authorMichael Spang <mspang@csclub.uwaterloo.ca>
Thu, 24 Mar 2011 20:01:04 +0000 (16:01 -0400)
committerMichael Spang <mspang@csclub.uwaterloo.ca>
Thu, 24 Mar 2011 20:10:31 +0000 (16:10 -0400)
This will end backtraces at ts7800_start. Continuing into U-Boot is
not likely to work.

Makefile
ts7800.S

index 56f5c0d..f6debd9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ CFLAGS  += -Wall -Werror -Iinclude -std=gnu99
 CFLAGS  += -march=armv5te -mtune=arm926ej-s
 
 # Keep frame pointers
-CFLAGS  += -fno-omit-frame-pointer
+CFLAGS  += -fno-omit-frame-pointer -mapcs-frame
 
 # Make assembly output more readable
 CFLAGS  += -fverbose-asm
index 7218df9..7642d2b 100644 (file)
--- a/ts7800.S
+++ b/ts7800.S
@@ -1,8 +1,9 @@
 .global ts7800_start
 ts7800_start:
-  str lr, [sp, #-4]!
+  stmfd sp!, {fp, lr}
+  mov fp, #0
   bl main
-  ldr lr, [sp], #4
+  ldmfd sp!, {fp, lr}
 
   @ To return to U-Boot you should first return things to the state
   @ you found them: svc mode, interrupts disabled, etc. If you don't