| 1 | @----------------------------------------------------------------------------- |
| 2 | @ This code is licensed to you under the terms of the GNU GPL, version 2 or, |
| 3 | @ at your option, any later version. See the LICENSE.txt file for the text of |
| 4 | @ the license. |
| 5 | @----------------------------------------------------------------------------- |
| 6 | @ Reset vector for running from FLASH |
| 7 | @----------------------------------------------------------------------------- |
| 8 | |
| 9 | .extern CopyBootToRAM |
| 10 | |
| 11 | .section .startup,"ax" |
| 12 | .code 32 |
| 13 | .align 0 |
| 14 | |
| 15 | .global flashstart |
| 16 | flashstart: |
| 17 | b Reset |
| 18 | b UndefinedInstruction |
| 19 | b SoftwareInterrupt |
| 20 | b PrefetchAbort |
| 21 | b DataAbort |
| 22 | b Reserved |
| 23 | b Irq |
| 24 | b Fiq |
| 25 | |
| 26 | Reset: |
| 27 | ldr sp, .stack_end @ initialize stack pointer to top of RAM |
| 28 | bl CopyBootToRAM @ copy bootloader to RAM (in case the |
| 29 | @ user re-flashes the bootloader) |
| 30 | ldr r3, .bootphase2_start @ start address of RAM bootloader |
| 31 | bx r3 @ jump to it |
| 32 | |
| 33 | .stack_end: |
| 34 | .word _stack_end |
| 35 | .bootphase2_start: |
| 36 | .word __bootphase2_start__ |
| 37 | |
| 38 | Fiq: |
| 39 | b Fiq |
| 40 | UndefinedInstruction: |
| 41 | b UndefinedInstruction |
| 42 | SoftwareInterrupt: |
| 43 | b SoftwareInterrupt |
| 44 | PrefetchAbort: |
| 45 | b PrefetchAbort |
| 46 | DataAbort: |
| 47 | b DataAbort |
| 48 | Reserved: |
| 49 | b Reserved |
| 50 | Irq: |
| 51 | b Irq |