ARMBoot-1.1.0 在 mini2440 开发板上的移植(五)

2014-11-24 09:02:05 · 作者: · 浏览: 10
3 str r1, [r0]
164
165 /*
166 * mask all IRQs by setting all bits in the INTMR - default
167 */
168 mov r1, #0xffffffff
169 ldr r0, =INTMSK
170 str r1, [r0]
171 #if defined(CONFIG_S3C2410)
172 ldr r1, =0x3ff
173 ldr r0, =INTSUBMSK
174 str r1, [r0]
175 #endif
176
177 // start of snallie
178 #if defined(CONFIG_S3C2440)
179 ldr r1, =0x7ff
180 ldr r0, =INTSUBMSK
181 str r1, [r0]
182 #endif
183 // end of snallie
/*
* 178~183 为适应S3C2440中断屏蔽位寄存器的设置,事实上,S3C2440处理器复位后屏蔽全部的外部中断
* 168~183段的代码完全可以省略掉,为保持代码的完整行和历史风格,将其保留
*/


184
185 // start of snallie, SMDK2410 boot from NOR flash!
186 #if defined(CONFIG_S3C2410)
187 /* FCLK:HCLK:PCLK = 1:2:4 */
188 /* default FCLK is 120 MHz ! */
189 ldr r0, =CLKDIVN
190 mov r1, #3
191 str r1, [r0]
192
193 /*
194 * we do sys-critical inits only at reboot,
195 * not when booting from ram!
196 */
197 #ifdef CONFIG_INIT_CRITICAL
198 bl cpu_init_crit
199 #endif
200
201 relocate:
202 /*
203 * relocate armboot to RAM
204 */
205 adr r0, _start /* r0 <- current position of code */
206 ldr r2, _armboot_start
207 ldr r3, _armboot_end
208 sub r2, r3, r2 /* r2 <- size of armboot */
209 ldr r1, _TEXT_BASE /* r1 <- destination address */
210 add r2, r0, r2 /* r2 <- source end address */
211
212 /*

213 * r0 = source address
214 * r1 = target address
215 * r2 = source end address
216 */
217 copy_loop:
218 ldmia r0!, {r3-r10}
219 stmia r1!, {r3-r10}
220 cmp r0, r2
221 ble copy_loop
222
223 #if 0
224 /* try doing this stuff after the relocation */
225 ldr r0, =pWTCON
226 mov r1, #0x0
227 str r1, [r0]
228
229 /*
230 * mask all IRQs by setting all bits in the INTMR - default
231 */
232 mov r1, #0xffffffff
233 ldr r0, =INTMR
234 str r1, [r0]
235
236 /* FCLK:HCLK:PCLK = 1:2:4 */
237 /* default FCLK is 120 MHz ! */
238 ldr r0, =CLKDIVN
239 mov r1, #3
240 str r1, [r0]
241 /* END stuff after relocation */
242 #endif
243
244 /* set up the stack */
245 ldr r0, _armboot_end
246 add r0, r0, #CONFIG_STACKSIZE
247 sub sp, r0, #12 /* leave 3 words for abort-stack */
248
249 ldr pc, _start_armboot
250
251 _start_armboot: .word start_armboot
252 #endif
253 // end of snallie
/*
* 187~251 这段设置时钟和代码搬移即跳转的部分不适合MINI2440, 通过条件编译将其跳过:在 include/configs/config_mini2440.h
* 中我们将取消CONFIG_S3C2410的宏定义,取而代之的是定义CONFIG_S3C2440这个宏,所以187~251将在预处理时候被视为空
*/

/*
* 257~323部分为新修改的代码,以适应S3C2440 ,在 include/configs/config_mini2440.h 定义了CONFIG_S3C2440这个宏,
* 所以这段代码被编译
*/
254
255 // start of snallie, mini2440 boot from NAND flash
256 //#if defined(CONFIG_S3C2440) && defined(CONFIG_MINI2440)
257 #if defined(CONFIG_S3C