54 lines
811 B
ArmAsm
54 lines
811 B
ArmAsm
/* vector table section
|
|
* __ASYST_STACK_TOP is defined in lcf file
|
|
*/
|
|
|
|
.code 32
|
|
|
|
.extern __ASYST_STACK_TOP
|
|
|
|
/* startup
|
|
* initialize mode
|
|
* initialize stack pointer
|
|
* jump to __asyst_main in crt_asyst.c
|
|
*/
|
|
|
|
.section .text, "ax"
|
|
|
|
.global __asyst_start
|
|
|
|
__asyst_start:
|
|
|
|
mrs r0, cpsr
|
|
bic r0, r0, #0x1F /* clear mode flags */
|
|
orr r0, r0, #0x10 /* set user mode */
|
|
msr cpsr, r0
|
|
|
|
/* Initialize MAM to Mode 2, 7 cycles flash: */
|
|
|
|
ldr r0,_MAMCR
|
|
ldr r1,_MAMTIM
|
|
ldr r2,=0
|
|
str r2,[r0]
|
|
ldr r2,=7
|
|
str r2,[r1]
|
|
ldr r2,=2
|
|
str r2,[r0]
|
|
|
|
ldr sp,_Lstack_top
|
|
|
|
bl __asyst_main
|
|
|
|
|
|
/* constants */
|
|
|
|
_MAMCR:
|
|
.long 0xe01fc000 /* Address of MAM Control Register. */
|
|
|
|
_MAMTIM:
|
|
.long 0xe01fc004 /* Address of MAM Timing register. */
|
|
|
|
_Lstack_top:
|
|
.long __ASYST_STACK_TOP
|
|
|
|
.end
|