From d8d4cf3fca9d9cb0f84f5a65510fd9277b35841b Mon Sep 17 00:00:00 2001 From: yutaka Date: Thu, 24 Jan 2008 01:54:48 +0000 Subject: [PATCH] =?UTF-8?q?FINALROM=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@509 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../hotsw/ARM7/include/hotswTypes.h | 254 +++++++++--------- 1 file changed, 128 insertions(+), 126 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h b/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h index c618e494..931e6389 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h +++ b/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h @@ -23,79 +23,81 @@ extern "C" { // Define ------------------------------------------------------------------- -#define HOTSW_NO_MESSAGE // Printf抑制スイッチ +#define HOTSW_NO_MESSAGE // Printf抑制スイッチ -#ifdef HOTSW_NO_MESSAGE -#define OS_TPrintf( ... ) ((void)0) -#define OS_PutString( ... ) ((void)0) +#ifdef HOTSW_NO_MESSAGE +#ifndef SDK_FINALROM +#define OS_TPrintf( ... ) ((void)0) +#define OS_PutString( ... ) ((void)0) +#endif #endif -#define KEY_BUF_SIZE 3 // Blowfishキーのバッファサイズ -#define HOTSW_DMA_NO 2 // -#define BOOT_SEGMENT_SIZE 0x1000 // Boot Segment領域のサイズ +#define KEY_BUF_SIZE 3 // Blowfishキーのバッファサイズ +#define HOTSW_DMA_NO 2 // +#define BOOT_SEGMENT_SIZE 0x1000 // Boot Segment領域のサイズ -#define PAGE_SIZE 0x200 // 1ページのサイズ(バイト単位) -#define PAGE_WORD_SIZE 0x80 // 1ページのサイズ(ワード単位) +#define PAGE_SIZE 0x200 // 1ページのサイズ(バイト単位) +#define PAGE_WORD_SIZE 0x80 // 1ページのサイズ(ワード単位) -#define ONE_SEGMENT_SIZE 0x1000 // 1 Segmentのサイズ(バイト単位) -#define ONE_SEGMENT_WORD_SIZE 0x400 // 1 Segmentのサイズ(ワード単位) +#define ONE_SEGMENT_SIZE 0x1000 // 1 Segmentのサイズ(バイト単位) +#define ONE_SEGMENT_WORD_SIZE 0x400 // 1 Segmentのサイズ(ワード単位) -#define SECURE_SEGMENT_SIZE 0x4000 // Secure領域のサイズ +#define SECURE_SEGMENT_SIZE 0x4000 // Secure領域のサイズ -#define ROM_EMULATION_DATA_SIZE 0x20 // ROMエミュレーションデータサイズ +#define ROM_EMULATION_DATA_SIZE 0x20 // ROMエミュレーションデータサイズ -#define PNA_BASE_VALUE 0x60e8 // -#define PNB_L_VALUE 0x879b9b05 // -#define PNB_H_VALUE 0x5c // +#define PNA_BASE_VALUE 0x60e8 // +#define PNB_L_VALUE 0x879b9b05 // +#define PNB_H_VALUE 0x5c // // コントロールレジスタ1 bit関連 -#define START_FLG_MASK 0x80000000 -#define READY_FLG_MASK 0x00800000 +#define START_FLG_MASK 0x80000000 +#define READY_FLG_MASK 0x00800000 -#define LATENCY1_SHIFT 0 -#define LATENCY1_MASK 0x00001fff +#define LATENCY1_SHIFT 0 +#define LATENCY1_MASK 0x00001fff -#define DS_SHIFT 13 -#define DS_MASK 0x00002000 +#define DS_SHIFT 13 +#define DS_MASK 0x00002000 -#define SE_SHIFT 14 -#define SE_MASK 0x00004000 +#define SE_SHIFT 14 +#define SE_MASK 0x00004000 -#define SCR_SHIFT 15 -#define SCR_MASK 0x00008000 +#define SCR_SHIFT 15 +#define SCR_MASK 0x00008000 -#define LATENCY2_SHIFT 16 -#define LATENCY2_MASK 0x003f0000 +#define LATENCY2_SHIFT 16 +#define LATENCY2_MASK 0x003f0000 -#define CS_SHIFT 22 -#define CS_MASK 0x00400000 +#define CS_SHIFT 22 +#define CS_MASK 0x00400000 -#define RDY_SHIFT 23 -#define RDY_MASK 0x00800000 +#define RDY_SHIFT 23 +#define RDY_MASK 0x00800000 -#define PC_SHIFT 24 -#define PC_MASK 0x07000000 +#define PC_SHIFT 24 +#define PC_MASK 0x07000000 -#define CT_SHIFT 27 -#define CT_MASK 0x08000000 +#define CT_SHIFT 27 +#define CT_MASK 0x08000000 -#define TRM_SHIFT 28 -#define TRM_MASK 0x10000000 +#define TRM_SHIFT 28 +#define TRM_MASK 0x10000000 -#define RESB_SHIFT 29 -#define RESB_MASK 0x20000000 +#define RESB_SHIFT 29 +#define RESB_MASK 0x20000000 -#define WR_SHIFT 30 -#define WR_MASK 0x40000000 +#define WR_SHIFT 30 +#define WR_MASK 0x40000000 -#define START_SHIFT 31 -#define START_MASK 0x80000000 +#define START_SHIFT 31 +#define START_MASK 0x80000000 -#define SCRAMBLE_MASK 0x00406000 +#define SCRAMBLE_MASK 0x00406000 #define AddLatency2ToLatency1(param)\ - ( (((param) & LATENCY2_MASK) \ + ( (((param) & LATENCY2_MASK) \ >> LATENCY2_SHIFT) \ + ((param) & LATENCY1_MASK) \ ) @@ -104,70 +106,70 @@ extern "C" { #ifdef USE_SLOT_A // Slot A -#define SLOT_STATUS_MODE_SELECT_MSK 0x0c -#define SLOT_STATUS_CDET_MSK 0x01 -#define SLOT_STATUS_MODE_00 0x00 -#define SLOT_STATUS_MODE_01 0x04 -#define SLOT_STATUS_MODE_10 0x08 -#define SLOT_STATUS_MODE_11 0x0c +#define SLOT_STATUS_MODE_SELECT_MSK 0x0c +#define SLOT_STATUS_CDET_MSK 0x01 +#define SLOT_STATUS_MODE_00 0x00 +#define SLOT_STATUS_MODE_01 0x04 +#define SLOT_STATUS_MODE_10 0x08 +#define SLOT_STATUS_MODE_11 0x0c -#define reg_HOTSW_MCCMD0 reg_MI_MCCMD0_A -#define reg_HOTSW_MCCMD1 reg_MI_MCCMD1_A +#define reg_HOTSW_MCCMD0 reg_MI_MCCMD0_A +#define reg_HOTSW_MCCMD1 reg_MI_MCCMD1_A -#define reg_HOTSW_MCCNT0 reg_MI_MCCNT0_A -#define reg_HOTSW_MCCNT1 reg_MI_MCCNT1_A +#define reg_HOTSW_MCCNT0 reg_MI_MCCNT0_A +#define reg_HOTSW_MCCNT1 reg_MI_MCCNT1_A -#define HOTSW_MCD1 REG_MCD1_A_ADDR -#define reg_HOTSW_MCD1 reg_MI_MCD1_A +#define HOTSW_MCD1 REG_MCD1_A_ADDR +#define reg_HOTSW_MCD1 reg_MI_MCD1_A -#define reg_HOTSW_MCSCR0 reg_MI_MCSCR0_A -#define reg_HOTSW_MCSCR1 reg_MI_MCSCR1_A -#define reg_HOTSW_MCSCR2 reg_MI_MCSCR2_A +#define reg_HOTSW_MCSCR0 reg_MI_MCSCR0_A +#define reg_HOTSW_MCSCR1 reg_MI_MCSCR1_A +#define reg_HOTSW_MCSCR2 reg_MI_MCSCR2_A -#define HOTSW_IF_CARD_DET OS_IE_CARD_A_DET +#define HOTSW_IF_CARD_DET OS_IE_CARD_A_DET #else // Slot B -#define SLOT_STATUS_MODE_SELECT_MSK 0xc0 -#define SLOT_STATUS_CDET_MSK 0x10 -#define SLOT_STATUS_MODE_00 0x00 -#define SLOT_STATUS_MODE_01 0x40 -#define SLOT_STATUS_MODE_10 0x80 -#define SLOT_STATUS_MODE_11 0xc0 +#define SLOT_STATUS_MODE_SELECT_MSK 0xc0 +#define SLOT_STATUS_CDET_MSK 0x10 +#define SLOT_STATUS_MODE_00 0x00 +#define SLOT_STATUS_MODE_01 0x40 +#define SLOT_STATUS_MODE_10 0x80 +#define SLOT_STATUS_MODE_11 0xc0 -#define reg_HOTSW_MCCMD0 reg_MI_MCCMD0_B -#define reg_HOTSW_MCCMD1 reg_MI_MCCMD1_B +#define reg_HOTSW_MCCMD0 reg_MI_MCCMD0_B +#define reg_HOTSW_MCCMD1 reg_MI_MCCMD1_B -#define reg_HOTSW_MCCNT0 reg_MI_MCCNT0_B -#define reg_HOTSW_MCCNT1 reg_MI_MCCNT1_B +#define reg_HOTSW_MCCNT0 reg_MI_MCCNT0_B +#define reg_HOTSW_MCCNT1 reg_MI_MCCNT1_B -#define HOTSW_MCD1 REG_MCD1_B_ADDR -#define reg_HOTSW_MCD1 reg_MI_MCD1_B +#define HOTSW_MCD1 REG_MCD1_B_ADDR +#define reg_HOTSW_MCD1 reg_MI_MCD1_B -#define reg_HOTSW_MCSCR0 reg_MI_MCSCR0_B -#define reg_HOTSW_MCSCR1 reg_MI_MCSCR1_B -#define reg_HOTSW_MCSCR2 reg_MI_MCSCR2_B +#define reg_HOTSW_MCSCR0 reg_MI_MCSCR0_B +#define reg_HOTSW_MCSCR1 reg_MI_MCSCR1_B +#define reg_HOTSW_MCSCR2 reg_MI_MCSCR2_B -#define HOTSW_IF_CARD_DET OS_IE_CARD_B_DET +#define HOTSW_IF_CARD_DET OS_IE_CARD_B_DET #endif // Enum --------------------------------------------------------------------- typedef enum CardTypeEx{ - DS_CARD_TYPE_1 = 0, + DS_CARD_TYPE_1 = 0, DS_CARD_TYPE_2, TWL_CARD, ROM_EMULATION }CardTypeEx; typedef enum NormalCommandType{ - RD_ID = 0, + RD_ID = 0, RD_BSEG, CHG_MODE }NormalCommandType; typedef enum SecureCommandType{ - S_RD_ID = 0, + S_RD_ID = 0, S_RD_SEG, S_PNG_ON, S_PNG_OFF, @@ -175,12 +177,12 @@ typedef enum SecureCommandType{ }SecureCommandType; typedef enum GameCommandType{ - G_RD_ID = 0, + G_RD_ID = 0, G_RD_PAGE }GameCommandType; typedef enum CardType{ - CARD_DS_TYPE1 = 0, + CARD_DS_TYPE1 = 0, CARD_DS_TYPE2, CARD_TWL }CardType; @@ -188,77 +190,77 @@ typedef enum CardType{ // union --------------------------------------------------------------------- typedef union { - u64 dw; - u8 b[8]; + u64 dw; + u8 b[8]; } GCDCmd64; // ブートセグメントデータ typedef union BootSegmentData { - ROM_Header rh; - u32 word[BOOT_SEGMENT_SIZE / sizeof(u32)]; + ROM_Header rh; + u32 word[BOOT_SEGMENT_SIZE / sizeof(u32)]; } BootSegmentData; // struct ------------------------------------------------------------------- typedef struct BLOWFISH_CTX{ - u32 P[16 + 2]; - u32 S[4][256]; + u32 P[16 + 2]; + u32 S[4][256]; } BLOWFISH_CTX; // カードブート時に必要な変数一式をまとめた構造体 typedef struct CardBootData{ - u16 lockID; + u16 lockID; - u32 vae; - u32 vbi; - u32 vd; + u32 vae; + u32 vbi; + u32 vd; - u32 id_nml; - u32 id_scr; - u32 id_gam; + u32 id_nml; + u32 id_scr; + u32 id_gam; - u32 arm9StcSize; - u32 arm7StcSize; - u32 arm9LtdSize; - u32 arm7LtdSize; + u32 arm9StcSize; + u32 arm7StcSize; + u32 arm9LtdSize; + u32 arm7LtdSize; - u32 arm9Stc; - u32 arm7Stc; - u32 arm9Ltd; - u32 arm7Ltd; + u32 arm9Stc; + u32 arm7Stc; + u32 arm9Ltd; + u32 arm7Ltd; - u32 secureLatency; - - BOOL twlFlg; - BOOL debuggerFlg; - - u32 romEmuBuf[ROM_EMULATION_DATA_SIZE/sizeof(u32)]; - u32 keyBuf[KEY_BUF_SIZE]; - - u64 secureSegNum; + u32 secureLatency; - CardTypeEx cardType; - - BootSegmentData *pBootSegBuf; - u32 *pSecureSegBuf; - - BLOWFISH_CTX keyTable; + BOOL twlFlg; + BOOL debuggerFlg; + + u32 romEmuBuf[ROM_EMULATION_DATA_SIZE/sizeof(u32)]; + u32 keyBuf[KEY_BUF_SIZE]; + + u64 secureSegNum; + + CardTypeEx cardType; + + BootSegmentData *pBootSegBuf; + u32 *pSecureSegBuf; + + BLOWFISH_CTX keyTable; } CardBootData; // カード起動用関数 typedef struct CardBootFunction { - void (*ReadBootSegment_N)(CardBootData *cbd); - void (*ChangeMode_N)(CardBootData *cbd); + void (*ReadBootSegment_N)(CardBootData *cbd); + void (*ChangeMode_N)(CardBootData *cbd); - void (*ReadID_S)(CardBootData *cbd); - void (*ReadSegment_S)(CardBootData *cbd); - void (*SetPNG_S)(CardBootData *cbd); - void (*ChangeMode_S)(CardBootData *cbd); + void (*ReadID_S)(CardBootData *cbd); + void (*ReadSegment_S)(CardBootData *cbd); + void (*SetPNG_S)(CardBootData *cbd); + void (*ChangeMode_S)(CardBootData *cbd); - void (*ReadID_G)(CardBootData *cbd); + void (*ReadID_G)(CardBootData *cbd); void (*ReadPage_G)(CardBootData *cbd, u32 addr, void* buf, u32 size); } CardBootFunction;