mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
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:
parent
36943ad2eb
commit
41034826b1
@ -22,7 +22,8 @@ include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS = \
|
||||
hyena.TWL
|
||||
hyena.TWL \
|
||||
jackal.TWL
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -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' \
|
||||
|
||||
747
build/components/hyena.TWL/src/crt0.LTD.c
Normal file
747
build/components/hyena.TWL/src/crt0.LTD.c
Normal 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>
|
||||
@ -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>
|
||||
|
||||
128
build/components/jackal.TWL/Makefile
Normal file
128
build/components/jackal.TWL/Makefile
Normal 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 =====
|
||||
400
build/components/jackal.TWL/jackal.lcf.template
Normal file
400
build/components/jackal.TWL/jackal.lcf.template
Normal 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
|
||||
}
|
||||
94
build/components/jackal.TWL/jackal.lsf
Normal file
94
build/components/jackal.TWL/jackal.lsf
Normal 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)
|
||||
}
|
||||
49
build/components/jackal.TWL/wram_regs/Makefile
Normal file
49
build/components/jackal.TWL/wram_regs/Makefile
Normal 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 =====
|
||||
121
build/components/jackal.TWL/wram_regs/wram_regs.c
Normal file
121
build/components/jackal.TWL/wram_regs/wram_regs.c
Normal 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)
|
||||
),
|
||||
};
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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 );
|
||||
|
||||
@ -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ƒ“ƒg‘I‘ð ( 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
|
||||
|
||||
@ -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]
|
||||
|
||||
@ -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時間計測1-c
|
||||
@ -264,7 +266,7 @@ void TwlMain( void )
|
||||
if( !LCFG_TSD_IsFinishedInitialSetting() ) {
|
||||
// 初回起動シーケンス判定
|
||||
}
|
||||
|
||||
|
||||
(void)SYSM_GetCardTitleList( s_titleList ); // カードアプリリストの取得(カードアプリはs_titleList[0]に格納される)
|
||||
// end時間計測2
|
||||
#if (MEASURE_TIME == 1)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user