スタートアップのビルドが通る状態。

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@42 b871894f-2f95-9b40-918c-086798483c85
This commit is contained in:
nakasima 2008-11-28 11:29:55 +00:00
parent 89f91e6a66
commit 797b6c4db5
14 changed files with 363 additions and 154 deletions

View File

@ -29,8 +29,8 @@ BROM_PROC = ARM9
SRCDIR = ../common .
SRCS = crt0.c crt0_secure_sp.c crt0_scat.c crt0_app.c
TARGET_OBJ = crt0.o crt0_secure_sp.o crt0_scat.o crt0_app.o
SRCS = crt0.c crt0_secure_sp.c crt0_scat.c # crt0_app.c
TARGET_OBJ = crt0.o crt0_secure_sp.o crt0_scat.o # crt0_app.o
#----------------------------------------------------------------------------

View File

@ -15,7 +15,7 @@
*---------------------------------------------------------------------------*/
#include <brom/code32.h>
#include <brom/os.h>
#include <brom/mi.h>
//#include <brom/mi.h>
void _start(void);
@ -54,9 +54,9 @@ asm void STUPi_StartHandler( void )
#ifndef BROM_ENABLE_BOOTROM_WRITE
ldr r3, =REG_DEVROM_ADDR
ldr r3, =REG_ROM_ADDR
ldrb r1, [r3]
bic r1, #REG_CFG_DEVROM_WE_MASK
bic r1, #REG_SCFG_ROM_WE_MASK
strb r1, [r3]
#endif // BROM_ENABLE_BOOTROM_WRITE

View File

