|
|
|
|
@@ -42,119 +42,117 @@
|
|
|
|
|
_start:
|
|
|
|
|
@---------------------------------------------------------------------------------
|
|
|
|
|
mov r0, #0x04000000 @ IME = 0;
|
|
|
|
|
add r0, r0, #0x208
|
|
|
|
|
strh r0, [r0]
|
|
|
|
|
str r0, [r0, #0x208]
|
|
|
|
|
|
|
|
|
|
ldr r1, =0x00002078 @ disable DTCM and protection unit
|
|
|
|
|
mcr p15, 0, r1, c1, c0
|
|
|
|
|
|
|
|
|
|
@---------------------------------------------------------------------------------
|
|
|
|
|
@ Protection Unit Setup added by Sasq
|
|
|
|
|
@ Protection Unit Setup added by Sasq
|
|
|
|
|
@---------------------------------------------------------------------------------
|
|
|
|
|
@ Disable cache
|
|
|
|
|
mov r0, #0
|
|
|
|
|
mcr p15, 0, r0, c7, c5, 0 @ Instruction cache
|
|
|
|
|
mcr p15, 0, r0, c7, c6, 0 @ Data cache
|
|
|
|
|
|
|
|
|
|
@ Wait for write buffer to empty
|
|
|
|
|
mcr p15, 0, r0, c7, c10, 4
|
|
|
|
|
@ Disable cache
|
|
|
|
|
mov r0, #0
|
|
|
|
|
mcr p15, 0, r0, c7, c5, 0 @ Instruction cache
|
|
|
|
|
mcr p15, 0, r0, c7, c6, 0 @ Data cache
|
|
|
|
|
|
|
|
|
|
@ Wait for write buffer to empty
|
|
|
|
|
mcr p15, 0, r0, c7, c10, 4
|
|
|
|
|
|
|
|
|
|
ldr r0, =0x0080000A
|
|
|
|
|
mcr p15, 0, r0, c9, c1 @ TCM base = 0x00800*4096, size = 16 KB
|
|
|
|
|
@---------------------------------------------------------------------------------
|
|
|
|
|
@ Setup memory regions similar to Release Version
|
|
|
|
|
@ this code currently breaks dualis
|
|
|
|
|
@---------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Region 0 - IO registers
|
|
|
|
|
@ Region 0 - IO registers
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=( PAGE_64M | 0x04000000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c0, 0
|
|
|
|
|
|
|
|
|
|
ldr r0,=( PAGE_64M | 0x04000000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c0, 0
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Region 1 - Main Memory
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=( PAGE_4M | 0x02000000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c1, 0
|
|
|
|
|
|
|
|
|
|
ldr r0,=( PAGE_4M | 0x02000000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c1, 0
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Region 2 - iwram
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=( PAGE_32K | 0x037F8000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c2, 0
|
|
|
|
|
ldr r0,=( PAGE_32K | 0x037F8000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c2, 0
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Region 3 - DS Accessory (GBA Cart)
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=( PAGE_128M | 0x08000000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c3, 0
|
|
|
|
|
ldr r0,=( PAGE_128M | 0x08000000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c3, 0
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Region 4 - DTCM
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ldr r0,=( PAGE_16K | 0x027C0000 | 1)
|
|
|
|
|
ldr r0,=( PAGE_16K | 0x00800000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c4, 0
|
|
|
|
|
@ldr r0,=( PAGE_16K | 0x027C0000 | 1)
|
|
|
|
|
ldr r0,=( PAGE_16K | 0x00800000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c4, 0
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Region 5 - ITCM
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=( PAGE_32K | 0x00000000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c5, 0
|
|
|
|
|
ldr r0,=( PAGE_32K | 0x00000000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c5, 0
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Region 6 - System ROM
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=( PAGE_32K | 0xFFFF0000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c6, 0
|
|
|
|
|
ldr r0,=( PAGE_32K | 0xFFFF0000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c6, 0
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Region 7 - non cacheable main ram
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=( PAGE_4M | 0x02400000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c7, 0
|
|
|
|
|
ldr r0,=( PAGE_4M | 0x02400000 | 1)
|
|
|
|
|
mcr p15, 0, r0, c6, c7, 0
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Write buffer enable
|
|
|
|
|
@ Write buffer enable
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=0b00000110
|
|
|
|
|
mcr p15, 0, r0, c3, c0, 0
|
|
|
|
|
ldr r0,=0b00000110
|
|
|
|
|
mcr p15, 0, r0, c3, c0, 0
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ DCache & ICache enable
|
|
|
|
|
@ DCache & ICache enable
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=0b01000110
|
|
|
|
|
ldr r0,=0x42
|
|
|
|
|
mcr p15, 0, r0, c2, c0, 0
|
|
|
|
|
mcr p15, 0, r0, c2, c0, 1
|
|
|
|
|
ldr r0,=0b01000110
|
|
|
|
|
ldr r0,=0x42
|
|
|
|
|
mcr p15, 0, r0, c2, c0, 0
|
|
|
|
|
mcr p15, 0, r0, c2, c0, 1
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ IAccess
|
|
|
|
|
@ IAccess
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=0x36636333
|
|
|
|
|
mcr p15, 0, r0, c5, c0, 3
|
|
|
|
|
ldr r0,=0x36636333
|
|
|
|
|
mcr p15, 0, r0, c5, c0, 3
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ DAccess
|
|
|
|
|
@ DAccess
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
ldr r0,=0x36333333
|
|
|
|
|
mcr p15, 0, r0, c5, c0, 2
|
|
|
|
|
ldr r0,=0x36333333
|
|
|
|
|
mcr p15, 0, r0, c5, c0, 2
|
|
|
|
|
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
@ Enable ICache, DCache, ITCM & DTCM
|
|
|
|
|
@ Enable ICache, DCache, ITCM & DTCM
|
|
|
|
|
@-------------------------------------------------------------------------
|
|
|
|
|
mrc p15, 0, r0, c1, c0, 0
|
|
|
|
|
ldr r1,= ITCM_ENABLE | DTCM_ENABLE | ICACHE_ENABLE | DCACHE_ENABLE | PROTECT_ENABLE
|
|
|
|
|
orr r0,r0,r1
|
|
|
|
|
mcr p15, 0, r0, c1, c0, 0
|
|
|
|
|
mrc p15, 0, r0, c1, c0, 0
|
|
|
|
|
ldr r1,= ITCM_ENABLE | DTCM_ENABLE | ICACHE_ENABLE | DCACHE_ENABLE | PROTECT_ENABLE
|
|
|
|
|
orr r0,r0,r1
|
|
|
|
|
mcr p15, 0, r0, c1, c0, 0
|
|
|
|
|
|
|
|
|
|
mov r0, #0x12 @ Switch to IRQ Mode
|
|
|
|
|
msr cpsr, r0
|
|
|
|
|
ldr sp, =__sp_irq @ Set IRQ stack
|
|
|
|
|
|
|
|
|
|
mov r0, #0x13 @ Switch to SVC Mode
|
|
|
|
|
msr cpsr, r0
|
|
|
|
|
mov r0, #0x13 @ Switch to SVC Mode
|
|
|
|
|
msr cpsr, r0
|
|
|
|
|
ldr sp, =__sp_svc @ Set SVC stack
|
|
|
|
|
|
|
|
|
|
mov r0, #0x1F @ Switch to System Mode
|
|
|
|
|
|