111 lines
1.8 KiB
ArmAsm
111 lines
1.8 KiB
ArmAsm
|
|
.globl _start
|
|
_start:
|
|
ldr pc,reset_handler
|
|
ldr pc,undefined_handler
|
|
ldr pc,swi_handler
|
|
ldr pc,prefetch_handler
|
|
ldr pc,data_handler
|
|
ldr pc,unused_handler
|
|
ldr pc,irq_handler
|
|
ldr pc,fiq_handler
|
|
reset_handler: .word reset
|
|
undefined_handler: .word undef
|
|
swi_handler: .word hang
|
|
prefetch_handler: .word hang
|
|
data_handler: .word hang
|
|
unused_handler: .word hang
|
|
irq_handler: .word hang
|
|
fiq_handler: .word hang
|
|
|
|
reset:
|
|
mov r0,#0x8000
|
|
mov r1,#0x0000
|
|
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
|
|
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
|
|
ldmia r0!,{r2,r3,r4,r5,r6,r7,r8,r9}
|
|
stmia r1!,{r2,r3,r4,r5,r6,r7,r8,r9}
|
|
|
|
|
|
;@ enable fpu
|
|
mrc p15, 0, r0, c1, c0, 2
|
|
orr r0,r0,#0x300000 ;@ single precision
|
|
orr r0,r0,#0xC00000 ;@ double precision
|
|
mcr p15, 0, r0, c1, c0, 2
|
|
mov r0,#0x40000000
|
|
fmxr fpexc,r0
|
|
|
|
|
|
|
|
mov sp,#0x00200000
|
|
bl notmain
|
|
hang: b hang
|
|
|
|
|
|
.word 0
|
|
.word 0
|
|
undef: b .
|
|
.word 0
|
|
.word 0
|
|
|
|
|
|
.globl PUT32
|
|
PUT32:
|
|
str r1,[r0]
|
|
bx lr
|
|
|
|
.globl GET32
|
|
GET32:
|
|
ldr r0,[r0]
|
|
bx lr
|
|
|
|
.globl dummy
|
|
dummy:
|
|
bx lr
|
|
|
|
|
|
.globl start_l1cache
|
|
start_l1cache:
|
|
mov r0, #0
|
|
mcr p15, 0, r0, c7, c7, 0 ;@ invalidate caches
|
|
mcr p15, 0, r0, c8, c7, 0 ;@ invalidate tlb
|
|
mrc p15, 0, r0, c1, c0, 0
|
|
orr r0,r0,#0x1000 ;@ instruction
|
|
orr r0,r0,#0x0004 ;@ data
|
|
mcr p15, 0, r0, c1, c0, 0
|
|
bx lr
|
|
|
|
.globl stop_l1cache
|
|
stop_l1cache:
|
|
mrc p15, 0, r0, c1, c0, 0
|
|
bic r0,r0,#0x1000 ;@ instruction
|
|
bic r0,r0,#0x0004 ;@ data
|
|
mcr p15, 0, r0, c1, c0, 0
|
|
bx lr
|
|
|
|
.globl m4add
|
|
m4add:
|
|
vmov s0,r0
|
|
vmov s1,r1
|
|
vadd.f32 s2,s0,s1
|
|
vmov r0,s2
|
|
bx lr
|
|
|
|
.globl m4ftoi
|
|
m4ftoi:
|
|
vmov s0,r0
|
|
vcvt.s32.f32 s2,s0
|
|
vmov r0,s2
|
|
bx lr
|
|
|
|
|
|
.globl m4itof
|
|
m4itof:
|
|
vmov s0,r0
|
|
vcvt.f32.u32 s2,s0
|
|
vmov r0,s2
|
|
bx lr
|
|
|
|
|
|
|