@ -15,38 +15,9 @@
*---------------------------------------------------------------------------*/
#include <brom/code32.h>
#include <brom/os.h>
#include <brom/mi.h>
//#include <brom/mi.h>
/*---------------------------------------------------------------------------*
Name: STUPi_MappingWram
Description: mapping WRAM for ARM7
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
ASM void STUPi_MappingWram( void )
{
// mapping WRAM-A
ldr r3, =REG_WRAM_A_MAP_ADDR
ldr r1, =REG_WRAM_A_MAP_PACK( MI_WRAM_MAP_NULL, MI_WRAM_MAP_NULL, __cpp(MI_WRAM_A_IMG_MAX) )
str r1, [r3]
// mapping WRAM-B
ldr r3, =REG_WRAM_B_MAP_ADDR
ldr r1, =REG_WRAM_A_MAP_PACK( MI_WRAM_MAP_NULL, MI_WRAM_MAP_NULL, __cpp(MI_WRAM_A_IMG_MAX) )
str r1, [r3]
// mapping WRAM-C
ldr r3, =REG_WRAM_C_MAP_ADDR
ldr r1, =REG_WRAM_C_MAP_PACK( MI_WRAM_MAP_NULL, MI_WRAM_MAP_NULL, __cpp(MI_WRAM_A_IMG_MAX) )
str r1, [r3]
bx lr
}
/*---------------------------------------------------------------------------*
Name: __user_initial_stackheap
@ -178,7 +149,7 @@ LSYM(10)
}
/*---------------------------------------------------------------------------*
Name: STUPi_NotifyToARM9
Name: STUPi_NotifyToARM11
Description: notify 4bit id to ARM9
@ -186,30 +157,30 @@ LSYM(10)
Returns: None
*---------------------------------------------------------------------------*/
ASM void STUPi_NotifyToARM9( u32 id )
ASM void STUPi_NotifyToARM11( u32 id )
{
ldr r3, =REG_MAINPINTF_ADDR
mov r0, r0, lsl #REG_PXI_MAINPINTF_A7STATUS_SHIFT
and r0, r0, #REG_PXI_MAINPINTF_A7STATUS_MASK
mov r0, r0, lsl #REG_PXI_MAINPINTF_A9STATUS_SHIFT
and r0, r0, #REG_PXI_MAINPINTF_A9STATUS_MASK
str r0, [r3]
bx lr
}
/*---------------------------------------------------------------------------*
Name: STUPi_WaitARM9
Name: STUPi_WaitARM11
Description: Wait 4bit id from ARM9
Description: Wait 4bit id from ARM11
Arguments: id waiting id
Returns: None
*---------------------------------------------------------------------------*/
ASM void STUPi_WaitARM9( u32 id )
ASM void STUPi_WaitARM11( u32 id )
{
ldr r3, =REG_MAINPINTF_ADDR
LSYM(10)
ldr r1, [r3]
and r1, r1, #REG_PXI_MAINPINTF_A9STATUS_MASK
and r1, r1, #REG_PXI_MAINPINTF_A11STATUS_MASK
cmp r0, r1
bne BSYM(10)
bx lr

View File

@ -15,10 +15,9 @@
*---------------------------------------------------------------------------*/
#include <brom/code32.h>
#include <brom/os.h>
#include <brom/mi.h>
//#include <brom/mi.h>
//#define BROM_ENABLE_BOOTROM_WRITE
//#define BROM_DISABLE_BOOTROM_PROT
/*---------------------------------------------------------------------------*
Name: STUPi_StartHandler
@ -39,57 +38,39 @@ asm void STUPi_StartHandler( void )
#ifndef BROM_ENABLE_BOOTROM_WRITE
ldr r3, =REG_DEVROM_ADDR
ldr r3, =REG_ROM_ADDR
ldrb r1, [r3]
bic r1, #REG_CFG_DEVROM_WE_MASK
bic r1, #REG_SCFG_ROM_WE_MASK
strb r1, [r3]
#endif // BROM_ENABLE_BOOTROM_WRITE
//---- set IME = 0
// ( use that LSB of HW_REG_BASE equal to 0 )
mov r12, #HW_REG_BASE
str r12, [r12, #REG_IME_OFFSET]
#ifndef BROM_DISABLE_BOOTROM_PROT
// init BROM prot
ldr r3, =REG_PROT_ADDR
ldr r1, =4*8 // 0x1204
strh r1, [r3]
#endif // BROM_DISABLE_BOOTROM_PROT
//---- initialize stack pointer
// SVC mode
mov r0, #HW_PSR_SVC_MODE
msr cpsr_c, r0
ldr sp, =HW_PRV_WRAM_SVC_STACK_END
ldr sp, =HW_BROM_SVC_STACK_END
// IRQ mode
mov r0, #HW_PSR_IRQ_MODE
msr cpsr_c, r0
ldr r0, =HW_PRV_WRAM_IRQ_STACK_END
ldr r0, =HW_BROM_IRQ_STACK_END
mov sp, r0
// System mode
ldr r1, =HW_IRQ_STACK_SIZE
sub r1, r0, r1
mov r0, #HW_PSR_SYS_MODE
msr cpsr_csfx, r0
sub sp, r1, #4 // 4byte for stack check code
ldr r0, =HW_BROM_SYS_STACK_END
mov sp, r0
//---- clear wram top
//---- clear wram
// 1KB
mov r0, #0
ldr r1, =HW_WRAM_AREA_END
ldr r1, =HW_PRV_WRAM_END
mov r2, #0x0400
sub r1, r1, r2
bl STUPi_CpuClear32
//---- mapping WRAM for itself
bl STUPi_MappingWram
//---- lnitialize sections
bl stupInitSections

View File

@ -27,58 +27,14 @@
Returns: None.
*---------------------------------------------------------------------------*/
#ifdef SDK_ARM9
#define BROM_EXCP_STACK_SIZE 16
#else // SDK_ARM7
#define BROM_EXCP_STACK_SIZE 12
#endif // SDK_ARM7
asm void STUPi_DbgHandler( void )
{
mrs sp, cpsr // IRQ/FIQ•s‰Â
orr sp, sp, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE
msr cpsr_cxsf, sp
#ifdef SDK_ARM9
ldr sp, =HW_EXCP_VECTOR_MAIN
#else // SDK_ARM7
ldr sp, =HW_BROM_SYSRV_END - HW_BROM_SYSRV_IOFS_EXCP_VECTOR
#endif // SDK_ARM7
add sp, sp, #1
fiq_m
stmfd sp!, {r12, lr} // レジスタの退避合計4ワード
mrs lr, spsr
#ifdef SDK_ARM7
stmfd sp!, {lr}
#else // SDK_ARM9
mrc p15, 0, r12, c1, c0, 0 // コプロセッサ・マスタ退避
stmfd sp!, {r12, lr}
bic r12, r12, #HW_C1_PROTECT_UNIT_ENABLE
mcr p15, 0, r12, c1, c0, 0
#endif // SDK_ARM9
bic r12, sp, #1 // デバッガ処理へジャンプ
ldr r12, [r12, #BROM_EXCP_STACK_SIZE]
cmp r12, #0
#ifdef SDK_ARM9
blxne r12
#else // SDK_ARM7
adr lr, fiq_return
bxne r12
#endif // SDK_ARM7
fiq_return
#ifdef SDK_ARM9
ldmfd sp!, {r12, lr}
mcr p15, 0, r12, c1, c0, 0
#else // SDK_ARM7
ldmfd sp!, {lr}
#endif // SDK_ARM7
msr spsr_sxcf, lr
ldmfd sp!, {r12, lr}
subs pc, lr, #4
dbg_m
b dbg_m
LTORG
}
@ -94,27 +50,15 @@ fiq_return
*---------------------------------------------------------------------------*/
asm void STUPi_IrqHandler( void )
{
stmfd sp!, {r0-r3,r12,lr} // レジスタの退避6ワード
#ifdef SDK_ARM9
mrc p15, 0, r0, c9, c1, 0 // DTCMƒAƒhƒŒƒXŠl“¾
mov r0, r0, lsr #HW_C9_TCMR_BASE_SHIFT
mov r0, r0, lsl #HW_C9_TCMR_BASE_SHIFT
add r0, r0, #HW_DTCM_SIZE
#endif // SDK_ARM9
#else // SDK_ARM7
#ifdef BROM_SYSRV_LOWVEC
ldr r0, =HW_BROM_SYSRV_END
#else // BROM_SYSRV_HIGHVEC
mov r0, #HW_BROM_SYSRV_END
#endif // BROM_SYSRV_HIGHVEC
#endif // SDK_ARM7
adr lr, irq_return
ldr pc, [r0, #-HW_BROM_SYSRV_IOFS_INTR_VECTOR]
irq_return
ldmfd sp!, {r0-r3,r12,lr}
subs pc, lr, #4
irq_m
b irq_m
LTORG
}

View File

@ -57,23 +57,30 @@ extern "C" {
#define HW_BROM_TO_FIRM_BUF_SIZE HW_FIRM_FROM_BROM_BUF_SIZE // 12KB
//------------------------------------- HW_BROM_STACK
#define HW_BROM_STACK (HW_WRAM_AREA_END - 0x1000)
#define HW_BROM_STACK_END HW_BROM_SYSRV
#define HW_BROM_STACK_SIZE (HW_BROM_STACK_END - HW_BROM_STACK) // <20>à4KB
#define HW_BROM_STACK (HW_BROM_STACK_END - HW_BROM_STACK_SIZE)
#define HW_BROM_STACK_END HW_DTCM_END
#define HW_BROM_STACK_SIZE HW_DTCM_SIZE // 16KB
#define HW_BROM_SVC_STACK (HW_BROM_SVC_STACK_END - HW_BROM_SVC_STACK_SIZE)
#define HW_BROM_SVC_STACK_END HW_BROM_STACK_END
#define HW_BROM_SVC_STACK_SIZE 0x100 // 256B
#define HW_BROM_IRQ_STACK (HW_BROM_SVC_STACK_END - HW_BROM_SVC_STACK_SIZE)
#define HW_BROM_IRQ_STACK_END HW_BROM_SVC_STACK
#define HW_BROM_IRQ_STACK_SIZE (0x1000 - HW_BROM_SVC_STACK_SIZE) // 4KB - 256B
#define HW_BROM_SYS_STACK (HW_BROM_SYS_STACK_END - HW_BROM_SYS_STACK_SIZE)
#define HW_BROM_SYS_STACK_END HW_BROM_IRQ_STACK
#define HW_BROM_SYS_STACK_SIZE (HW_BROM_STACK_SIZE - HW_BROM_IRQ_STACK_SIZE - HW_BROM_SVC_STACK_SIZE) // 12KB
//------------------------------------- BROM_SYSRV
#ifdef BROM_SYSRV_LOWVEC
#define HW_BROM_SYSRV HW_PRV_WRAM_SYSRV
#define HW_BROM_SYSRV HW_PRV_WRAM
#define HW_BROM_SYSRV_END (HW_BROM_SYSRV + HW_BROM_SYSRV_SIZE)
#else // BROM_SYSRV_HIGHVEC
#define HW_BROM_SYSRV (HW_BROM_SYSRV_END - HW_BROM_SYSRV_SIZE)
#define HW_BROM_SYSRV_END HW_WRAM_AREA_END
#endif
#define HW_BROM_SYSRV_SIZE HW_PRV_WRAM_SYSRV_SIZE
#define HW_BROM_SYSRV_SIZE 0x1000 // 4KB
#define HW_BROM_SYSRV_IOFS_EXCP_VECTOR (HW_PRV_WRAM_SYSRV_SIZE - HW_PRV_WRAM_SYSRV_OFS_EXCP_VECTOR)
#define HW_BROM_SYSRV_IOFS_INTR_CHECK (HW_PRV_WRAM_SYSRV_SIZE - HW_PRV_WRAM_SYSRV_OFS_INTR_CHECK)
#define HW_BROM_SYSRV_IOFS_INTR_CHECK2 (HW_PRV_WRAM_SYSRV_SIZE - HW_PRV_WRAM_SYSRV_OFS_INTR_CHECK2)
#define HW_BROM_SYSRV_IOFS_INTR_VECTOR (HW_PRV_WRAM_SYSRV_SIZE - HW_PRV_WRAM_SYSRV_OFS_INTR_VECTOR)
//------------------------------------- BIOS_ENTRY

View File

@ -24,7 +24,8 @@ extern "C" {
#include <brom/types.h>
#include <brom/memorymap.h>
#include <ctr/hw/common/arm_reg_common.h>
#include <ctr/arm_reg.h>
#include <ctr/os/common/svc.h>
#include <brom/init/crt0.h>
#if 0

View File

@ -17,16 +17,9 @@
#ifndef BROM_TYPES_H_
#define BROM_TYPES_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <brom/brom_defs.h>
#include <brom/c_extension.h>
#include <ctr/types.h>
#ifdef __cplusplus
} /* extern "C" */
#endif
/* BROM_TYPES_H_ */
#endif

View File

@ -0,0 +1,21 @@
/*---------------------------------------------------------------------------*
Project: CtrFirm - include -
File: ctr/arm_reg.h
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Date:: 2008-11-28#$
$Rev: 41 $
$Author: nakasima $
*---------------------------------------------------------------------------*/
#ifdef SDK_ARM11
#include <ctr/hw/ARM11/arm11_reg.h>
#else //SDK_ARM9
#include <ctr/hw/ARM9/arm9_reg.h>
#endif

View File

@ -0,0 +1,200 @@
/*---------------------------------------------------------------------------*
Project: CtrFirm - HW - include
File: armArch.h
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Date:: 2008-11-28#$
$Rev: 42 $
$Author: nakasima $
*---------------------------------------------------------------------------*/
#ifndef CTR_HW_ARM9_REG_H_
#define CTR_HW_ARM9_REG_H_
#ifndef SDK_ASM
#include <ctr/hw/common/arm_reg_common.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define HW_ICACHE_SIZE 0x2000 // 命令キャッシュ
#define HW_DCACHE_SIZE 0x1000 // データキャッシュ
#define HW_CACHE_LINE_SIZE 32
#define HW_SYSTEM_CLOCK 33514000 // 正確には33513982?
#define HW_CPU_CLOCK_ARM9 67027964
#define HW_CPU_CLOCK HW_CPU_CLOCK_ARM9
//----------------------------------------------------------------------
// システムコントロールコプロセッサ
//----------------------------------------------------------------------
// レジスタ1(マスタコントロール)
#define HW_C1_SB1_BITSET 0x00000078 // レジスタ1用1固定ビット列
#define HW_C1_ITCM_LOAD_MODE 0x00080000 // 命令TCM ロードモード
#define HW_C1_DTCM_LOAD_MODE 0x00020000 // データTCM ロードモード
#define HW_C1_ITCM_ENABLE 0x00040000 // 命令TCM イネーブル
#define HW_C1_DTCM_ENABLE 0x00010000 // データTCM イネーブル
#define HW_C1_LD_INTERWORK_DISABLE 0x00008000 // ロード命令によるインターワーキング ディセーブル
#define HW_C1_CACHE_ROUND_ROBIN 0x00004000 // キャッシュ置換アルゴリズム ラウンドロビン(最悪時のヒット率が安定)
#define HW_C1_CACHE_PSEUDO_RANDOM 0x00000000 // 擬似ランダム
#define HW_C1_EXCEPT_VEC_UPPER 0x00002000 // 例外ベクタ 上位アドレス(こちらに設定して下さい)
#define HW_C1_EXCEPT_VEC_LOWER 0x00000000 // 下位アドレス
#define HW_C1_ICACHE_ENABLE 0x00001000 // 命令キャッシュ イネーブル
#define HW_C1_DCACHE_ENABLE 0x00000004 // データキャッシュ イネーブル
#define HW_C1_LITTLE_ENDIAN 0x00000000 // リトルエンディアン
#define HW_C1_BIG_ENDIAN 0x00000080 // ビッグエンディアン
#define HW_C1_PROTECT_UNIT_ENABLE 0x00000001 // プロテクションユニット イネーブル
#define HW_C1_ICACHE_ENABLE_SHIFT 12
#define HW_C1_DCACHE_ENABLE_SHIFT 2
// レジスタ2(プロテクションリージョン・キャッシュ設定)
#define HW_C2_PR0_SFT 0 // プロテクションリージョン0
#define HW_C2_PR1_SFT 1 //
#define HW_C2_PR2_SFT 2 //
#define HW_C2_PR3_SFT 3 //
#define HW_C2_PR4_SFT 4 //
#define HW_C2_PR5_SFT 5 //
#define HW_C2_PR6_SFT 6 //
#define HW_C2_PR7_SFT 7 //
// レジスタ3(プロテクションリージョン・ライトバッファ設定)
#define HW_C3_PR0_SFT 0 // プロテクションリージョン0
#define HW_C3_PR1_SFT 1 //
#define HW_C3_PR2_SFT 2 //
#define HW_C3_PR3_SFT 3 //
#define HW_C3_PR4_SFT 4 //
#define HW_C3_PR5_SFT 5 //
#define HW_C3_PR6_SFT 6 //
#define HW_C3_PR7_SFT 7 //
// レジスタ5(プロテクションリージョン・アクセス許可)
#define HW_C5_PERMIT_MASK 0xf // プロテクションリージョンアクセス許可マスク
#define HW_C5_PERMIT_NA 0 // アクセス不許可
#define HW_C5_PERMIT_RW 1 // リードライト許可
#define HW_C5_PERMIT_RO 5 // リードオンリー許可
#define HW_C5_PR0_SFT 0 // プロテクションリージョン0
#define HW_C5_PR1_SFT 4 //
#define HW_C5_PR2_SFT 8 //
#define HW_C5_PR3_SFT 12 //
#define HW_C5_PR4_SFT 16 //
#define HW_C5_PR5_SFT 20 //
#define HW_C5_PR6_SFT 24 //
#define HW_C5_PR7_SFT 28 //
// レジスタ6(プロテクションリージョン・ベースアドレス/サイズ)
#define HW_C6_PR_SIZE_MASK 0x0000003e // プロテクションリージョン サイズ
#define HW_C6_PR_BASE_MASK 0xfffff000 // ベースアドレス
#define HW_C6_PR_SIZE_SHIFT 1
#define HW_C6_PR_BASE_SHIFT 12
#define HW_C6_PR_ENABLE 1 // プロテクションリージョン イネーブル
#define HW_C6_PR_DISABLE 0 // ディセーブル
#define HW_C6_PR_4KB 0x16 // リージョンサイズ
#define HW_C6_PR_8KB 0x18 //
#define HW_C6_PR_16KB 0x1a //
#define HW_C6_PR_32KB 0x1c //
#define HW_C6_PR_64KB 0x1e //
#define HW_C6_PR_128KB 0x20 //
#define HW_C6_PR_256KB 0x22 //
#define HW_C6_PR_512KB 0x24 //
#define HW_C6_PR_1MB 0x26 //
#define HW_C6_PR_2MB 0x28 //
#define HW_C6_PR_4MB 0x2a //
#define HW_C6_PR_8MB 0x2c //
#define HW_C6_PR_16MB 0x2e //
#define HW_C6_PR_32MB 0x30 //
#define HW_C6_PR_64MB 0x32 //
#define HW_C6_PR_128MB 0x34 //
#define HW_C6_PR_256MB 0x36 //
#define HW_C6_PR_512MB 0x38 //
#define HW_C6_PR_1GB 0x3a //
#define HW_C6_PR_2GB 0x3c //
#define HW_C6_PR_4GB 0x3e //
// レジスタ7.13(命令キャッシュ・プリフェッチ)
#define HW_C7_ICACHE_PREFCHP_MASK 0xffffffe0 // 命令キャッシュ プリフェッチアドレス
// レジスタ7.10、7.14(キャッシュインデックス操作)
#define HW_C7_ICACHE_INDEX_MASK 0x00000fe0 // 命令キャッシュ インデックス
#define HW_C7_DCACHE_INDEX_MASK 0x000003e0 // データキャッシュ インデックス
#define HW_C7_CACHE_SET_NO_MASK 0xc0000000 // キャッシュ セットNo
#define HW_C7_CACHE_INDEX_SHIFT 5
#define HW_C7_CACHE_SET_NO_SHIFT 30
// レジスタ9.0(キャッシュロックダウン)
#define HW_C9_LOCKDOWN_SET_NO_MASK 0x00000003 // キャッシュロックダウン セットNo
#define HW_C9_LOCKDOWN_SET_NO_SHIFT 0
#define HW_C9_LOCKDOWN_LOAD_MODE 0x80000000 // キャッシュロックダウン ロードモード
// レジスタ9.1(TCMベースアドレス/サイズ)
#define HW_C9_TCMR_SIZE_MASK 0x0000003e // TCMリージョン サイズ
#define HW_C9_TCMR_BASE_MASK 0xfffff000 // ベースアドレス
#define HW_C9_TCMR_SIZE_SHIFT 1
#define HW_C9_TCMR_BASE_SHIFT 12
#define HW_C9_TCMR_4KB 0x06 // リージョンサイズ
#define HW_C9_TCMR_8KB 0x08 //
#define HW_C9_TCMR_16KB 0x0a //
#define HW_C9_TCMR_32KB 0x0c //
#define HW_C9_TCMR_64KB 0x0e //
#define HW_C9_TCMR_128KB 0x10 //
#define HW_C9_TCMR_256KB 0x12 //
#define HW_C9_TCMR_512KB 0x14 //
#define HW_C9_TCMR_1MB 0x16 //
#define HW_C9_TCMR_2MB 0x18 //
#define HW_C9_TCMR_4MB 0x1a //
#define HW_C9_TCMR_8MB 0x1c //
#define HW_C9_TCMR_16MB 0x1e //
#define HW_C9_TCMR_32MB 0x20 //
#define HW_C9_TCMR_64MB 0x22 //
#define HW_C9_TCMR_128MB 0x24 //
#define HW_C9_TCMR_256MB 0x26 //
#define HW_C9_TCMR_512MB 0x28 //
#define HW_C9_TCMR_1GB 0x2a //
#define HW_C9_TCMR_2GB 0x2c //
#define HW_C9_TCMR_4GB 0x2e //
#ifdef __cplusplus
} /* extern "C" */
#endif
/* CTR_HW_ARM9_REG_H_ */
#endif

View File

@ -16,6 +16,7 @@
*---------------------------------------------------------------------------*/
#ifndef CTR_HW_ARM9_MMAP_GLOBAL_H_
#define CTR_HW_ARM9_MMAP_GLOBAL_H_
#ifdef __cplusplus
extern "C" {
#endif
@ -25,6 +26,17 @@ extern "C" {
GLOBAL MEMORY MAP
*---------------------------------------------------------------------------*/
//----------------------------- ITCM
#define HW_ITCM_IMAGE 0x01000000
#define HW_ITCM 0x01ff8000
#define HW_ITCM_SIZE 0x8000
#define HW_ITCM_END (HW_ITCM + HW_ITCM_SIZE)
//----------------------------- DTCM
#define HW_DTCM (HW_BIOS - HW_DTCM_SIZE*2)
#define HW_DTCM_END (HW_DTCM + HW_DTCM_SIZE)
#define HW_DTCM_SIZE 0x4000
//----------------------------- MAIN
#define HW_MAIN_MEM 0x20000000
#define HW_MAIN_MEM_SIZE 0x04000000

View File

@ -14,7 +14,6 @@
$Rev: 41 $
$Author: nakasima $
*---------------------------------------------------------------------------*/
#ifndef CTR_MISC_H_
#define CTR_MISC_H_

View File

@ -0,0 +1,30 @@
/*---------------------------------------------------------------------------*
Project: CtrFirm - OS - include
File: svc.h
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef FIRM_OS_SVC_H_
#define FIRM_OS_SVC_H_
#include <ctr/os/common/svc_id.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
/* FIRM_OS_SVC_H_ */
#endif

View File

@ -0,0 +1,50 @@
/*---------------------------------------------------------------------------*
Project: CtrFirm - OS - include
File: svc_id.h
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Date:: 2008-11-28#$
$Rev: 42 $
$Author: nakasima $
*---------------------------------------------------------------------------*/
#ifndef FIRM_OS_SVC_ID_H_
#define FIRM_OS_SVC_ID_H_
#include <ctr/types.h>
#ifdef __cplusplus
extern "C" {
#endif
#define SVC_ID_PREMASK 0x3f
#define SVC_ID_SHIFT 1
#define SVC_ID_SEMIHOST_ARM 0x12
#define SVC_ID_SEMIHOST_THUMB 0xab
typedef enum
{
SVC_ID_DEC_SIGN = 34,
SVC_ID_WAIT_BY_LOOP = 3,
// reserve 0x2b for semihosting (0xab & 0x3f == 0x2b)
// overlap semihosting ((0x123456>>16) & 0x3f == 0x12)
}
OSSvcID;
#ifdef __cplusplus
} /* extern "C" */
#endif
/* FIRM_OS_SVC_ID_H_ */
#endif