From de42969c72c04c5843904a5938ce5a79aa994372 Mon Sep 17 00:00:00 2001 From: Dave Murphy Date: Thu, 9 Feb 2006 13:43:44 +0000 Subject: [PATCH] *** empty log message *** --- dkarm/crtls/ds_arm7_crt0.s | 7 ++- dkarm/crtls/ds_arm9_crt0.s | 102 ++++++++++++++++++------------------- dkarm/crtls/ds_cart_crt0.s | 7 ++- dkarm/crtls/gba_crt0.s | 3 +- dkarm/crtls/gp32.ld | 1 + 5 files changed, 58 insertions(+), 62 deletions(-) diff --git a/dkarm/crtls/ds_arm7_crt0.s b/dkarm/crtls/ds_arm7_crt0.s index 239729a..45fe98f 100644 --- a/dkarm/crtls/ds_arm7_crt0.s +++ b/dkarm/crtls/ds_arm7_crt0.s @@ -8,15 +8,14 @@ _start: @--------------------------------------------------------------------------------- mov r0, #0x04000000 @ IME = 0; - add r0, r0, #0x208 - strh r0, [r0] + str r0, [r0, #0x208] 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 diff --git a/dkarm/crtls/ds_arm9_crt0.s b/dkarm/crtls/ds_arm9_crt0.s index b4dfbed..a4879ec 100644 --- a/dkarm/crtls/ds_arm9_crt0.s +++ b/dkarm/crtls/ds_arm9_crt0.s @@ -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 diff --git a/dkarm/crtls/ds_cart_crt0.s b/dkarm/crtls/ds_cart_crt0.s index fa9997a..e053c77 100644 --- a/dkarm/crtls/ds_cart_crt0.s +++ b/dkarm/crtls/ds_cart_crt0.s @@ -44,15 +44,14 @@ __slave_number: start_vector: @--------------------------------------------------------------------------------- mov r0, #0x04000000 @ IME = 0; - add r0, r0, #0x208 - strh r0, [r0] + str r0, [r0, #0x208] 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 diff --git a/dkarm/crtls/gba_crt0.s b/dkarm/crtls/gba_crt0.s index c5febe9..097810e 100644 --- a/dkarm/crtls/gba_crt0.s +++ b/dkarm/crtls/gba_crt0.s @@ -49,8 +49,7 @@ __slave_number: start_vector: @--------------------------------------------------------------------------------- mov r0, #0x4000000 @ REG_BASE - add r0, r0, #0x208 @ REG_IME - strh r0, [r0] + str r0, [r0, #0x208] mov r0, #0x12 @ Switch to IRQ Mode msr cpsr, r0 diff --git a/dkarm/crtls/gp32.ld b/dkarm/crtls/gp32.ld index d044730..76a14a4 100644 --- a/dkarm/crtls/gp32.ld +++ b/dkarm/crtls/gp32.ld @@ -105,6 +105,7 @@ SECTIONS /* __bss_start__ = ABSOLUTE(.); */ *(.dynbss) *(.gnu.linkonce.b*) + *(.bss*) *(COMMON) . = ALIGN(4); /* REQUIRED. LD is flaky without it. */ } > ram