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@241 b871894f-2f95-9b40-918c-086798483c85
201 lines
9.4 KiB
C
201 lines
9.4 KiB
C
/*---------------------------------------------------------------------------*
|
||
Project: CtrFirm - HW - include
|
||
File: arm9_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:: $
|
||
$Rev$
|
||
$Author$
|
||
*---------------------------------------------------------------------------*/
|
||
#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_CPU_CLOCK_ARM9 (67027964 * 2)
|
||
#define HW_CPU_CLOCK HW_CPU_CLOCK_ARM9
|
||
|
||
#define HW_IC_SIZE 0x2000 // 命令キャッシュ
|
||
#define HW_DC_SIZE 0x1000 // データキャッシュ
|
||
#define HW_CACHE_LINE_SIZE 32
|
||
|
||
#define HW_SYSTEM_CLOCK (33514000 * 2) // 正確には33513982?
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// システムコントロールコプロセッサ
|
||
//----------------------------------------------------------------------
|
||
|
||
// レジスタ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_IC_ENABLE 0x00001000 // 命令キャッシュ イネーブル
|
||
#define HW_C1_DC_ENABLE 0x00000004 // データキャッシュ イネーブル
|
||
#define HW_C1_LITTLE_ENDIAN 0x00000000 // リトルエンディアン
|
||
#define HW_C1_BIG_ENDIAN 0x00000080 // ビッグエンディアン
|
||
#define HW_C1_PROTECT_UNIT_ENABLE 0x00000001 // プロテクションユニット イネーブル
|
||
|
||
#define HW_C1_IC_ENABLE_SFT 12
|
||
#define HW_C1_DC_ENABLE_SFT 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_SFT 1
|
||
#define HW_C6_PR_BASE_SFT 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_WAY_NO_MASK 0xc0000000 // キャッシュ ウェイNo
|
||
|
||
#define HW_C7_CACHE_INDEX_SFT 5
|
||
#define HW_C7_CACHE_WAY_NO_SFT 30
|
||
|
||
|
||
// レジスタ9.0(キャッシュロックダウン)
|
||
|
||
#define HW_C9_LOCKDOWN_WAY_NO_MASK 0x00000003 // キャッシュロックダウン ウェイNo
|
||
|
||
#define HW_C9_LOCKDOWN_WAY_NO_SFT 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_SFT 1
|
||
#define HW_C9_TCMR_BASE_SFT 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
|