.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