diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-15 22:15:33 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-15 22:15:33 +0000 |
commit | a23fe4874168c9d6fd4aa824adf715eb8ff430c2 (patch) | |
tree | 4fa33e288921095f96733086634ba2ade686d0b8 | |
parent | e699fba4b1b263dd186cc83691604ac4a514114c (diff) | |
download | rockbox-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
-rw-r--r-- | firmware/crt0.S | 21 |
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 | ||
106 | munge_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 |
110 | stack_k: | 121 | stack_k: |
111 | .long _stack | 122 | .long _stackend |
123 | stackbegin_k: | ||
124 | .long _stackbegin | ||
125 | deadbeef_k: | ||
126 | .long 0xdeadbeef | ||
112 | edata_k: | 127 | edata_k: |
113 | .long _edata | 128 | .long _edata |
114 | end_k: | 129 | end_k: |
@@ -123,6 +138,6 @@ orig_vbr_k: | |||
123 | .section .resetvectors | 138 | .section .resetvectors |
124 | vectors: | 139 | vectors: |
125 | .long start | 140 | .long start |
126 | .long _stack | 141 | .long _stackend |
127 | .long start | 142 | .long start |
128 | .long _stack | 143 | .long _stackend |