[U-Boot] Regarding Start.S file

Marek Vasut marek.vasut at gmail.com
Wed Sep 14 20:13:52 CEST 2011


On Wednesday, September 14, 2011 07:48:12 PM Asmit Patel wrote:
> Hi All,
> I am new to u-boot and ARM. I am trying to understand uboot thtough start.S
> file.
> I have few questions about it.
> 1) What is the deifference between ARM Supervisior and User mode. why uboot
> is not running in user mode?

SVC has the biggest privileges (can do everything, no restrictions).

> 2) At the start of startup file I found below code.
> 
>  .globl _start
>  _start: b start_code
> ldr pc, _undefined_instruction
>  ldr pc, _software_interrupt
>  ldr pc, _prefetch_abort
> ldr pc, _data_abort
> ldr pc, _not_used
> ldr pc, _irq
> ldr pc, _fiq
> 
> _undefined_instruction: .word undefined_instruction
> _software_interrupt: .word software_interrupt
>  _prefetch_abort: .word prefetch_abort
> _data_abort: .word data_abort
>  _not_used: .word not_used
> _irq: .word irq
>  _fiq: .word fiq
> 
>  .balignl 16,0xdeadbeef
> 
> 
> What is this code will do? as i believe the instruction "b start_code" will
> branch it to start_code then how does the other code below branch
> instruction will work?

Upon exception, the CPU jumps to the exception vector, this is the vectoring 
jumptable here. So ... if you get for example "irq exception", aka interrupt 
happens, the cpu jumps to fixed address 0x14. This here then jumps to the real 
handler.

> 
> 3) where does exception vector table located during power on? on boot rom
> or at any other place?

Depends on the CPU and the initial memory mapping. If U-Boot is in NOR mapped to 
0x0, it's the stuff above. It can be in bootrom, but that depends.
> 
> 
> Thanks & Regards,
> Asmit Patel"


More information about the U-Boot mailing list