Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .section .startup,"ax"
- .code 32
- .align 0
- b _start /* reset - _start */
- ldr pc, _undf /* undefined - _undf */
- ldr pc, _swi /* SWI - _swi */
- ldr pc, _pabt /* program abort - _pabt */
- ldr pc, _dabt /* data abort - _dabt */
- nop /* reserved */
- ldr pc, _irq /* IRQ - read the VIC */
- ldr pc, _fiq /* FIQ - _fiq */
- _undf: .word 0x4030CE24 /* undefined */
- _swi: .word 0x4030CE28 /* SWI */
- _pabt: .word 0x4030CE2C /* program abort */
- _dabt: .word 0x4030CE30 /* data abort */
- _irq: .word 0x4030CE38
- _fiq: .word 0x4030CE3C /* FIQ */
- #define E_IRQ (*(REG32 (0x4030CE38)))
- ....
- /* Setup interrupt handler */
- E_IRQ = ( long ) vIRQHandler;
- /* Set V=0 in CP15 SCTRL register - for VBAR to point to vector */
- mrc p15, 0, r0, c1, c0, 0 @ Read CP15 SCTRL Register
- bic r0, #(1 << 13) @ V = 0
- mcr p15, 0, r0, c1, c0, 0 @ Write CP15 SCTRL Register
- /* Set vector address in CP15 VBAR register */
- ldr r0, =_vector_table
- mcr p15, 0, r0, c12, c0, 0 @Set VBAR
- bl main
- .section .startup,"ax"
- .code 32
- .align 0
- _vector_table: b _start /* reset - _start */
- ldr pc, _undf /* undefined - _undf */
- ldr pc, _swi /* SWI - _swi */
- ldr pc, _pabt /* program abort - _pabt */
- ldr pc, _dabt /* data abort - _dabt */
- nop /* reserved */
- ldr pc, _irq /* IRQ - read the VIC */
- ldr pc, _fiq /* FIQ - _fiq */
Add Comment
Please, Sign In to add comment