jackalコンポーネント追加。

ランチャーでhyenaとjackalを切り替えられるよう変更。(デフォルトjackal)

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1680 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2008-06-24 13:01:23 +00:00
parent 36943ad2eb
commit 41034826b1
15 changed files with 1612 additions and 26 deletions

View File

@ -22,7 +22,8 @@ include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = \
hyena.TWL
hyena.TWL \
jackal.TWL
#----------------------------------------------------------------------------

View File

@ -31,9 +31,9 @@ TWL_CODEGEN ?= ARM
SUBDIRS = $(SYSMENU_ROOT)/build/libraries/aes \
wram_regs
SRCS = main.c \
initScfg.c \
$(ROOT)/build/libraries/init/ARM7.TWL/src/crt0.LTD.c
SRCS = crt0.LTD.c \
main.c \
initScfg.c
TARGET_NAME = hyena
@ -73,9 +73,14 @@ MAKELCF_FLAGS += -DUSE_CRYPTO_LIBS='libsea_sp$(TWL_LIBSUFFIX).a libcrypto_sp$(TW
MACRO_FLAGS += -DSDK_SEA
endif
MACRO_FLAGS += -DSDK_SYSMENU_BUILD
MACRO_FLAGS += -DSDK_NOINIT \
-DSDK_SYSMENU_BUILD
#MACRO_FLAGS += -DSDK_ARM7COMP_LTD
ifeq ($(DEFAULT_COMP_ARM7),hyena)
MACRO_FLAGS += -DUSE_HYENA_COMPONENT
endif
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037a8000' \
-DADDRESS_FLXMAIN='0x02280200' \
-DADDRESS_BOOTCORE='0x0380f000' \

View File

