summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-07-15 22:15:33 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-07-15 22:15:33 +0000
commita23fe4874168c9d6fd4aa824adf715eb8ff430c2 (patch)
tree4fa33e288921095f96733086634ba2ade686d0b8 /firmware
parente699fba4b1b263dd186cc83691604ac4a514114c (diff)
downloadrockbox-a23fe4874168c9d6fd4aa824adf715eb8ff430c2.tar.gz
rockbox-a23fe4874168c9d6fd4aa824adf715eb8ff430c2.zip
Added main stack munging
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1356 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/crt0.S21
1 files changed, 18 insertions, 3 deletions
diff --git a/firmware/crt0.S b/firmware/crt0.S
index 39344b297a..fe1fad8cac 100644
--- a/firmware/crt0.S
+++ b/firmware/crt0.S
@@ -99,6 +99,17 @@ start_l:
99 bt start_l 99 bt start_l
100 nop 100 nop
101 101
102 /* Munge the main thread stack */
103 mov.l stack_k,r2
104 mov.l deadbeef_k,r0
105 mov.l stackbegin_k,r1
106munge_loop:
107 mov.l r0,@r1
108 add #4,r1
109 cmp/ge r1,r2
110 bt munge_loop
111 nop
112
102 ! call the mainline 113 ! call the mainline
103 mov.l main_k,r0 114 mov.l main_k,r0
104 jsr @r0 115 jsr @r0
@@ -108,7 +119,11 @@ start_l:
108 119
109 .align 2 120 .align 2
110stack_k: 121stack_k:
111 .long _stack 122 .long _stackend
123stackbegin_k:
124 .long _stackbegin
125deadbeef_k:
126 .long 0xdeadbeef
112edata_k: 127edata_k:
113 .long _edata 128 .long _edata
114end_k: 129end_k:
@@ -123,6 +138,6 @@ orig_vbr_k:
123 .section .resetvectors 138 .section .resetvectors
124vectors: 139vectors:
125 .long start 140 .long start
126 .long _stack 141 .long _stackend
127 .long start 142 .long start
128 .long _stack 143 .long _stackend