
Hi,
I have a few questions on arm926 initialization code, located in ${U_BOOT}/cpu/arm926ejs/start.S:
- what is the point of deliberately setting up SVC mode, as it's
already in this mode right upon the reset?
What if the target board has a custom bootmonitor & you use U-Boot as secondary bootloader. This is a precautionary measure.
- I can't quite understand what 'CONFIG_USE_IRQ' is used for. It is
defined on just a few targets.
Generally bootloader doesnt use IRQ for running. But if u need to use IRQ/FIQ u need to setup stacks for the Same. And also When Interrupt occurs you need to set sp to pint to proper stacks, save registers & then jump to irq handler. U_Boot provides a common envelope for all interrupt related functions.
- The stack set up -- commonly startup code initializes stacks for
all modes, but it's not clear how it's done in 'start.S'. Seems like somehow stacks are run-time configured, but I didn't perceive how.
U-boot Initially sets up Stack for SVC Mode.
Upon Interrupt Triggers, Stacks are setup for the IRQ/FIQ Modes.
This is done in the ${U_BOOT}/cpu/arm926ejs/start.S
for SVC Mode ---> @ line 173 for IRQ Mode ---> @ line 327 for FIQ Mode ---> @ line 331
Hope this would clear your doubts.
Regards Gururaja