diff options
-rw-r--r-- | firmware/crt0.S | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/firmware/crt0.S b/firmware/crt0.S index 78b26b77ea..99aab83867 100644 --- a/firmware/crt0.S +++ b/firmware/crt0.S | |||
@@ -95,8 +95,21 @@ start: | |||
95 | start_l: | 95 | start_l: |
96 | mov.l r2,@r0 | 96 | mov.l r2,@r0 |
97 | add #4,r0 | 97 | add #4,r0 |
98 | cmp/ge r0,r1 | 98 | cmp/ge r1,r0 |
99 | bt start_l | 99 | bf start_l |
100 | nop | ||
101 | |||
102 | /* copy the .iram section */ | ||
103 | mov.l iramcopy_k,r0 | ||
104 | mov.l iram_k,r1 | ||
105 | mov.l iramend_k,r2 | ||
106 | copy_l: | ||
107 | mov.l @r0,r3 | ||
108 | mov.l r3,@r1 | ||
109 | add #4,r0 | ||
110 | add #4,r1 | ||
111 | cmp/ge r2,r1 | ||
112 | bf copy_l | ||
100 | nop | 113 | nop |
101 | 114 | ||
102 | /* Munge the main thread stack */ | 115 | /* Munge the main thread stack */ |
@@ -106,8 +119,8 @@ start_l: | |||
106 | munge_loop: | 119 | munge_loop: |
107 | mov.l r0,@r1 | 120 | mov.l r0,@r1 |
108 | add #4,r1 | 121 | add #4,r1 |
109 | cmp/ge r1,r2 | 122 | cmp/ge r2,r1 |
110 | bt munge_loop | 123 | bf munge_loop |
111 | nop | 124 | nop |
112 | 125 | ||
113 | mov #0,r0 | 126 | mov #0,r0 |
@@ -131,6 +144,12 @@ edata_k: | |||
131 | .long _edata | 144 | .long _edata |
132 | end_k: | 145 | end_k: |
133 | .long _end | 146 | .long _end |
147 | iramcopy_k: | ||
148 | .long _iramcopy | ||
149 | iram_k: | ||
150 | .long _iramstart | ||
151 | iramend_k: | ||
152 | .long _iramend | ||
134 | main_k: | 153 | main_k: |
135 | .long _main | 154 | .long _main |
136 | vbr_k: | 155 | vbr_k: |