mirror of
https://github.com/rvtr/ctr_firmware.git
synced 2025-10-31 07:51:08 -04:00
スタートアップのビルドが通る状態。
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:
parent
89f91e6a66
commit
797b6c4db5
@ -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
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
21
trunk/include/ctr/arm_reg.h
Normal file
21
trunk/include/ctr/arm_reg.h
Normal 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
|
||||
200
trunk/include/ctr/hw/ARM9/arm9_reg.h
Normal file
200
trunk/include/ctr/hw/ARM9/arm9_reg.h
Normal 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 // 1
|
||||
#define HW_C2_PR2_SFT 2 // 2
|
||||
#define HW_C2_PR3_SFT 3 // 3
|
||||
#define HW_C2_PR4_SFT 4 // 4
|
||||
#define HW_C2_PR5_SFT 5 // 5
|
||||
#define HW_C2_PR6_SFT 6 // 6
|
||||
#define HW_C2_PR7_SFT 7 // 7
|
||||
|
||||
|
||||
// レジスタ3(プロテクションリージョン・ライトバッファ設定)
|
||||
|
||||
#define HW_C3_PR0_SFT 0 // プロテクションリージョン0
|
||||
#define HW_C3_PR1_SFT 1 // 1
|
||||
#define HW_C3_PR2_SFT 2 // 2
|
||||
#define HW_C3_PR3_SFT 3 // 3
|
||||
#define HW_C3_PR4_SFT 4 // 4
|
||||
#define HW_C3_PR5_SFT 5 // 5
|
||||
#define HW_C3_PR6_SFT 6 // 6
|
||||
#define HW_C3_PR7_SFT 7 // 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 // 1
|
||||
#define HW_C5_PR2_SFT 8 // 2
|
||||
#define HW_C5_PR3_SFT 12 // 3
|
||||
#define HW_C5_PR4_SFT 16 // 4
|
||||
#define HW_C5_PR5_SFT 20 // 5
|
||||
#define HW_C5_PR6_SFT 24 // 6
|
||||
#define HW_C5_PR7_SFT 28 // 7
|
||||
|
||||
|
||||
// レジスタ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 // リージョンサイズ 4KByte
|
||||
#define HW_C6_PR_8KB 0x18 // 8KByte
|
||||
#define HW_C6_PR_16KB 0x1a // 16KByte
|
||||
#define HW_C6_PR_32KB 0x1c // 32KByte
|
||||
#define HW_C6_PR_64KB 0x1e // 64KByte
|
||||
#define HW_C6_PR_128KB 0x20 // 128KByte
|
||||
#define HW_C6_PR_256KB 0x22 // 256KByte
|
||||
#define HW_C6_PR_512KB 0x24 // 512KByte
|
||||
#define HW_C6_PR_1MB 0x26 // 1MByte
|
||||
#define HW_C6_PR_2MB 0x28 // 2MByte
|
||||
#define HW_C6_PR_4MB 0x2a // 4MByte
|
||||
#define HW_C6_PR_8MB 0x2c // 8MByte
|
||||
#define HW_C6_PR_16MB 0x2e // 16MByte
|
||||
#define HW_C6_PR_32MB 0x30 // 32MByte
|
||||
#define HW_C6_PR_64MB 0x32 // 64MByte
|
||||
#define HW_C6_PR_128MB 0x34 // 128MByte
|
||||
#define HW_C6_PR_256MB 0x36 // 256MByte
|
||||
#define HW_C6_PR_512MB 0x38 // 512MByte
|
||||
#define HW_C6_PR_1GB 0x3a // 1GByte
|
||||
#define HW_C6_PR_2GB 0x3c // 2GByte
|
||||
#define HW_C6_PR_4GB 0x3e // 4GByte
|
||||
|
||||
|
||||
// レジスタ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 // リージョンサイズ 4KByte
|
||||
#define HW_C9_TCMR_8KB 0x08 // 8KByte
|
||||
#define HW_C9_TCMR_16KB 0x0a // 16KByte
|
||||
#define HW_C9_TCMR_32KB 0x0c // 32KByte
|
||||
#define HW_C9_TCMR_64KB 0x0e // 64KByte
|
||||
#define HW_C9_TCMR_128KB 0x10 // 128KByte
|
||||
#define HW_C9_TCMR_256KB 0x12 // 256KByte
|
||||
#define HW_C9_TCMR_512KB 0x14 // 512KByte
|
||||
#define HW_C9_TCMR_1MB 0x16 // 1MByte
|
||||
#define HW_C9_TCMR_2MB 0x18 // 2MByte
|
||||
#define HW_C9_TCMR_4MB 0x1a // 4MByte
|
||||
#define HW_C9_TCMR_8MB 0x1c // 8MByte
|
||||
#define HW_C9_TCMR_16MB 0x1e // 16MByte
|
||||
#define HW_C9_TCMR_32MB 0x20 // 32MByte
|
||||
#define HW_C9_TCMR_64MB 0x22 // 64MByte
|
||||
#define HW_C9_TCMR_128MB 0x24 // 128MByte
|
||||
#define HW_C9_TCMR_256MB 0x26 // 256MByte
|
||||
#define HW_C9_TCMR_512MB 0x28 // 512MByte
|
||||
#define HW_C9_TCMR_1GB 0x2a // 1GByte
|
||||
#define HW_C9_TCMR_2GB 0x2c // 2GByte
|
||||
#define HW_C9_TCMR_4GB 0x2e // 4GByte
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
/* CTR_HW_ARM9_REG_H_ */
|
||||
#endif
|
||||
@ -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
|
||||
|
||||
@ -14,7 +14,6 @@
|
||||
$Rev: 41 $
|
||||
$Author: nakasima $
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef CTR_MISC_H_
|
||||
#define CTR_MISC_H_
|
||||
|
||||
|
||||
30
trunk/include/ctr/os/common/svc.h
Normal file
30
trunk/include/ctr/os/common/svc.h
Normal 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
|
||||
50
trunk/include/ctr/os/common/svc_id.h
Normal file
50
trunk/include/ctr/os/common/svc_id.h
Normal 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
|
||||
Loading…
Reference in New Issue
Block a user