From 65605d7f323a422e717c7393ce47e1c6fb895047 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Thu, 22 Nov 2007 01:54:41 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=BB=E6=B4=BB=E7=B7=9A=E6=8C=BF=E6=8A=9C?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E9=96=A2=E4=BF=82?= =?UTF-8?q?=E3=81=AE=E8=A8=98=E8=BF=B0=E8=AA=BF=E6=95=B4=E3=80=82=20?= =?UTF-8?q?=E3=83=BB=E6=B4=BB=E7=B7=9A=E6=8C=BF=E6=8A=9C=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=96=E3=83=A9=E3=83=AA=E3=81=AE=E3=82=AB=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=83=89static=E3=83=90=E3=83=83=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=92=E5=89=8A=E9=99=A4=E3=81=97=E3=80=81systemMen?= =?UTF-8?q?u=E4=BA=88=E7=B4=84=E9=A0=98=E5=9F=9F=E3=81=AB=E3=83=AD?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=80=82?= 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@245 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/buildtools/commondefs.sysmenu | 6 ++++-- build/components/hyena.TWL/hyena.lsf | 2 +- build/components/hyena.TWL/src/main.c | 4 ++-- build/libraries_sysmenu/boot/ARM7/src/boot.c | 2 +- build/libraries_sysmenu/card/ARM7/src/Card.c | 13 ++++--------- build/systemMenu_RED/Launcher/ARM9/Makefile | 1 + include/sysmenu/hw/common/mmap.h | 16 +++++++++++----- 7 files changed, 24 insertions(+), 20 deletions(-) diff --git a/build/buildtools/commondefs.sysmenu b/build/buildtools/commondefs.sysmenu index 99cb6e01..d074838a 100644 --- a/build/buildtools/commondefs.sysmenu +++ b/build/buildtools/commondefs.sysmenu @@ -61,12 +61,14 @@ SYSMENU_LIBS ?= \ libsysmenu$(TWL_LIBSUFFIX).a \ libsettings$(TWL_LIBSUFFIX).a \ libmbloader$(TWL_LIBSUFFIX).a \ - libacsign$(TWL_LIBSUFFIX).a + libacsign$(TWL_LIBSUFFIX).a \ +# libcardboot$(TWL_LIBSUFFIX).a else # ($(CODEGEN_PROC),ARM7) SYSMENU_LIBS ?= \ - libmbloader_sp$(TWL_LIBSUFFIX).a + libmbloader_sp$(TWL_LIBSUFFIX).a \ + libcardboot_sp$(TWL_LIBSUFFIX).a endif diff --git a/build/components/hyena.TWL/hyena.lsf b/build/components/hyena.TWL/hyena.lsf index 5d10bd6c..500b3ac4 100644 --- a/build/components/hyena.TWL/hyena.lsf +++ b/build/components/hyena.TWL/hyena.lsf @@ -55,6 +55,7 @@ Autoload WRAM libmicex_sp.TWL$(CODEGEN).a \ libboot_sp.TWL$(CODEGEN).a \ libreboot_sp.TWL$(CODEGEN).a \ + libcardboot_sp.TWL$(CODEGEN).a \ Library libsdio_hcd_twl.TWL$(CODEGEN).a \ libsdio_busdriver.TWL$(CODEGEN).a \ @@ -140,7 +141,6 @@ Ltdautoload LTDMAIN libnwm_sp.TWL$(CODEGEN).a \ libwvr_sp.TWL$(CODEGEN).a \ libwl_sp.TWL$(CODEGEN).a \ - libcardboot_sp.TWL$(CODEGEN).a \ Library libfatfs_sp.TWL$(CODEGEN).a \ $(USE_CRYPTO_LIBS) diff --git a/build/components/hyena.TWL/src/main.c b/build/components/hyena.TWL/src/main.c index 9613f271..352bfa4a 100644 --- a/build/components/hyena.TWL/src/main.c +++ b/build/components/hyena.TWL/src/main.c @@ -172,10 +172,10 @@ TwlSpMain(void) BOOT_Init(); // 活栓挿抜機能初期化 -// Cardm_Init(); + Cardm_Init(); // カードがささっていたらブート開始 -// Card_Boot(); + Card_Boot(); while (TRUE) { diff --git a/build/libraries_sysmenu/boot/ARM7/src/boot.c b/build/libraries_sysmenu/boot/ARM7/src/boot.c index cfe3173e..e055c441 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/boot.c +++ b/build/libraries_sysmenu/boot/ARM7/src/boot.c @@ -111,7 +111,7 @@ static asm void ClearBankREG_Stack( void ) bl CpuClear32Byte #endif // ISDBG_MB_CHILD_ - sub r0, r2, #( HW_PRV_WRAM_END - SYSM_BOOTCODE_ARM7_ADDR ) + sub r0, r2, #( HW_PRV_WRAM_END - SYSM_OWN_ARM7_WRAM_ADDR_END ) ldr r1, = ClearMemory bl CpuClear32Byte diff --git a/build/libraries_sysmenu/card/ARM7/src/Card.c b/build/libraries_sysmenu/card/ARM7/src/Card.c index ecf7f9ed..51a0e9a8 100644 --- a/build/libraries_sysmenu/card/ARM7/src/Card.c +++ b/build/libraries_sysmenu/card/ARM7/src/Card.c @@ -20,7 +20,7 @@ #include #include #include - +#include // define ------------------------------------------------------------------- #define STACK_SIZE 1024 // スタックサイズ #define MC_THREAD_PRIO 11 // カード電源ON → ゲームモードのスレッド優先度 @@ -65,9 +65,6 @@ static BootSegmentData *s_pBootSegBuffer; // static CardBootData s_cbData; -// temp value -------------------------------------------------------- -static BootSegmentData s_bootData ATTRIBUTE_ALIGN(32); -static u32 s_SecureData[SECURE_SEGMENT_SIZE / sizeof(u32)] ATTRIBUTE_ALIGN(32); // ------------------------------------------------------------------- static CardBootFunction s_funcTable[] = { @@ -123,10 +120,10 @@ void Cardm_Init(void) OS_WakeupThreadDirect(&s_MCThread); // Boot Segment バッファの設定 - Card_SetBootSegmentBuffer((void *)&s_bootData, sizeof(BootSegmentData)); + Card_SetBootSegmentBuffer((void *)SYSM_CARD_ROM_HEADER_BUFFER, 0x1000 ); // Secure Segment バッファの設定 - Card_SetSecureSegmentBuffer((void *)s_SecureData, sizeof(s_SecureData)); + Card_SetSecureSegmentBuffer((void *)SYSM_CARD_NTR_SECURE_BUFFER, SECURE_AREA_SIZE ); // モジュールロード用スレッドの生成 /* OS_CreateThread(&s_MLThread, @@ -208,7 +205,6 @@ BOOL Card_Boot(void) OS_TPrintf("TWL Card.\n"); s_cbData.twlFlg = TRUE; } - // Key Table初期化 GCDm_MakeBlowfishTableDS(&s_cbData.keyTable, &s_pBootSegBuffer->rh.s, s_cbData.keyBuf, 8); @@ -230,10 +226,9 @@ BOOL Card_Boot(void) // Arm9の常駐モジュールを指定先に転送 LoadStaticModule_Secure(); - // ゲームモードに移行 s_funcTable[s_cbData.cardType].ChangeMode_S(&s_cbData); - + // ---------------------- Game Mode ---------------------- // ID読み込み s_funcTable[s_cbData.cardType].ReadID_G(&s_cbData); diff --git a/build/systemMenu_RED/Launcher/ARM9/Makefile b/build/systemMenu_RED/Launcher/ARM9/Makefile index e9acf28d..a0aab21f 100644 --- a/build/systemMenu_RED/Launcher/ARM9/Makefile +++ b/build/systemMenu_RED/Launcher/ARM9/Makefile @@ -19,6 +19,7 @@ SUBDIRS = \ ../../../libraries_sysmenu/sysmenu \ ../../../libraries_sysmenu/boot \ + ../../../libraries_sysmenu/card \ ../../../components/hyena.TWL #---------------------------------------------------------------------------- diff --git a/include/sysmenu/hw/common/mmap.h b/include/sysmenu/hw/common/mmap.h index 4a72d77b..95d2a783 100644 --- a/include/sysmenu/hw/common/mmap.h +++ b/include/sysmenu/hw/common/mmap.h @@ -28,16 +28,22 @@ extern "C" { // SystemMenu自身のマップ情報定義 #define SYSM_OWN_ARM9_MMEM_ADDR 0x02800000 -#define SYSM_OWN_ARM9_MMEM_ADDR_END SYSM_BOOTCODE_ARM9_ADDR +#define SYSM_OWN_ARM9_MMEM_ADDR_END 0x02e77000 #define SYSM_OWN_ARM7_MMEM_ADDR 0x02280000 #define SYSM_OWN_ARM7_MMEM_ADDR_END 0x02380000 #define SYSM_OWN_ARM7_WRAM_ADDR 0x037c0000 -#define SYSM_OWN_ARM7_WRAM_ADDR_END SYSM_BOOTCODE_ARM7_ADDR +#define SYSM_OWN_ARM7_WRAM_ADDR_END 0x0380f000 -#define SYSM_BOOTCODE_ARM9_ADDR 0x02e7fc00 // ARM9最終ブートコードアドレス -#define SYSM_BOOTCODE_ARM7_ADDR 0x0380f000 // ARM7最終ブートコードアドレス +#define SYSM_BOOTCODE_ARM9_ADDR 0x027ffc00 // ARM9最終ブートコードアドレス #define SYSROM9_NINLOGO_ADR 0xffff0020 // ARM9システムROM内の任天堂ロゴ格納アドレス +// カードアプリ格納バッファ +#define SYSM_CARD_ROM_HEADER_BUFFER ( SYSM_OWN_ARM9_MMEM_ADDR_END ) +#define SYSM_CARD_ROM_HEADER_BUFFER_END ( SYSM_OWN_ARM9_MMEM_ADDR_END + 0x1000 ) +#define SYSM_CARD_NTR_SECURE_BUFFER ( SYSM_CARD_ROM_HEADER_BUFFER_END ) +#define SYSM_CARD_NTR_SECURE_BUFFER_END ( SYSM_CARD_ROM_HEADER_BUFFER_END + SECURE_AREA_SIZE ) +#define SYSM_CARD_TWL_SECURE_BUFFER ( SYSM_CARD_NTR_SECURE_BUFFER_END ) +#define SYSM_CARD_TWL_SECURE_BUFFER_END ( SYSM_CARD_NTR_SECURE_BUFFER_END + SECURE_AREA_SIZE ) // ※アプリをWRAMに直接配置してブートしようとすると、SystemMenuのコードとぶつかっていろいろややこしい状態になるので、検討が必要 @@ -70,7 +76,7 @@ extern "C" { // ※旧NTR-IPL2のレガシーコード 整理予定 #define SYSM_ARM9_LOAD_MMEM_LAST_ADDR 0x02280000 // ロード可能なARM9 staticメインメモリ最終アドレス #define SYSM_ARM7_LOAD_MMEM_LAST_ADDR 0x023c0000 // ロード可能なARM7 staticメインメモリ最終アドレス -#define SYSM_ARM7_LOAD_WRAM_LAST_ADDR SYSM_BOOTCODE_ARM7_ADDR // ロード可能なARM7 staticメインメモリ最終アドレス +#define SYSM_ARM7_LOAD_WRAM_LAST_ADDR SYSM_OWN_ARM7_WRAM_ADDR_END // ロード可能なARM7 staticメインメモリ最終アドレス #define SYSM_ARM9_MMEM_ENTRY_ADDR_LIMIT SYSM_ARM9_LOAD_MMEM_LAST_ADDR #ifdef __cplusplus