86 lines
1.2 KiB
ArmAsm
86 lines
1.2 KiB
ArmAsm
|
|
.globl _start
|
|
_start:
|
|
b reset
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
b hang
|
|
|
|
reset:
|
|
|
|
;@ add/remove nops here
|
|
nop
|
|
nop
|
|
nop
|
|
|
|
|
|
|
|
mov sp,#0x00200000
|
|
bl notmain
|
|
hang: b hang
|
|
|
|
.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 start_mmu
|
|
start_mmu:
|
|
mov r2,#0
|
|
mcr p15,0,r2,c7,c7,0 ;@ invalidate caches
|
|
mcr p15,0,r2,c8,c7,0 ;@ invalidate tlb
|
|
|
|
mvn r2,#0
|
|
mcr p15,0,r2,c3,c0,0 ;@ domain
|
|
|
|
mcr p15,0,r0,c2,c0,0 ;@ tlb base
|
|
mcr p15,0,r0,c2,c0,1 ;@ tlb base
|
|
|
|
mrc p15,0,r2,c1,c0,0
|
|
orr r2,r2,r1
|
|
mcr p15,0,r2,c1,c0,0
|
|
|
|
bx lr
|