@ -0,0 +1,747 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - libraries - init - ARM7.TWL
File: crt0.LTD.c
Copyright 2007 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$
*---------------------------------------------------------------------------*/
#include <nitro/types.h>
#include <nitro/hw/common/armArch.h>
#include <nitro/os/common/emulator.h>
#include <nitro/os/common/printf.h>
#include <twl/init/crt0.h>
#include <twl/memorymap_sp.h>
#include <twl/hw/common/mmap_wramEnv.h>
#include <twl/os/common/format_rom.h>
#include "boot_sync.h"
/*---------------------------------------------------------------------------*/
void _start(void);
void _start_AutoloadDoneCallback(void* argv[]);
void INIT_InitializeScfg(void);
#define SDK_NITROCODE_LE 0x2106c0de
#define SDK_NITROCODE_BE 0xdec00621
#define SDK_TWLCODE_LE 0x6314c0de
#define SDK_TWLCODE_BE 0xdec01463
/* 外部関数参照定義 */
extern void OS_IrqHandler(void);
extern void _fp_init(void);
extern void __call_static_initializers(void);
/* 内部関数プロトタイプ定義 */
static void INITi_DoAutoload(void);
static BOOL INITi_IsRunOnTwl( void );
static void INITi_CopySysConfig( void );
static void INITi_DetectMainMemorySize(void);
#ifndef SDK_NOINIT
static void INITi_ShelterStaticInitializer(u32* ptr);
static void INITi_CallStaticInitializers(void);
#endif
static void* INITi_Copy32(void* dst, void* src, u32 size);
static void* INITi_Fill32(void* dst, u32 value, u32 size);
/* リンカスクリプトにより定義されるシンボル参照 */
extern void SDK_AUTOLOAD_LIST(void);
extern void SDK_AUTOLOAD_LIST_END(void);
extern void SDK_AUTOLOAD_START(void);
extern void SDK_STATIC_BSS_START(void);
extern void SDK_STATIC_BSS_END(void);
#ifdef USE_HYENA_COMPONENT
void* const _start_ModuleParams[] =
{
(void*)SDK_AUTOLOAD_LIST,
(void*)SDK_AUTOLOAD_LIST_END,
(void*)SDK_AUTOLOAD_START,
(void*)SDK_STATIC_BSS_START,
(void*)SDK_STATIC_BSS_END,
(void*)0, // CompressedStaticEnd. This fixed number will be updated by compstatic tool.
(void*)0, // SDK_VERSION_ID // SDK version info /* [TODO] ビルドを通すため */
(void*)SDK_NITROCODE_BE,
(void*)SDK_NITROCODE_LE,
};
#else
void* const _start_ModuleParams[] =
{
(void*)0,
(void*)0,
(void*)0,
(void*)SDK_STATIC_BSS_START,
(void*)SDK_STATIC_BSS_END,
(void*)0,
(void*)0,
(void*)SDK_NITROCODE_BE,
(void*)SDK_NITROCODE_LE,
};
#endif
extern void SDK_LTDAUTOLOAD_LIST(void);
extern void SDK_LTDAUTOLOAD_LIST_END(void);
extern void SDK_LTDAUTOLOAD_START(void);
void* const _start_LtdModuleParams[] =
{
(void*)SDK_LTDAUTOLOAD_LIST,
(void*)SDK_LTDAUTOLOAD_LIST_END,
(void*)SDK_LTDAUTOLOAD_START,
(void*)0, // CompressedLtdautoloadEnd. This fixed number will be updated by compstatic tool.
(void*)SDK_TWLCODE_BE,
(void*)SDK_TWLCODE_LE,
};
#ifdef DEBUG_WRAM_SETTING
u32 const wramMapping[12] = {
0x8d898581, 0x8c888480, 0x9c989490, 0x8c888480,
0x9c989490, 0x00000000, 0x09403900, 0x09803940,
0x080037c0, 0x09403900, 0x09803940, 0x0000000f
};
#endif
/* [TODO]
* TWL
* */
#define TWLIPL_PARAM_DOWNLOAD_PARAMETER 0x02ffb000
/*---------------------------------------------------------------------------*
Name: ShakeHand
Description: ARM9 ShakeHand
Arguments: r0 - ARM9
r1 - ARM7
Returns:
*---------------------------------------------------------------------------*/
static const u32 microcode_ShakeHand[10] =
{
0xe1d020b0, /* ldrh r2, [r0] ; 同期変数9を共有メモリから読む */
0xe1d130b0, /* ldrh r3, [r1] ; 同期変数7を共有メモリから読む */
0xe2833001, /* @1: add r3, r3, #1 ; 同期変数7 ++ */
0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */
0xe1d0c0b0, /* ldrh r12, [r0] ; 同期変数9の現状を共有メモリから読む */
0xe152000c, /* cmp r2, r12 ; 同期変数9の変化を判定する */
0x0afffffa, /* beq @1 ; 変化していなければループ */
0xe2833001, /* add r3, r3, #1 ; 同期変数7 ++ */
0xe1c130b0, /* strh r3, [r1] ; 同期変数7を共有メモリに書く */
0xe12fff1e /* bx lr ; ハンドシェイク完了 */
};
#ifdef DEBUG_WRAM_SETTING
/*---------------------------------------------------------------------------*
Name: WaitAgreement
Description: ARM9
Arguments: r0 -
r1 -
Returns:
*---------------------------------------------------------------------------*/
static const u32 microcode_WaitAgreement[7] =
{
0xe1d020b0, /* @1: ldrh r2, [r0] ; フェーズ管理変数を共有メモリから読む */
0xe1510002, /* cmp r1, r2 ; 待機フェーズ番号と比較 */
0x012fff1e, /* bxeq lr ; 一致していれば待機完了 */
0xe3a03010, /* mov r3, #16 ; 空ループ回数初期化 */
0xe2533001, /* @2: subs r3, r3, #1 ; 空ループ回数 -- */
0x1afffffd, /* bne @2 ; 16 回ループ */
0xeafffff8 /* b @1 ; 先頭に戻る */
};
#endif
/*---------------------------------------------------------------------------*
Name: GotoMain
Description: ARM9 Main
Arguments: r0 - Main Main Thumb
bx 1
r1 -
r2 - ARM9
Returns:
*---------------------------------------------------------------------------*/
static const u32 microcode_GotoMain[2] =
{
0xe1c120b0, /* strh r2, [r1] ; フェーズ管理変数を更新 */
0xe12fff10 /* bx r0 ; Main 関数へジャンプ */
};
/*---------------------------------------------------------------------------*/
#include <twl/code32.h>
/*---------------------------------------------------------------------------*
Name: _start
Description:
Arguments:
Returns:
*---------------------------------------------------------------------------*/
SDK_WEAK_SYMBOL asm void
_start(void)
{
@000:
/* 割り込み禁止 */
mov r12, #HW_REG_BASE
str r12, [r12, #REG_IME_OFFSET] // Use that LSB of HW_REG_BASE is 0b0
/* ハンドシェイク用マイクロコードを専用 WRAM にコピー */
ldr r1, =microcode_ShakeHand
ldr r2, =HW_PRV_WRAM
add r3, r2, #40
@001: ldr r0, [r1], #4
str r0, [r2], #4
cmp r2, r3
blt @001
/* 専用 WRAM 上のコードで ARM9 とハンドシェイク */
ldr r0, =HW_BOOT_SHAKEHAND_9
ldr r1, =HW_BOOT_SHAKEHAND_7
ldr r2, =HW_PRV_WRAM
mov lr, pc
bx r2
@010:
/* スタックポインタ設定 */
mov r0, #HW_PSR_SVC_MODE // SuperVisor mode
msr cpsr_c, r0
ldr sp, =HW_PRV_WRAM_SVC_STACK_END
mov r0, #HW_PSR_IRQ_MODE // IRQ mode
msr cpsr_c, r0
ldr sp, =HW_PRV_WRAM_IRQ_STACK_END
ldr r1, =SDK_IRQ_STACKSIZE
sub r1, sp, r1
sub sp, sp, #4 // 4 bytes for stack check code
mov r0, #HW_PSR_SYS_MODE
msr cpsr_csfx, r0
sub sp, r1, #4 // 4 bytes for stack check code
/* スタック領域をクリア */
ldr r0, =SDK_SYS_STACKSIZE
sub r1, r1, r0
ldr r2, =HW_PRV_WRAM_IRQ_STACK_END
mov r0, #0
@011: cmp r1, r2
strlt r0, [r1], #4
blt @011
/* SCFG を HW_SYS_CONF_BUF へコピー */
bl INIT_InitializeScfg
bl INITi_CopySysConfig
/* TWL ハードウェア上で動作しているかどうかを調査 */
bl INITi_IsRunOnTwl
/* TWL ハードウェア上で動作していない場合は永久ループ */
@012: bne @012
/* ダウンロードパラメータ情報を共有エリアに退避 */
ldr r0, =HW_DOWNLOAD_PARAMETER // r0 = start address of destination range
ldr r1, =TWLIPL_PARAM_DOWNLOAD_PARAMETER // r1 = start address of source range
mov r2, #HW_DOWNLOAD_PARAMETER_SIZE // r2 = size of download parameter
bl INITi_Copy32
/* プリロードパラメータアドレスが格納されていない場合は、デフォルト値をセット */
ldr r0, =HW_PRELOAD_PARAMETER_ADDR
ldr r1, [r0]
cmp r1, #0
ldreq r1, =HW_PARAM_TWL_SETTINGS_DATA_DEFAULT
streq r1, [r0]
@020:
/* Autoload を実施 */
bl INITi_DoAutoload
/* STATIC ブロックの .bss セクションを 0 クリア */
mov r1, #0 // r1 = clear value for STATIC bss section
ldr r3, =_start_ModuleParams
ldr r0, [r3, #12] // r0 = start address of STATIC bss section
ldr r2, [r3, #16]
subs r2, r2, r0 // r2 = size of STATIC bss section
blgt INITi_Fill32
//---- detect main memory size
bl INITi_DetectMainMemorySize
#ifndef SDK_FINALROM
//---- set debug print window
ldr r1, =HW_PRINT_OUTPUT_ARM9
mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9
orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7<<8)
strh r0, [r1]
mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9ERR
orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7ERR<<8)
strh r0, [r1, #2]
#endif
/* 割り込みベクタ設定 */
ldr r1, =HW_INTR_VECTOR_BUF
ldr r0, =OS_IrqHandler
str r0, [r1]
#ifndef SDK_NOINIT
/* c++ 用初期化 */
bl _fp_init
bl TwlSpStartUp
bl __call_static_initializers
bl INITi_CallStaticInitializers
#endif
@030:
/* Main 関数へのジャンプ用マイクロコードをスタックの底にコピー */
ldr r1, =microcode_GotoMain
ldr r0, [r1], #4
str r0, [sp, #-4]
ldr r0, [r1]
str r0, [sp]
/* マイクロコードを経由して Main 関数へジャンプ */
ldr r0, =TwlSpMain
ldr r1, =HW_BOOT_SYNC_PHASE
mov r2, #BOOT_SYNC_PHASE_4
ldr lr, =HW_RESET_VECTOR
sub r3, sp, #4
bx r3
}
/*---------------------------------------------------------------------------*
Name: INITi_DoAutoload
Description: 沿
0
Arguments:
Returns:
*---------------------------------------------------------------------------*/
/*
* < >
* 0x02380000 crt0
* NITRO WRAM 0x037c0000
* TWL WRAM
* 0x02400000 ARM9
* 0x04000 ROM 0x02f80000 - 0x02f84000 退
* 0x02e80000
* 0x04000 ROM 0x02f84000 - 0x02f88000 退
* NITRO MAIN 0x02f88000
* TWL MAIN
*/
static asm void
INITi_DoAutoload(void)
{
stmfd sp!, {lr}
@01_autoload:
/* WRAM 用ブロックをオートロード */
ldr r0, =_start_ModuleParams
ldr r12, [r0] // r12 = SDK_AUTOLOAD_LIST
ldr r3, [r0, #4] // r3 = SDK_AUTOLOAD_LIST_END
ldr r1, [r0, #8] // r1 = SDK_AUTOLOAD_START
@01_segments_loop:
cmp r12, r3
bge @02_start
/* 固定セクション */
ldr r0, [r12], #4 // r0 = start address of destination range of fixed section
ldr r2, [r12], #4 // r2 = size of fixed section
bl INITi_Copy32
stmfd sp!, {r0, r1}
/* static initializer テーブル */
ldr r0, [r12], #4 // r0 = start address of source range of static initializers table
#ifndef SDK_NOINIT
stmfd sp!, {r3, r12}
bl INITi_ShelterStaticInitializer
ldmfd sp!, {r3, r12}
#endif
/* bss セクション */
ldmfd sp!, {r0} // r0 = start address of destination range of bss section
mov r1, #0 // r1 = clear value for bss section
ldr r2, [r12], #4 // r2 = size of bss section
bl INITi_Fill32
ldmfd sp!, {r1} // r1 = end address of source range of the autoload segment
b @01_segments_loop
@02_start:
/* メインメモリ用オートロードブロックの存在を確認 */
ldr r1, =HW_TWL_ROM_HEADER_BUF
ldr r0, [r1, #ROM_Header.s.sub_ltd_size]
cmp r0, #0
beq @03_start
@02_autoload:
/* メインメモリ用ブロックをオートロード */
ldr r0, =_start_LtdModuleParams
ldr r12, [r0] // r12 = SDK_LTDAUTOLOAD_LIST
ldr r3, [r0, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END
ldr r1, [r0, #8] // r1 = SDK_AUTOLOAD_START
@02_segments_loop:
cmp r12, r3
bge @03_start
/* 固定セクション */
ldr r0, [r12], #4
ldr r2, [r12], #4
bl INITi_Copy32
stmfd sp!, {r0, r1}
/* static initializer テーブル */
ldr r0, [r12], #4
#ifndef SDK_NOINIT
stmfd sp!, {r3, r12}
bl INITi_ShelterStaticInitializer
ldmfd sp!, {r3, r12}
#endif
/* bss セクション */
ldmfd sp!, {r0}
mov r1, #0
ldr r2, [r12], #4
bl INITi_Fill32
ldmfd sp!, {r1}
b @02_segments_loop
@03_start:
/* オートロード完了コールバック関数呼び出し */
ldr r0, =_start_ModuleParams
ldr r1, =_start_LtdModuleParams
ldmfd sp!, {lr}
b _start_AutoloadDoneCallback
}
#ifndef SDK_NOINIT
/*---------------------------------------------------------------------------*
Name: INITi_ShelterStaticInitializer
Description: static initializer
IRQ 退
Arguments: ptr -
NULL
Returns:
*---------------------------------------------------------------------------*/
static asm void
INITi_ShelterStaticInitializer(u32* ptr)
{
/* 引数確認 */
cmp r0, #0
bxeq lr
/* 退避場所先頭アドレスを計算 */
ldr r1, =HW_PRV_WRAM_IRQ_STACK_END
ldr r2, =SDK_IRQ_STACKSIZE
sub r1, r1, r2
add r1, r1, #4
/* 退避場所先頭から空き場所を調査 */
@001: ldr r2, [r1]
cmp r2, #0
addne r1, r1, #4
bne @001
/* 空き場所にテーブルをコピー */
@002: ldr r2, [r0], #4
str r2, [r1], #4
cmp r2, #0
bne @002
bx lr
}
/*---------------------------------------------------------------------------*
Name: INITi_CallStaticInitializers
Description: static initializer
IRQ 退
Arguments:
Returns:
*---------------------------------------------------------------------------*/
static asm void
INITi_CallStaticInitializers(void)
{
stmdb sp!, {lr}
/* テーブル退避場所先頭アドレスを計算 */
ldr r1, =HW_PRV_WRAM_IRQ_STACK_END
ldr r2, =SDK_IRQ_STACKSIZE
sub r1, r1, r2
add r1, r1, #4
/* テーブルに管理されているポインタを一つずつ呼び出し */
@001: ldr r0, [r1]
cmp r0, #0
beq @002
stmdb sp!, {r1}
mov lr, pc
bx r0
ldmia sp!, {r1}
/* 一旦呼び出したポインタはゼロクリア (IRQスタックを間借りしている為) */
mov r0, #0
str r0, [r1], #4
b @001
@002: ldmia sp!, {lr}
bx lr
}
#endif
/*---------------------------------------------------------------------------*
Name: _start_AutoloadDoneCallback
Description:
Arguments: argv -
argv[0] = SDK_AUTOLOAD_LIST
argv[1] = SDK_AUTOLOAD_LIST_END
argv[2] = SDK_AUTOLOAD_START
argv[3] = SDK_STATIC_BSS_START
argv[4] = SDK_STATIC_BSS_END
Returns:
*---------------------------------------------------------------------------*/
SDK_WEAK_SYMBOL asm void
_start_AutoloadDoneCallback(void* argv[])
{
bx lr
}
/*---------------------------------------------------------------------------*
Name: NitroSpStartUp
Description: Hook for user start up.
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
SDK_WEAK_SYMBOL void
NitroSpStartUp(void)
{
}
/*---------------------------------------------------------------------------*
Name: INITi_IsRunOnTwl
Description: check running platform
This function is used in only Nitro-TWL hybrid mode.
(In Nitro mode and TWL limited mode, treated as constant)
Arguments: None
Returns: TRUE : running on TWL
FALSE : running on NITRO
*---------------------------------------------------------------------------*/
static asm BOOL INITi_IsRunOnTwl( void )
{
ldr r0, =HW_PRV_WRAM_SYSRV
ldrb r0, [r0,#HWi_WSYS08_WRAMOFFSET]
and r0, r0, #HWi_WSYS08_ROM_ARM9SEC_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK
cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK
moveq r0, #TRUE
movne r0, #FALSE
bx lr
}
/*---------------------------------------------------------------------------*
Name: INIT_InitializeScfg
Description: SCFG
crt0
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
SDK_WEAK_SYMBOL asm void
INIT_InitializeScfg(void)
{
bx lr
}
/*---------------------------------------------------------------------------*
Name: INITi_CopySysConfig
Description: copy SCFG registers to HW_SYS_CONF_BUF and HW_PRV_WRAM_SYSRV
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
static asm void INITi_CopySysConfig( void )
{
//---- copy scfg setting
ldr r2, =HW_PRV_WRAM_SYSRV
ldr r3, =HW_SYS_CONF_BUF
ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET]
str r0, [r3, #HWi_WSYS04_OFFSET]
ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET]
strh r0, [r3, #HWi_WSYS08_OFFSET]
bx lr
}
/*---------------------------------------------------------------------------*
Name: INITi_DetectMainMemorySize
Description: detect main memory size.
result is written into (u32*)HW_MMEMCHECKER_SUB.
value is [OS_CONSOLE_SIZE_4MB|OS_CONSOLE_SIZE_8MB|
OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32MB]
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
#define OSi_IMAGE_DIFFERENCE 0x400000
#define OSi_IMAGE_DIFFERENCE2 0xb000000
#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK)
#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK)
#define OSi_CHECKNUM1 0x55
#define OSi_CHECKNUM2 0xaa
#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz)
static asm void INITi_DetectMainMemorySize( void )
{
stmfd sp!, {lr}
//---- detect memory size
mov r0, #OS_CONSOLE_SIZE_4MB
mov r1, #0
ldr r2, =HW_MMEMCHECKER_SUB
sub r3, r2, #OSi_IMAGE_DIFFERENCE
@1:
strh r1, [r2]
ldrh r12, [r3]
cmp r1, r12
bne @2
add r1, r1, #1
cmp r1, #2 // check 2 loop
bne @1
//---- 4MB
b @3
//---- 8MB or 16MB or 32MB
@2:
// check if running on twl/nitro
bl INITi_IsRunOnTwl
movne r0, #OS_CONSOLE_SIZE_8MB
bne @3
//---- 16MB or 32MB
add r3, r2, #OSi_IMAGE_DIFFERENCE2
mov r0, #OS_CONSOLE_SIZE_16MB
ldrb r2, [r3]
mov r1, #OSi_CHECKNUM1
strb r1, [r3]
ldr r12, =OSi_100usWAIT
@4 subs r12, r12, #4
bcs @4
ldrb r1, [r3]
cmp r1, #OSi_CHECKNUM1
bne @3
mov r1, #OSi_CHECKNUM2
strb r1, [r3]
ldr r12, =OSi_100usWAIT
@5 subs r12, r12, #4
bcs @5
ldrb r1, [r3]
cmp r1, #OSi_CHECKNUM2
moveq r0, #OS_CONSOLE_SIZE_32MB
@3:
//---- check SMX_CNT
strb r2, [r3]
ldr r3, =REG_SMX_CNT_ADDR
ldrh r1, [r3]
and r1, r1, #OSi_DETECT_NITRO_MASK
cmp r1, #OSi_DETECT_NITRO_VAL
orreq r0, r0, #OS_CHIPTYPE_SMX_MASK
ldr r2, =HW_MMEMCHECKER_SUB
strh r0, [r2]
ldmfd sp!, {lr}
bx lr
}
/*---------------------------------------------------------------------------*
Name: INITi_Copy32
Description: 32 bit 36
r3 - r12
Arguments: r0 - ( 4 )
r1 - ( 4 )
r2 - ( 4 )
Returns: r0 - ( r0 + r2 )
r1 - ( r1 + r2 )
*---------------------------------------------------------------------------*/
static asm void*
INITi_Copy32(void* dst, void* src, u32 size)
{
stmfd sp!, {r3-r11}
bics r3, r2, #0x0000001f
beq @next
add r3, r0, r3
@loop:
ldmia r1!, {r4-r11}
stmia r0!, {r4-r11}
cmp r3, r0
bgt @loop
@next:
tst r2, #0x00000010
ldmneia r1!, {r4-r7}
stmneia r0!, {r4-r7}
tst r2, #0x00000008
ldmneia r1!, {r4-r5}
stmneia r0!, {r4-r5}
tst r2, #0x00000004
ldmneia r1!, {r4}
stmneia r0!, {r4}
ldmfd sp!, {r3-r11}
bx lr
}
/*---------------------------------------------------------------------------*
Name: INITi_Fill32
Description: 32 bit 36
r3 - r12
Arguments: r0 - ( 4 )
r1 - 32 bit
r2 - ( 4 )
Returns: r0 - ( r0 + r2 )
*---------------------------------------------------------------------------*/
static asm void*
INITi_Fill32(void* dst, u32 value, u32 size)
{
stmfd sp!, {r3-r11}
mov r4, r1
mov r5, r1
mov r6, r1
mov r7, r1
mov r8, r1
mov r9, r1
mov r10, r1
mov r11, r1
bics r3, r2, #0x0000001f
beq @next
add r3, r0, r3
@loop:
stmia r0!, {r4-r11}
cmp r3, r0
bgt @loop
@next:
tst r2, #0x00000010
stmneia r0!, {r4-r7}
tst r2, #0x00000008
stmneia r0!, {r4-r5}
tst r2, #0x00000004
stmneia r0!, {r4}
ldmfd sp!, {r3-r11}
bx lr
}
#include <twl/codereset.h>

View File

@ -107,6 +107,7 @@ extern void SDK_LTDAUTOLOAD_LTDWRAM_BSS_END(void);
extern void SDK_LTDAUTOLOAD_LTDMAIN_BSS_END(void);
#endif
extern void SDK_SEA_KEY_STORE(void);
extern void SDK_STATIC_BSS_END(void);
extern BOOL sdmcGetNandLogFatal( void );
@ -116,6 +117,13 @@ extern BOOL sdmcGetNandLogFatal( void );
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
#define COMPONENT_WRAM_A_OFS (HW_WRAM_A_LTD - HW_WRAM_BASE)
#define COMPONENT_WRAM_A_OFS_END (COMPONENT_WRAM_A_OFS + HW_WRAM_A_SIZE)
#define COMPONENT_WRAM_B_OFS (COMPONENT_WRAM_A_OFS - HW_WRAM_B_SIZE)
#define COMPONENT_WRAM_B_OFS_END (COMPONENT_WRAM_A_OFS)
#define COMPONENT_WRAM_C_OFS (COMPONENT_WRAM_B_OFS - HW_WRAM_C_SIZE)
#define COMPONENT_WRAM_C_OFS_END (COMPONENT_WRAM_B_OFS)
void
TwlSpMain(void)
{
@ -152,14 +160,15 @@ TwlSpMain(void)
// NANDのFATALエラー検出
if( sdmcGetNandLogFatal() != FALSE) {
/* 故障扱い処理 */
SYSM_SetFatalError( TRUE );
SYSMi_GetWork()->flags.common.isNANDFatalError = TRUE;
}
// [TODO:] カード電源ONして、ROMヘッダのみリードチェックくらいはやっておきたい
SYSMi_GetWork()->flags.common.isARM9Start = TRUE; // [TODO:] HW_RED_RESERVEDはNANDファームでクリアしておいて欲しい
SYSMi_GetWork()->flags.common.isARM9Start = TRUE;
// ヒープ領域設定
#ifndef USE_HYENA_COMPONENT
OS_SetSubPrivArenaLo( (void*)SDK_STATIC_BSS_END );
#endif
OS_SetSubPrivArenaHi( (void*)SYSM_OWN_ARM7_MMEM_ADDR_END ); // メモリ配置をいじっているので、アリーナHiも変更しないとダメ
OS_SetWramSubPrivArenaHi( (void*)(SYSM_OWN_ARM7_WRAM_ADDR_END - HW_FIRM_FROM_FIRM_BUF_SIZE) ); // この時点では鍵をつぶさないように
OS_TPrintf( "MMEM SUBPRV ARENA HI : %08x -> %08x\n", OS_GetSubPrivArenaHi(), OS_GetSubPrivArenaHi() );
@ -270,12 +279,6 @@ TwlSpMain(void)
while (TRUE)
{
OS_Halt();
//---- check reset
if (OS_IsResetOccurred())
{
OS_ResetSystem();
}
BOOT_WaitStart();
}
}
@ -347,7 +350,11 @@ PrintDebugInfo(void)
{
OS_TPrintf("ARM7: This component is running on NITRO.\n");
}
#ifdef USE_HYENA_COMPONENT
OS_TPrintf("ARM7: This component is \"hyena.TWL\"\n");
#else
OS_TPrintf("ARM7: This component is \"jackal.TWL\"\n");
#endif
}
#include <twl/ltdwram_begin.h>

View File

@ -0,0 +1,128 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlIPL - components - jackal.TWL
# File: Makefile
#
# 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$
#----------------------------------------------------------------------------
# Main memory にコードを退避させたathdrvを使用。(for test)
TMP_WL_MAIN ?= FALSE
TARGET_FIRM = SYSTEMMENU
override TARGET_PLATFORM = TWL
override TWL_PROC = ARM7
override TWL_ARCHGEN = LIMITED
override TWL_PLATFORM = TS
TWL_NO_STD_PCHDR = True
TWL_CODEGEN ?= ARM
#----------------------------------------------------------------------------
SUBDIRS = $(SYSMENU_ROOT)/build/libraries/aes \
wram_regs
HYENA_SRCDIR = ../hyena.TWL/src
SRCS = $(HYENA_SRCDIR)/crt0.LTD.c \
$(HYENA_SRCDIR)/main.c \
$(HYENA_SRCDIR)/initScfg.c
TARGET_NAME = jackal
TARGET_NEF = $(TARGET_NAME).tef
LCFILE_SPEC = $(TARGET_NAME).lsf
LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template
LDRES_TEMPLATE = $(ROOT)/build/components/armadillo.TWL/armadillo.response.template
CRT0_O = $(OBJDIR)/crt0.LTD.o
# スタック不足防止の為、インライン展開せずにコンパイルする
CCFLAGS_OPT = -O4 -inline off
#----------------------------------------------------------------------------
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
# crt0.o 、 libpm_sp および libnwm_sp は、ローカルでビルドしたものを使用するので、除外する。
ifeq ($(TMP_WL_MAIN), TRUE)
GLIBRARIES := $(filter-out $(CRT0_O) libpm_sp$(TWL_LIBSUFFIX).a libathdrv_sp$(TWL_LIBSUFFIX).a,$(GLIBRARIES))
else
GLIBRARIES := $(filter-out $(CRT0_O) libpm_sp$(TWL_LIBSUFFIX).a,$(GLIBRARIES))
endif
MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA \
-DSDK_NOINIT \
-DSDK_SYSMENU_BUILD
MAKELCF_FLAGS += -DADDRESS_FLXMAIN='0x02280200' \
-DADDRESS_BOOTCORE='0x0380f000' \
-DCRT0_O='$(CRT0_O)'
MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \
-DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a'
#--------------------------------
# install target
#--------------------------------
INSTALL_TARGETS = $(BINDIR)/$(TARGET_NAME).tef \
$(BINDIR)/$(TARGET_NAME).TWL.FLX.sbin \
$(BINDIR)/$(TARGET_NAME)_defs.TWL.FLX.sbin \
$(BINDIR)/$(TARGET_NAME).TWL.LTD.sbin \
$(BINDIR)/$(TARGET_NAME)_defs.TWL.LTD.sbin
INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE)
LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \
$(ROOT)/build/libraries/spi/ARM7/pm/include \
$(ROOT)/build/libraries/init/common/include \
$(ROOT)/build/libraries/reboot/common/include \
$(SYSMENU_ROOT)/build/libraries_sysmenu/sysmenu/common/include
SYSMENU_LIBS = \
libsysmenu_sp$(TWL_LIBSUFFIX).a \
libsysmmcu_sp$(TWL_LIBSUFFIX).a \
libboot_sp$(TWL_LIBSUFFIX).a \
libds_sp$(TWL_LIBSUFFIX).a \
libhotsw_sp$(TWL_LIBSUFFIX).a \
libdht_sp$(TWL_LIBSUFFIX).a \
libpm_sp.SYSMENU$(TWL_LIBSUFFIX).a
ifeq ($(TMP_WL_MAIN), TRUE)
SYSMENU_LIBS += \
libathdrv_sp.SYSMENU$(TWL_LIBSUFFIX).a
endif
SDK_APPEND_LIBS = \
libwl_sp.TWL.LTD.a \
libaes_sp.firm.LTD.a \
libsea_sp.TWL.LTD.a \
libreboot_sp$(TWL_LIBSUFFIX).a
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
LLIBRARY_DIRS += ./
ifeq ($(TMP_WL_MAIN), TRUE)
LLIBRARY_DIRS += $(SYSMENU_ROOT)/lib/TwlWireless/$(TWL_LIBTYPE)
endif
LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES)
do-build: $(TARGETS)
#----------------------------------------------------------------------------
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules
#----------------------------------------------------------------------------
#===== End of Makefile =====

View File

@ -0,0 +1,400 @@
#---------------------------------------------------------------------------
# Project: TwlSDK - components - armadillo.TWL
# File: armadillo.lcf.template
#
# 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$
#---------------------------------------------------------------------------
MEMORY
{
<STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.FLXSUFFIX>
binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX>
<PROPERTY.OVERLAYDEFS>F (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.FLXSUFFIX>
binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.LTDSUFFIX>
<FOREACH.LTDAUTOLOADS>
<LTDAUTOLOAD.NAME> (RWX) : ORIGIN = <LTDAUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX>
<END.LTDAUTOLOADS>
binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX>
<PROPERTY.LTDOVERLAYDEFS>L (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.LTDOVERLAYDEFS><PROPERTY.LTDSUFFIX>
check.WORKRAM (RWX) : ORIGIN = 0x03740000, LENGTH = 0xd0000 > workram.check
}
KEEP_SECTION
{
.sinit
}
SECTIONS
{
############################ STATIC #################################
.<STATIC.NAME>:
{
ALIGNALL(4);
. = ALIGN(4);
#
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
#
<FOREACH.STATIC.SEARCHSYMBOLS>
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
<END.STATIC.SEARCHSYMBOLS>
#
# TEXT BLOCK: READ ONLY
#
SDK_STATIC_START =.;
OBJECT(_start,*)
<FOREACH.STATIC.OBJECTS=.text>
<STATIC.OBJECT=.text:t>
<END.STATIC.OBJECTS>
<FOREACH.STATIC.LIBRARIES=.text>
<STATIC.LIBRARY=.text:t>
<END.STATIC.LIBRARIES>
<FOREACH.STATIC.OBJECTS=.rodata>
<STATIC.OBJECT=.rodata:t>
<END.STATIC.OBJECTS>
<FOREACH.STATIC.LIBRARIES=.rodata>
<STATIC.LIBRARY=.rodata:t>
<END.STATIC.LIBRARIES>
<FOREACH.STATIC.OBJECTS=.init>
<STATIC.OBJECT=.init:t>
<END.STATIC.OBJECTS>
<FOREACH.STATIC.LIBRARIES=.init>
<STATIC.LIBRARY=.init:t>
<END.STATIC.LIBRARIES>
. = ALIGN(4);
SDK_STATIC_SINIT_START =.;
<FOREACH.STATIC.OBJECTS=.ctor>
<STATIC.OBJECT=.ctor:t>
<END.STATIC.OBJECTS>
<FOREACH.STATIC.LIBRARIES=.ctor>
<STATIC.LIBRARY=.ctor:t>
<END.STATIC.LIBRARIES>
<FOREACH.STATIC.OBJECTS=.sinit>
<STATIC.OBJECT=.sinit:t>
<END.STATIC.OBJECTS>
<FOREACH.STATIC.LIBRARIES=.sinit>
<STATIC.LIBRARY=.sinit:t>
<END.STATIC.LIBRARIES>
WRITEW 0;
#
# DATA BLOCK: READ WRITE
#
. = ALIGN(4);
<FOREACH.STATIC.OBJECTS=.sdata>
<STATIC.OBJECT=.sdata:t>
<END.STATIC.OBJECTS>
<FOREACH.STATIC.LIBRARIES=.sdata>
<STATIC.LIBRARY=.sdata:t>
<END.STATIC.LIBRARIES>
<FOREACH.STATIC.OBJECTS=.data>
<STATIC.OBJECT=.data:t>
<END.STATIC.OBJECTS>
<FOREACH.STATIC.LIBRARIES=.data>
<STATIC.LIBRARY=.data:t>
<END.STATIC.LIBRARIES>
. = ALIGN(4);
SDK_STATIC_END =.;
SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START;
__sinit__ = SDK_STATIC_SINIT_START; # for static initializer
} > <STATIC.NAME>
.<STATIC.NAME>.bss:
{
ALIGNALL(4);
. = ALIGN(4);
#
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
#
<FOREACH.STATIC.SEARCHSYMBOLS>
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
<END.STATIC.SEARCHSYMBOLS>
#
# BSS BLOCK
#
SDK_STATIC_BSS_START =.;
<FOREACH.STATIC.OBJECTS=.sbss>
<STATIC.OBJECT=.sbss:t>
<END.STATIC.OBJECTS>
<FOREACH.STATIC.LIBRARIES=.sbss>
<STATIC.LIBRARY=.sbss:t>
<END.STATIC.LIBRARIES>
<FOREACH.STATIC.OBJECTS=.bss>
<STATIC.OBJECT=.bss:t>
<END.STATIC.OBJECTS>
<FOREACH.STATIC.LIBRARIES=.bss>
<STATIC.LIBRARY=.bss:t>
<END.STATIC.LIBRARIES>
. = ALIGN(4);
SDK_STATIC_BSS_END = .;
SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
} >> <STATIC.NAME>
############################ STATIC_FOOTER ##########################
.binary.STATIC_FOOTER:
{
WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE
WRITEW _start_ModuleParams - ADDR(.<STATIC.NAME>);
WRITEW 0; # NO DIGEST
WRITEW _start_LtdModuleParams - ADDR(.<STATIC.NAME>);
} > binary.STATIC_FOOTER
############################ OVERLAYDEFS ############################
.<PROPERTY.OVERLAYDEFS>F:
{
### <STATIC.NAME> module information
WRITEW ADDR(.<STATIC.NAME>); # load address
WRITEW _start; # entry address
WRITEW SDK_STATIC_SIZE; # size of module
WRITEW _start_AutoloadDoneCallback; # callback autoload done
} > <PROPERTY.OVERLAYDEFS>F
########################### LTDAUTOLOADS ############################
SDK_LTDAUTOLOAD_TOP_START = 0x02f00000;
SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る #
SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE;
SDK_LTDAUTOLOAD_SIZE = 0;
SDK_LTDAUTOLOAD_BSS_END = 0x03740000;
.binary.LTDAUTOLOAD_TOP:
{
WRITEW 0;
} > binary.LTDAUTOLOAD_TOP
<FOREACH.LTDAUTOLOADS>
.<LTDAUTOLOAD.NAME>:
{
ALIGNALL(4);
. = ALIGN(4);
#
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
#
<FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS>
SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>;
<END.LTDAUTOLOAD.SEARCHSYMBOLS>
#
# TEXT BLOCK: READ ONLY
#
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START =.;
<FOREACH.LTDAUTOLOAD.OBJECTS=.text>
<LTDAUTOLOAD.OBJECT=.text:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.text>
<LTDAUTOLOAD.LIBRARY=.text:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.etable>
<LTDAUTOLOAD.OBJECT=.exception:t>
. = ALIGN(4);
SDK_STATIC_ETABLE_START =.;
__exception_table_start__ =.;
EXCEPTION
__exception_table_end__ =.;
SDK_STATIC_ETABLE_END =.;
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.OBJECTS=.rodata>
<LTDAUTOLOAD.OBJECT=.rodata:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.rodata>
<LTDAUTOLOAD.LIBRARY=.rodata:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.init>
<LTDAUTOLOAD.OBJECT=.init:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.init>
<LTDAUTOLOAD.LIBRARY=.init:t>
<END.LTDAUTOLOAD.LIBRARIES>
. = ALIGN(4);
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_START =.;
<FOREACH.LTDAUTOLOAD.OBJECTS=.ctor>
<LTDAUTOLOAD.OBJECT=.ctor:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ctor>
<LTDAUTOLOAD.LIBRARY=.ctor:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.sinit>
<LTDAUTOLOAD.OBJECT=.sinit:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sinit>
<LTDAUTOLOAD.LIBRARY=.sinit:t>
<END.LTDAUTOLOAD.LIBRARIES>
WRITEW 0;
#
# DATA BLOCK: READ WRITE BLOCK
#
. = ALIGN(4);
<FOREACH.LTDAUTOLOAD.OBJECTS=.sdata>
<LTDAUTOLOAD.OBJECT=.sdata:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sdata>
<LTDAUTOLOAD.LIBRARY=.sdata:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.data>
<LTDAUTOLOAD.OBJECT=.data:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.data>
<LTDAUTOLOAD.LIBRARY=.data:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.wram>
<LTDAUTOLOAD.OBJECT=.wram:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.wram>
<LTDAUTOLOAD.LIBRARY=.wram:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdwram>
<LTDAUTOLOAD.OBJECT=.ltdwram:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdwram>
<LTDAUTOLOAD.LIBRARY=.ltdwram:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.rsvwram>
<LTDAUTOLOAD.OBJECT=.rsvwram:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.rsvwram>
<LTDAUTOLOAD.LIBRARY=.rsvwram:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain>
<LTDAUTOLOAD.OBJECT=.ltdmain:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain>
<LTDAUTOLOAD.LIBRARY=.ltdmain:t>
<END.LTDAUTOLOAD.LIBRARIES>
. = ALIGN(4);
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END =.;
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START;
SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE;
} > <LTDAUTOLOAD.NAME>
.<LTDAUTOLOAD.NAME>.bss:
{
ALIGNALL(4);
. = ALIGN(4);
#
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
#
<FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS>
SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>;
<END.LTDAUTOLOAD.SEARCHSYMBOLS>
#
# BSS BLOCK
#
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START =.;
<FOREACH.LTDAUTOLOAD.OBJECTS=.sbss>
<LTDAUTOLOAD.OBJECT=.sbss:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sbss>
<LTDAUTOLOAD.LIBRARY=.sbss:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.bss>
<LTDAUTOLOAD.OBJECT=.bss:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.bss>
<LTDAUTOLOAD.LIBRARY=.bss:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.wram>
<LTDAUTOLOAD.OBJECT=.wram.bss:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.wram>
<LTDAUTOLOAD.LIBRARY=.wram.bss:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdwram>
<LTDAUTOLOAD.OBJECT=.ltdwram.bss:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdwram>
<LTDAUTOLOAD.LIBRARY=.ltdwram.bss:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.rsvwram>
<LTDAUTOLOAD.OBJECT=.rsvwram.bss:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.rsvwram>
<LTDAUTOLOAD.LIBRARY=.rsvwram.bss:t>
<END.LTDAUTOLOAD.LIBRARIES>
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain>
<LTDAUTOLOAD.OBJECT=.ltdmain.bss:t>
<END.LTDAUTOLOAD.OBJECTS>
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain>
<LTDAUTOLOAD.LIBRARY=.ltdmain.bss:t>
<END.LTDAUTOLOAD.LIBRARIES>
. = ALIGN(4);
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END =.;
SDK_LTDAUTOLOAD_BSS_END =.;
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START;
} >> <LTDAUTOLOAD.NAME>
<END.LTDAUTOLOADS>
SDK_MOUNT_INFO_TABLE = SDK_LTDAUTOLOAD_BSS_END;
SDK_LTDAUTOLOAD_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400;
######################### LTDAUTOLOAD_INFO ##########################
.binary.LTDAUTOLOAD_INFO:
{
<FOREACH.LTDAUTOLOADS>
WRITEW ADDR(.<LTDAUTOLOAD.NAME>);
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE;
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_START;
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE;
<END.LTDAUTOLOADS>
} > binary.LTDAUTOLOAD_INFO
SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE;
SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO);
SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO);
########################## LTDOVERLAYDEFS ###########################
.<PROPERTY.LTDOVERLAYDEFS>L:
{
### TWL limited extended static module information
WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address
WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table
WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module
WRITEW 0; # padding
} > <PROPERTY.LTDOVERLAYDEFS>L
############################ OTHERS #################################
SDK_SUBPRIV_ARENA_LO = 0x02ffc000; # メインメモリアリーナはサイズ 0
SDK_SEA_KEY_STORE = SDK_LTDAUTOLOAD_BSS_END;
SDK_WRAM_ARENA_LO = SDK_LTDAUTOLOAD_BSS_END + 0x40;
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM
SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
.check.WORKRAM:
{
. = SDK_WRAM_ARENA_LO + 0x80 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
} > check.WORKRAM
}

View File

@ -0,0 +1,94 @@
#----------------------------------------------------------------------------
# Project: TwlSDK - components - armadillo.TWL
# File: armadillo.lsf
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded insructions, 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$
#----------------------------------------------------------------------------
#
# Nitro LCF SPEC FILE
#
#--------
Static $(TARGET_NAME)
{
Address $(ADDRESS_FLXMAIN)
StackSize 1024 1024
Library $(CRT0_O)
Object $(OBJDIR)/initScfg.o
Library libwm_sp$(LIBSUFFIX).a
Library libnwm_sp$(LIBSUFFIX).a
Library libwvr_sp$(LIBSUFFIX).a
Library libwpa_sp$(LIBSUFFIX).a
}
#--------
Ltdautoload SCRWRAM
{
Address 0x03758000
Library libsubpsyscall.a
Library libsyscall_sp.twl.a
Library $(CW_LIBS)
Library $(ISDBG_LIBS_TWL)
Library $(ISDBG_LIBS_NITRO)
Object * (.etable)
Object $(OBJDIR)/main.o
Library libsea_sp$(LIBSUFFIX).a
Library libcrypto_sp$(LIBSUFFIX).a
Library libos_sp$(LIBSUFFIX).a
Library libmi_sp$(LIBSUFFIX).a
Library libstd_sp$(LIBSUFFIX).a
Library libmath_sp$(LIBSUFFIX).a
Library libpxi_sp$(LIBSUFFIX).a
Library libexi_sp$(LIBSUFFIX).a
Library libi2c_sp$(LIBSUFFIX).a
Library libsdio_sp$(LIBSUFFIX).a
Library libpad_sp$(LIBSUFFIX).a
Library libscfg_sp$(LIBSUFFIX).a
Library libmcu_sp$(LIBSUFFIX).a
Library libcdc_sp$(LIBSUFFIX).a
Library libsnd_sp$(LIBSUFFIX).a
Library libsndex_sp$(LIBSUFFIX).a
Library libspi_sp$(LIBSUFFIX).a
Library libpm_sp.SYSMENU$(LIBSUFFIX).a
Library libtp_sp$(LIBSUFFIX).a
Library libtpex_sp$(LIBSUFFIX).a
Library libmic_sp$(LIBSUFFIX).a
Library libmicex_sp$(LIBSUFFIX).a
Library libnvram_sp$(LIBSUFFIX).a
Library librtc_sp$(LIBSUFFIX).a
Library libfatfs_sp$(LIBSUFFIX).a
Library libwl_sp$(LIBSUFFIX).a
Library libathdrv_sp$(LIBSUFFIX).a
Library libfs_sp$(LIBSUFFIX).a
Library libcard_sp$(LIBSUFFIX).a
Library libcamera_sp$(LIBSUFFIX).a
Library libboot_sp$(LIBSUFFIX).a
Library libreboot_sp$(LIBSUFFIX).a
Library libhotsw_sp$(LIBSUFFIX).a
Library libreloc_info_sp$(LIBSUFFIX).a
Library libsysmenu_sp$(LIBSUFFIX).a
Library libsysmmcu_sp$(LIBSUFFIX).a
Library libaes_sp.firm.LTD.a
Library libdht_sp$(LIBSUFFIX).a
Object * (.wram)
Object * (.ltdwram)
Object * (.rsvwram)
Object * (.main)
Object * (.ltdmain)
}

View File

@ -0,0 +1,49 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlFirm - tools - nandfirm-ds-launcher
# File: Makefile
#
# Copyright 2007 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: $
#----------------------------------------------------------------------------
TWL_PROC = ARM7
SUBDIRS =
LINCLUDES = ../include
#----------------------------------------------------------------------------
TARGET_BIN = wram_regs.rbin
SRCS = \
wram_regs.c \
#SRCDIR = # using default
#LCFILE = # using default
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
INSTALL_DIR = .
INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN)
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,121 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL - wram_regs
File: wram_regs.c
Copyright 2007 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$
*---------------------------------------------------------------------------*/
#include <twl/mi.h>
#define COMPONENT_WRAM_A_OFS (HW_WRAM_A_LTD - HW_WRAM_BASE)
#define COMPONENT_WRAM_A_OFS_END (COMPONENT_WRAM_A_OFS + HW_WRAM_A_SIZE)
#define COMPONENT_WRAM_B_OFS (COMPONENT_WRAM_A_OFS - HW_WRAM_B_SIZE)
#define COMPONENT_WRAM_B_OFS_END (COMPONENT_WRAM_A_OFS)
#define COMPONENT_WRAM_C_OFS (COMPONENT_WRAM_B_OFS - HW_WRAM_C_SIZE * 2)
#define COMPONENT_WRAM_C_OFS_END (COMPONENT_WRAM_B_OFS)
// MAP_TS_LTD for jackal
// WRAM-A Lock:ON, Master:ARM7, Enable:Slot0-3(256Kbytes), Address(7):0x037c0000-0x037fffff, Address(9):None
// WRAM-B Lock:ON, Master:ARM7, Enable:Slot5-7(256Kbytes), Address(7):0x03780000-0x037bffff, Address(9):None
// WRAM-C Lock:ON, Master:ARM7, Enable:Slot3-7(160Kbytes), Address(7):0x03758000-0x037bffff, Address(9):None
// WRAM-C Lock:OFF, Msster:ARM9, Enable:Slot0-2( 96Kbytes), Address(7):0x03700000-0x03717fff, Address(9):0x03700000-0x0317ffff
// WRAM-0 Master:ARM9, (16Kbytes), Address(7):0x03040000-0x03043fff, Address(9):0x03040000-0x03043fff
// WRAM-1 Master:ARM9, (16Kbytes), Address(7):0x03044000-0x03047fff, Address(9):0x03044000-0x03047fff
// MAP_TS_LTD original
// WRAM-A Lock:ON, Master:ARM7, Enable:Slot0-3(256Kbytes), Address(7):0x037c0000-0x037fffff, Address(9):None
// WRAM-B Lock:OFF, Master:ARM9, Enable:Slot0-7(256Kbytes), Address(7):0x03740000-0x037bffff, Address(9):0x03740000-0x037bffff
// WRAM-C Lock:OFF, Msster:ARM9, Enable:Slot0-7(256Kbytes), Address(7):0x03700000-0x0373ffff, Address(9):0x03700000-0x0373ffff
// WRAM-0 Master:ARM9, (16Kbytes), Address(7):0x03040000-0x03043fff, Address(9):0x03040000-0x03043fff
// WRAM-1 Master:ARM9, (16Kbytes), Address(7):0x03044000-0x03047fff, Address(9):0x03044000-0x03047fff
u32 HYENA_WramReg[0x30/sizeof(u32)] =
{
// ARM9
// WRAM-A
REG_MI_MBK1_FIELD(
TRUE, MI_WRAM_OFFSET_192KB/2, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_128KB/2, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_64KB/2, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_0KB/2, MI_WRAM_ARM7
),
// WRAM-B
REG_MI_MBK2_FIELD(
TRUE, MI_WRAM_OFFSET_96KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_64KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_32KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_0KB, MI_WRAM_ARM7
),
REG_MI_MBK3_FIELD(
TRUE, MI_WRAM_OFFSET_224KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_192KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_160KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_128KB, MI_WRAM_ARM7
),
// WRAM-C
REG_MI_MBK4_FIELD(
TRUE, MI_WRAM_OFFSET_96KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_64KB, MI_WRAM_ARM9,
TRUE, MI_WRAM_OFFSET_32KB, MI_WRAM_ARM9,
TRUE, MI_WRAM_OFFSET_0KB, MI_WRAM_ARM9
),
REG_MI_MBK5_FIELD(
TRUE, MI_WRAM_OFFSET_224KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_192KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_160KB, MI_WRAM_ARM7,
TRUE, MI_WRAM_OFFSET_128KB, MI_WRAM_ARM7
),
REG_MI_MBK6_FIELD( NULL >> 16,
MI_WRAM_IMAGE_256KB,
NULL >> 16
),
REG_MI_MBK7_FIELD( NULL >> 15,
MI_WRAM_IMAGE_256KB,
NULL >> 15
),
REG_MI_MBK8_FIELD( ( COMPONENT_WRAM_C_OFS_END + 0x18000 ) >> 15,
MI_WRAM_IMAGE_128KB,
COMPONENT_WRAM_C_OFS >> 15
),
// ARM7
REG_MI_MBK6_FIELD( COMPONENT_WRAM_A_OFS_END >> 16,
MI_WRAM_IMAGE_256KB,
COMPONENT_WRAM_A_OFS >> 16
),
REG_MI_MBK7_FIELD( COMPONENT_WRAM_B_OFS_END >> 15,
MI_WRAM_IMAGE_256KB,
COMPONENT_WRAM_B_OFS >> 15
),
REG_MI_MBK8_FIELD( COMPONENT_WRAM_C_OFS_END >> 15,
MI_WRAM_IMAGE_256KB,
COMPONENT_WRAM_C_OFS >> 15
),
// WRAM Lock
(u32)(
(0x00 << 0) |
(0x00 << 8) |
(0x00 << 16) |
// WRAM-0/1
(0 << 24) |
// VRAM-C
(7 << 26) |
// VRAM-D
(7 << 29)
),
};

View File

@ -35,6 +35,10 @@ include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
MACRO_FLAGS += -DUSE_FONT_WRAM_LOAD
ifeq ($(DEFAULT_COMP_ARM7),hyena)
MACRO_FLAGS += -DUSE_HYENA_COMPONENT
endif
INSTALL_TARGETS = $(TARGETS)
INSTALL_DIR = $(SYSMENU_INSTALL_LIBDIR)

View File

@ -46,6 +46,14 @@ ifeq ($(DO_NOT_SHOW_LAUNCHER),TRUE)
MACRO_FLAGS += -DDO_NOT_SHOW_LAUNCHER
endif
ifeq ($(DISABLE_INITIAL_SETTINGS),TRUE)
MACRO_FLAGS += -DDISABLE_INITIAL_SETTINGS
endif
ifeq ($(DEFAULT_COMP_ARM7),hyena)
MACRO_FLAGS += -DUSE_HYENA_COMPONENT
endif
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
INSTALL_TARGETS = $(TARGETS)

View File

@ -46,9 +46,15 @@
#define AUTH_KEY_BUFFER_LEN 128
#define MB_AUTH_SIGN_SIZE (128) /* digital sign size */
#define WRAM_SLOT_FOR_FS 5
#define THREAD_PRIO_FS_WRAM 3
#define WRAM_SIZE_FOR_FS MI_WRAM_SIZE_96KB
#ifdef USE_HYENA_COMPONENT
#define WRAM_SLOT_FOR_FS 5
#else
#define WRAM_SLOT_FOR_FS 0
#endif
#include <sysmenu/dht/dht.h>
#define DS_HASH_TABLE_SIZE (256*1024)
@ -422,7 +428,7 @@ static BOOL MakeTitleListMakerInfoFromTitleID( TitleListMakerInfo *info, OSTitle
{
int l;
NAMTitleInfo naminfo;
// [TODO:]この関数で得られる情報は無検証なので改ざんの可能性があるが、これで良いか
// この関数で得られる情報は無検証なので改ざんの可能性があるが、メーカーコードのみの判定なので、速度を優先する。(2008.06.20吉岡)
// でもFastつけないと一回300msぐらいかかる
NAM_ReadTitleInfoFast( &naminfo, titleID );
for(l=0;l<MAKER_CODE_MAX;l++)
@ -739,8 +745,11 @@ OS_TPrintf("RebootSystem failed: cant open file\n");
ROM_Header *head = (ROM_Header *)header;
CalcHMACSHA1CallbackArg dht_arg;
// WRAM利用Read関数の準備、WRAMCのスロットのうち後ろ3つだけ解放しておく
FS_InitWramTransfer(3);
// WRAM利用Read関数の準備、
// 使用するコンポーネントに応じて、WRAMのスロットを解放しておく
// hyena : WRAM_C slot 5-7
// jackal : WRAM_C slot 0-2
FS_InitWramTransfer( THREAD_PRIO_FS_WRAM );
MI_FreeWramSlot_C( WRAM_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM7 );
MI_FreeWramSlot_C( WRAM_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM9 );
MI_FreeWramSlot_C( WRAM_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_DSP );

View File

@ -22,13 +22,21 @@ SUBDIRS = \
../../../libraries_sysmenu/sysmenu \
../../../libraries_sysmenu/boot \
../../../libraries_sysmenu/hotsw \
../../../components/hyena.TWL \
# ../../../libraries_sysmenu/sharedFont \
# ../../../libraries_sysmenu/reloc_info \
# ../../../libraries_sysmenu/mcu \
# ../../../libraries_sysmenu/ds \
# $(ROOT)/build/libraries/reboot \
#----------------------------------------------------------------------------
# ƒRƒ“ƒ|<7C>[ƒlƒ“ƒgIð ( hyena or jackal )
export DEFAULT_COMP_ARM7 = jackal
COMPONENT_DIR = $(TWL_IPL_RED_ROOT)/build/components/$(DEFAULT_COMP_ARM7).TWL
SUBDIRS += $(COMPONENT_DIR)
WRAM_MAP_FILE = $(COMPONENT_DIR)/wram_regs/wram_regs.rbin
#----------------------------------------------------------------------------
ifneq ($(UPDATER_RELEASE),TRUE)
@ -37,6 +45,7 @@ ifneq ($(UPDATER_RELEASE),TRUE)
export DO_NOT_SHOW_LAUNCHER = FALSE
export DISABLE_WDS_SCAN = TRUE
export DISABLE_WLFIRM_LOAD = FALSE
export DISABLE_INITIAL_SETTINGS = TRUE
export IGNORE_WLFIRM_SIGNCHECK = FALSE
endif
@ -108,8 +117,6 @@ LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
ADDRESS_DTCM = 0x0e000000
DEFAULT_COMP_ARM7 = hyena
#----------------------------------------------------------------------------
# Append Flags
@ -118,7 +125,8 @@ DEFAULT_COMP_ARM7 = hyena
MAKEROM_FLAGS += -F \
-DTITLEID_LO='$(TITLEID_LO)' \
-DCARD_REGION='$(CARD_REGION)' \
-DDISABLE_DEBUG='$(DISABLE_DEBUG)'
-DDISABLE_DEBUG='$(DISABLE_DEBUG)' \
-DWRAM_MAP_FILE='$(WRAM_MAP_FILE)'
MAKETAD_OPTION += -s
@ -145,6 +153,10 @@ else
MAKEROM_FLAGS += -DDS_HASH_TABLE_DIR=data
endif
ifeq ($(DEFAULT_COMP_ARM7),hyena)
MACRO_FLAGS += -DUSE_HYENA_COMPONENT
endif
#----------------------------------------------------------------------------
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs

View File

@ -115,8 +115,7 @@ Property
# WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD]
# don't have to edit
#
# WramMapping $(MAKEROM_WRAM_MAPPING)
WramMappingDirect $(TWL_IPL_RED_ROOT)/build/components/hyena.TWL/wram_regs/wram_regs.rbin
WramMappingDirect $(WRAM_MAP_FILE)
#
# CardRegion: card region [Japan/America/Europe/Australia/China/Korea]

View File

@ -218,6 +218,7 @@ void TwlMain( void )
OS_TPrintf( "Camera Init: %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
#endif
#ifdef USE_HYENA_COMPONENT
// DSP初期化
{
MIWramSize sizeB = MI_WRAM_SIZE_32KB;
@ -235,6 +236,7 @@ void TwlMain( void )
}
DSP_UnloadShutter();
}
#endif // USE_HYENA_COMPONENT
#endif // INIT_DEVICES_LIKE_UIG_LAUNCHER
// start時間計測-c
@ -264,7 +266,7 @@ void TwlMain( void )
if( !LCFG_TSD_IsFinishedInitialSetting() ) {
// 初回起動シーケンス判定
}
(void)SYSM_GetCardTitleList( s_titleList ); // カードアプリリストの取得カードアプリはs_titleList[0]に格納される)
// end時間計測
#if (MEASURE_TIME == 1)