u‐boot vectors - MarekBykowski/readme GitHub Wiki
Break at vectors
hbreak -p mb_vectors
vectors
is a global variable. It is written to X0
(adr X0, vectors
in arch/arm/cpu/armv8/start.S
). Advance to execute the instruction and then read on the X0
info registers x0
print /x $x0
Save the x0 as it will get clobbered soon.
newvar $vectors = $x0
vectors
has 16 entries, with each entry being 128 bytes (32 instructions) in size. The table effectively consists of 4 sets of 4 entries. The four entries are at
newvar $current_el_with_sp0 = $vectors
newvar $current_el_with_spx = $vectors +0x200
newvar $lower_el_using_aarch64 = $vectors +0x400
newvar $lower_el_using_aarch32 = $vectors +0x600
Show assembly at each of the four sets
disassemble $current_el_with_sp0 +0x200
disassemble $current_el_with_spx +0x200
disassemble $lower_el_using_aarch64 +0x200
disassemble $lower_el_using_aarch32 +0x200
eg
- show assembly at set 1, entry 2
current EL with SP0 -> IRQ
newvar $current_el_with_sp0_irq = $current_el_with_sp0 + 0x80
disassemble $current_el_with_sp0_irq +128
- show assembly at set 1, entry 2
current EL with SP0 -> IRQ
newvar $current_el_with_spx_irq = $current_el_with_spx + 0x80
disassemble $current_el_with_spx_irq +128
TODO:
- add
smc
call to generate Sync Excpetion.