mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
マウント情報をWRAMに隠蔽するための変更
・ARM7側からWRAMにマウント情報を格納するため、mountInfo関連を大手術 ・ビルドの通っていないアプリが使っているlcfテンプレートを変更 ・ランチャーとSDKのFSがランチャーバージョンの格納および取得に対応するまで、マウント情報まわりが正常に機能せず git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@895 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
dc1dc006ab
commit
81e66f51cb
@ -355,7 +355,8 @@ SECTIONS
|
||||
|
||||
SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START;
|
||||
SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END;
|
||||
SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_MOUNT_INFO_TABLE = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_AUTOLOAD_WRAM_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400;
|
||||
SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE;
|
||||
SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE;
|
||||
|
||||
@ -548,8 +549,8 @@ SECTIONS
|
||||
} > <PROPERTY.OVERLAYTABLE>F
|
||||
|
||||
############################ OTHERS #################################
|
||||
SDK_SEA_KEY_STORE = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD.WRAM.BSS_END + 0x40;
|
||||
SDK_SEA_KEY_STORE = SDK_AUTOLOAD_WRAM_BSS_END;
|
||||
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD_WRAM_BSS_END + 0x40;
|
||||
|
||||
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM
|
||||
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM
|
||||
@ -557,7 +558,7 @@ SECTIONS
|
||||
|
||||
.check.WORKRAM:
|
||||
{
|
||||
. = . + SDK_AUTOLOAD.WRAM.BSS_END - SDK_AUTOLOAD.WRAM.START + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||
. = . + SDK_AUTOLOAD_WRAM_BSS_END - SDK_AUTOLOAD.WRAM.START + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||
|
||||
} > check.WORKRAM
|
||||
|
||||
@ -878,7 +879,7 @@ SECTIONS
|
||||
{
|
||||
### TWL limited extended static module information
|
||||
WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address
|
||||
WRITEW 0; # padding
|
||||
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
|
||||
|
||||
|
||||
@ -153,9 +153,12 @@ TwlSpMain(void)
|
||||
(void)OS_EnableIrq();
|
||||
(void)OS_EnableInterrupts();
|
||||
|
||||
// ランチャーのマウント情報登録
|
||||
SYSMi_SetLauncherMountInfo();
|
||||
|
||||
// PXIコールバックの設定
|
||||
SYSM_InitPXI(THREAD_PRIO_SYSMMCU);
|
||||
|
||||
|
||||
// ファイルシステム初期化
|
||||
FS_Init(FS_DMA_NOT_USE);
|
||||
FS_CreateReadServerThread(THREAD_PRIO_FS);
|
||||
|
||||
@ -40,6 +40,8 @@ TARGET_LIB = libboot_sp$(TWL_LIBSUFFIX).a
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
include $(TWLSDK_ROOT)/build/libraries/reboot/commondefs.reboot
|
||||
|
||||
LINCLUDES += $(SYSMENU_ROOT)/build/libraries_sysmenu/sysmenu/common/include
|
||||
|
||||
INSTALL_TARGETS = $(TARGETS)
|
||||
INSTALL_DIR = $(SYSMENU_INSTALL_LIBDIR)
|
||||
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
#include <firm/format/from_brom.h>
|
||||
#include <firm/aes/ARM7/aes_init.h>
|
||||
#include "reboot.h"
|
||||
#include "internal_api.h"
|
||||
|
||||
|
||||
// define data-------------------------------------------------------
|
||||
@ -32,9 +33,9 @@
|
||||
#define reg_MI_MC_SWP (*(REGType8v *) ( REG_MC1_ADDR + 1 ) )
|
||||
|
||||
#ifdef ISDBG_MB_CHILD_
|
||||
#define PRE_CLEAR_NUM_MAX (7*2)
|
||||
#define PRE_CLEAR_NUM_MAX (9*2)
|
||||
#else
|
||||
#define PRE_CLEAR_NUM_MAX (5*2)
|
||||
#define PRE_CLEAR_NUM_MAX (7*2)
|
||||
#endif
|
||||
|
||||
#define COPY_NUM_MAX (4*3)
|
||||
@ -95,6 +96,9 @@ BOOL BOOT_WaitStart( void )
|
||||
// ブートアプリのROMヘッダのaccessKeyControl情報を見て判定
|
||||
// 引渡しは、IRQスタック領域を使うので、割り込みを禁止してからセットする。
|
||||
|
||||
|
||||
// マウント情報の登録
|
||||
SYSMi_SetBootAppMountInfo( &SYSMi_GetWork2()->bootTitleProperty );
|
||||
|
||||
BOOTi_ClearREG_RAM(); // ARM7側のメモリ&レジスタクリア。
|
||||
reg_MI_MBK9 = 0; // 全WRAMのロック解除
|
||||
@ -112,18 +116,19 @@ BOOL BOOT_WaitStart( void )
|
||||
// メモリリストの設定
|
||||
// [TODO:] ショップアプリで鍵を残す場合、NANDファーム引数の領域(WRAMにある)を消さないように注意。
|
||||
// WRAMリマップ後の消し漏れやバッファオーバランの懸念回避のため不要な鍵はpre clearで消す。
|
||||
// [TODO:] pre clearにARM9/7共用WRAMの32KBも入れる。
|
||||
// [TODO:] DSPの使っているWRAMをどこからどこまで消すか?
|
||||
static u32 mem_list[PRE_CLEAR_NUM_MAX + 1 + COPY_NUM_MAX + 2 + POST_CLEAR_NUM_MAX + 1] =
|
||||
{
|
||||
// pre clear
|
||||
SYSM_OWN_ARM7_WRAM_ADDR, NULL, // SYSM_OWN_ARM7_WRAM_ADDR(SDK_AUTOLOAD_WRAM_START)はリンカから与えられる
|
||||
SYSM_OWN_ARM7_WRAM_ADDR, NULL, // SYSM_OWN_ARM7_WRAM_ADDR(SDK_AUTOLOAD_WRAM_START)はリンカから与えられるので定数でない
|
||||
NULL, NULL, // 定数でないのであとで設定
|
||||
SYSM_OWN_ARM7_MMEM_ADDR, SYSM_OWN_ARM7_MMEM_ADDR_END - SYSM_OWN_ARM7_MMEM_ADDR,
|
||||
SYSM_OWN_ARM9_MMEM_ADDR, SYSM_OWN_ARM9_MMEM_ADDR_END - SYSM_OWN_ARM9_MMEM_ADDR,
|
||||
#ifdef ISDBG_MB_CHILD_
|
||||
HW_PRV_WRAM_END - 0x600, (HW_PRV_WRAM_END - HW_PRV_WRAM_SYSRV_SIZE) - (HW_PRV_WRAM_END - 0x600),
|
||||
HW_PRV_WRAM_END - 0x600 + 0x20, HW_PRV_WRAM_END - (HW_PRV_WRAM_END - 0x600 + 0x20),
|
||||
#endif
|
||||
HW_WRAM_LTD, HW_WRAM_LTD_END - HW_WRAM_LTD,
|
||||
HW_WRAM_BASE, HW_WRAM_SIZE, // 共有WRAM Launcherの特殊配置なので、BASEからサイズぶん
|
||||
HW_MAIN_MEM_SHARED, HW_RED_RESERVED - HW_MAIN_MEM_SHARED,
|
||||
NULL,
|
||||
// copy forward
|
||||
@ -133,8 +138,9 @@ BOOL BOOT_WaitStart( void )
|
||||
// post clear
|
||||
NULL,
|
||||
};
|
||||
// NANDファームから受け取った鍵領域もまとめて消している
|
||||
mem_list[1] = SYSM_OWN_ARM7_WRAM_ADDR_END - SYSM_OWN_ARM7_WRAM_ADDR;
|
||||
mem_list[1] = (u32)th->s.sub_mount_info_ram_address - SYSM_OWN_ARM7_WRAM_ADDR;
|
||||
mem_list[2] = ((u32)th->s.sub_mount_info_ram_address + SYSM_MOUNT_INFO_SIZE + OS_MOUNT_PATH_LEN);
|
||||
mem_list[3] = SYSM_OWN_ARM7_WRAM_ADDR_END - ((u32)th->s.sub_mount_info_ram_address + SYSM_MOUNT_INFO_SIZE + OS_MOUNT_PATH_LEN);
|
||||
|
||||
// copy forwardリスト設定
|
||||
for( l=0; l<RELOCATE_INFO_NUM ; l++ )
|
||||
|
||||
@ -26,7 +26,8 @@ TWL_PROC = ARM7
|
||||
|
||||
SRCDIR = ../common/src
|
||||
SRCS = status.c \
|
||||
pxi.c
|
||||
pxi.c \
|
||||
mountInfo.c
|
||||
|
||||
TARGET_LIB = libsysmenu_sp$(TWL_LIBSUFFIX).a
|
||||
|
||||
|
||||
@ -63,77 +63,19 @@ OSMountInfo s_defaultMountList[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4) = {
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
/*
|
||||
要確認
|
||||
カードブート時のBootSRLPathは、"rom:"ではなく、""でいく。
|
||||
"nand:" と "nand1:"のuserPermissionは"OS_MOUNT_USR_R"で良いのか?
|
||||
*/
|
||||
// ランチャーのマウント情報セット
|
||||
void SYSMi_SetLauncherMountInfo( void )
|
||||
{
|
||||
NAMTitleId titleID = TITLE_ID_LAUNCHER;
|
||||
|
||||
// ※とりあえず自身はROMブートで。[TODO:]後で修正
|
||||
// SYSMi_SetBootSRLPath( LAUNCHER_BOOTTYPE_NAND, titleID ); // ※SDK2623では、BootSRLPathを"rom:"としたらFSi_InitRomArchiveでNANDアプリ扱いされてアクセス例外で落ちる。
|
||||
|
||||
// セーブデータ有無によるマウント情報の編集
|
||||
// ※このタイミングではFSは動かせないので、FSを使わない特別版で対応。
|
||||
SYSMi_ModifySaveDataMountForLauncher( LAUNCHER_BOOTTYPE_NAND,
|
||||
titleID,
|
||||
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
||||
|
||||
// マウント情報のセット
|
||||
SYSMi_SetMountInfoCore( LAUNCHER_BOOTTYPE_NAND,
|
||||
titleID,
|
||||
&s_defaultMountList[0] );
|
||||
}
|
||||
|
||||
|
||||
// システム領域に、ブートするアプリのマウント情報を登録する
|
||||
void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle )
|
||||
{
|
||||
// アプリがTWL対応でない場合は、何もセットせずにリターン
|
||||
if( ( (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->platform_code ) == 0 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 起動アプリのSRLパスをセット
|
||||
SYSMi_SetBootSRLPath( (LauncherBootType)pBootTitle->flags.bootType,
|
||||
pBootTitle->titleID );
|
||||
|
||||
// セーブデータ有無によるマウント情報の編集
|
||||
SYSMi_ModifySaveDataMount( (LauncherBootType)pBootTitle->flags.bootType,
|
||||
pBootTitle->titleID,
|
||||
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
||||
|
||||
// マウント情報のセット
|
||||
SYSMi_SetMountInfoCore( (LauncherBootType)pBootTitle->flags.bootType,
|
||||
pBootTitle->titleID,
|
||||
&s_defaultMountList[0] );
|
||||
|
||||
/*
|
||||
※※ 注意 ※※
|
||||
MountInfoは、FSで直接参照してアクセス許可状態を判定しているため、ここにアプリ用のデータをセットすると、
|
||||
その後はパーミッションの都合上FSライブラリおよびFSを使用したESやNAMライブラリが全く使用できなくなる。(今後パーミッション仕様については変更される可能性あり)
|
||||
よって、内部でFSライブラリを使用する処理は、本処理の前に完了しておく必要がある。
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
// 起動SRLパスをシステム領域にセット
|
||||
static void SYSMi_SetBootSRLPath( LauncherBootType bootType, NAMTitleId titleID )
|
||||
void SYSMi_SetBootSRLPathToWork2( TitleProperty *pBootTitle )
|
||||
{
|
||||
static char path[ FS_ENTRY_LONGNAME_MAX ];
|
||||
|
||||
switch( bootType )
|
||||
switch( pBootTitle->flags.bootType )
|
||||
{
|
||||
case LAUNCHER_BOOTTYPE_NAND:
|
||||
if( NAM_GetTitleBootContentPathFast( path, titleID ) != NAM_OK ) {
|
||||
if( NAM_GetTitleBootContentPathFast( path, pBootTitle->titleID ) != NAM_OK ) {
|
||||
OS_TPrintf( "ERROR: BootContentPath Get failed.\n" );
|
||||
}
|
||||
break;
|
||||
case LAUNCHER_BOOTTYPE_TEMP:
|
||||
STD_TSNPrintf( path, FS_ENTRY_LONGNAME_MAX, OS_TMP_APP_PATH, titleID );
|
||||
STD_TSNPrintf( path, FS_ENTRY_LONGNAME_MAX, OS_TMP_APP_PATH, pBootTitle->titleID );
|
||||
break;
|
||||
default:
|
||||
path[ 0 ] = 0;
|
||||
@ -142,131 +84,9 @@ static void SYSMi_SetBootSRLPath( LauncherBootType bootType, NAMTitleId titleID
|
||||
}
|
||||
|
||||
if( path[ 0 ] ) {
|
||||
STD_CopyLStringZeroFill( (char *)HW_TWL_FS_BOOT_SRL_PATH_BUF, path, OS_MOUNT_PATH_LEN );
|
||||
STD_CopyLStringZeroFill( SYSMi_GetWork2()->bootContentPath, path, OS_MOUNT_PATH_LEN );
|
||||
}else {
|
||||
MI_CpuClearFast( (void *)HW_TWL_FS_BOOT_SRL_PATH_BUF, OS_MOUNT_PATH_LEN );
|
||||
MI_CpuClearFast( SYSMi_GetWork2()->bootContentPath, OS_MOUNT_PATH_LEN );
|
||||
}
|
||||
OS_TPrintf( "boot SRL path : %s\n", (char *)HW_TWL_FS_BOOT_SRL_PATH_BUF ); // ※OS_Init前で呼ぶとPrintfできないので注意。
|
||||
OS_TPrintf( "boot SRL path : %s\n", SYSMi_GetWork2()->bootContentPath ); // ※OS_Init前で呼ぶとPrintfできないので注意。
|
||||
}
|
||||
|
||||
|
||||
// マウント情報をシステム領域に書き込み
|
||||
static void SYSMi_SetMountInfoCore( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pSrc )
|
||||
{
|
||||
#pragma unused(bootType)
|
||||
|
||||
int i;
|
||||
OSMountInfo *pDst = (OSMountInfo *)HW_TWL_FS_MOUNT_INFO_BUF;
|
||||
|
||||
MI_CpuClearFast( (void *)HW_TWL_FS_MOUNT_INFO_BUF, HW_TWL_FS_BOOT_SRL_PATH_BUF - HW_TWL_FS_MOUNT_INFO_BUF );
|
||||
|
||||
// ユーザーアプリの場合、"nand:", "nand2:"アーカイブを変更。
|
||||
if( ( titleID & TITLEID_APP_SYS_FLAG ) == 0 ) {
|
||||
pSrc[ 1 ].userPermission = 0; // "nand:"
|
||||
pSrc[ 2 ].userPermission = 0; // "nand2:"
|
||||
}
|
||||
|
||||
// セット
|
||||
for( i = 0; i < DEFAULT_MOUNT_LIST_NUM; i++ ) {
|
||||
if( pSrc->drive[ 0 ] ) {
|
||||
MI_CpuCopyFast( pSrc, pDst, sizeof(OSMountInfo) );
|
||||
pDst++;
|
||||
}
|
||||
pSrc++;
|
||||
}
|
||||
#if 0
|
||||
pDst = (OSMountInfo *)HW_TWL_FS_MOUNT_INFO_BUF;
|
||||
for( i = 0; i < DEFAULT_MOUNT_LIST_NUM; i++ ) {
|
||||
OS_TPrintf( "mount path : %s\n", pDst->path );
|
||||
pDst++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
||||
static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt )
|
||||
{
|
||||
int i;
|
||||
|
||||
// ※カードからブートされた場合でも、titleIDが"NANDアプリ"の場合は、セーブデータをマウントするようにしている。
|
||||
|
||||
// セーブデータ有無を判定して、パスをセット
|
||||
if( ( ( bootType == LAUNCHER_BOOTTYPE_NAND ) && // NANDアプリがNANDからブートされた時
|
||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) ) ||
|
||||
( ( bootType == LAUNCHER_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時
|
||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) &&
|
||||
( SYSMi_GetWork()->flags.hotsw.isOnDebugger ) )
|
||||
) {
|
||||
char saveFilePath[ 2 ][ FS_ENTRY_LONGNAME_MAX ];
|
||||
u32 saveDataSize[ 2 ];
|
||||
saveDataSize[ 0 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->private_save_data_size;
|
||||
saveDataSize[ 1 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->public_save_data_size;
|
||||
|
||||
// セーブデータのファイルパスを取得
|
||||
NAM_GetTitleSaveFilePath( saveFilePath[ 1 ], saveFilePath[ 0 ], titleID );
|
||||
|
||||
// "ROMヘッダのNANDセーブファイルサイズ > 0" かつ そのファイルを開ける場合のみマウント情報を登録
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
FSFile file[1];
|
||||
FS_InitFile( file );
|
||||
if( saveDataSize[ i ] &&
|
||||
FS_OpenFileEx( file, saveFilePath[ i ], FS_FILEMODE_R) ) {
|
||||
FS_CloseFile( file );
|
||||
STD_CopyLStringZeroFill( pMountTgt->path, saveFilePath[ i ], OS_MOUNT_PATH_LEN );
|
||||
}else {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
pMountTgt++;
|
||||
}
|
||||
}else {
|
||||
// タイトルID指定なしのカードアプリの場合は、セーブデータ無効
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
||||
static void SYSMi_ModifySaveDataMountForLauncher( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt )
|
||||
{
|
||||
int i;
|
||||
|
||||
// ※カードからブートされた場合でも、titleIDが"NANDアプリ"の場合は、セーブデータをマウントするようにしている。
|
||||
|
||||
// セーブデータ有無を判定して、パスをセット
|
||||
if( ( ( bootType == LAUNCHER_BOOTTYPE_NAND ) && // NANDアプリがNANDからブートされた時
|
||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) ) ||
|
||||
( ( bootType == LAUNCHER_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時
|
||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) &&
|
||||
( SYSMi_GetWork()->flags.hotsw.isOnDebugger ) )
|
||||
) {
|
||||
char saveFilePath[ 2 ][ FS_ENTRY_LONGNAME_MAX ];
|
||||
u32 saveDataSize[ 2 ];
|
||||
saveDataSize[ 0 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->private_save_data_size;
|
||||
saveDataSize[ 1 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->public_save_data_size;
|
||||
|
||||
// セーブデータのファイルパスを取得
|
||||
STD_TSNPrintf( saveFilePath[ 0 ], FS_ENTRY_LONGNAME_MAX,
|
||||
"nand:/title/%08x/%08x/data/private.sav", (u32)( titleID >> 32 ), titleID );
|
||||
STD_TSNPrintf( saveFilePath[ 1 ], FS_ENTRY_LONGNAME_MAX,
|
||||
"nand:/title/%08x/%08x/data/public.sav", (u32)( titleID >> 32 ), titleID );
|
||||
|
||||
// "ROMヘッダのNANDセーブファイルサイズ > 0" かつ そのファイルを開ける場合のみマウント情報を登録
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
if( saveDataSize[ i ] ) {
|
||||
STD_CopyLStringZeroFill( pMountTgt->path, saveFilePath[ i ], OS_MOUNT_PATH_LEN );
|
||||
}else {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
pMountTgt++;
|
||||
}
|
||||
}else {
|
||||
// タイトルID指定なしのカードアプリの場合は、セーブデータ無効
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -64,7 +64,7 @@ void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) )
|
||||
SYSMi_SendKeysToARM7();
|
||||
|
||||
// ランチャーのマウント情報セット
|
||||
SYSMi_SetLauncherMountInfo();
|
||||
//SYSMi_SetLauncherMountInfo();
|
||||
|
||||
// ARM7コンポーネント用プロテクションユニット領域変更
|
||||
OS_SetProtectionRegion( 2, SYSM_OWN_ARM7_MMEM_ADDR, 512KB );
|
||||
|
||||
@ -990,7 +990,9 @@ AuthResult SYSM_TryToBootTitle( TitleProperty *pBootTitle )
|
||||
}
|
||||
|
||||
// マウント情報の登録
|
||||
SYSMi_SetBootAppMountInfo( pBootTitle );
|
||||
//SYSMi_SetBootAppMountInfo( pBootTitle );
|
||||
SYSMi_GetWork2()->bootTitleProperty = *pBootTitle;
|
||||
SYSMi_SetBootSRLPathToWork2( pBootTitle );
|
||||
|
||||
// HW_WM_BOOT_BUFへのブート情報セット
|
||||
( (OSBootInfo *)OS_GetBootInfo() )->boot_type = s_launcherToOSBootType[ pBootTitle->flags.bootType ];
|
||||
|
||||
@ -33,18 +33,26 @@ extern "C" {
|
||||
#define OS_PutString( ... ) ((void)0)
|
||||
#endif
|
||||
|
||||
#ifdef SDK_ARM9
|
||||
//-------------------------------------------------------
|
||||
// マウント情報セット
|
||||
//-------------------------------------------------------
|
||||
|
||||
#ifdef SDK_ARM9
|
||||
|
||||
// BootSRLPath受け渡し用
|
||||
void SYSMi_SetBootSRLPathToWork2( TitleProperty *pBootTitle );
|
||||
|
||||
#else
|
||||
|
||||
// ランチャー用
|
||||
void SYSMi_SetLauncherMountInfo( void );
|
||||
|
||||
// 起動アプリ用
|
||||
void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle );
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef SDK_ARM9
|
||||
//-------------------------------------------------------
|
||||
// デバイス
|
||||
//-------------------------------------------------------
|
||||
|
||||
295
build/libraries_sysmenu/sysmenu/common/src/mountInfo.c
Normal file
295
build/libraries_sysmenu/sysmenu/common/src/mountInfo.c
Normal file
@ -0,0 +1,295 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: SYSM_lib.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.h>
|
||||
#include <twl/nam.h>
|
||||
#include <sysmenu.h>
|
||||
#include "internal_api.h"
|
||||
|
||||
// define data-----------------------------------------------------------------
|
||||
#define DEFAULT_MOUNT_LIST_NUM 9
|
||||
#define NAND_MOUNT_INDEX 0
|
||||
#define NAND2_MOUNT_INDEX 1
|
||||
#define CONTENT_MOUNT_INDEX 2
|
||||
#define SHARED1_MOUNT_INDEX 3
|
||||
#define PRV_SAVE_DATA_MOUNT_INDEX 6 // プライベートセーブデータの s_defaultMountInfo リストインデックス
|
||||
#define PUB_SAVE_DATA_MOUNT_INDEX 7 // パブリック セーブデータの s_defaultMountInfo リストインデックス
|
||||
|
||||
#define TITLEID_APP_SYS_FLAG_SHIFT ( 32 + 0 )
|
||||
#define TITLEID_NOT_LAUNCH_FLAG_SHIFT ( 32 + 1 )
|
||||
#define TITLEID_MEDIA_NAND_FLAG_SHIFT ( 32 + 2 )
|
||||
#define TITLEID_APP_SYS_FLAG ( 1ULL << TITLEID_APP_SYS_FLAG_SHIFT )
|
||||
#define TITLEID_NOT_LAUNCH_FLAG ( 1ULL << TITLEID_NOT_LAUNCH_FLAG_SHIFT )
|
||||
#define TITLEID_MEDIA_NAND_FLAG ( 1ULL << TITLEID_MEDIA_NAND_FLAG_SHIFT )
|
||||
|
||||
// extern data-----------------------------------------------------------------
|
||||
// function's prototype--------------------------------------------------------
|
||||
static void SYSMi_SetBootSRLPath( LauncherBootType bootType, NAMTitleId titleID );
|
||||
static void SYSMi_SetMountInfoCore( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pSrc );
|
||||
static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt );
|
||||
static void SYSMi_ModifySaveDataMountForLauncher( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt );
|
||||
|
||||
// global variable-------------------------------------------------------------
|
||||
// static variable-------------------------------------------------------------
|
||||
// const data------------------------------------------------------------------
|
||||
|
||||
// デフォルトマウント情報リスト
|
||||
OSMountInfo s_defaultMountList[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4) = {
|
||||
// drive device target pertitionIdx resource userPermission rsvA B archive path
|
||||
{ 'A', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_WRAM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "nand", "/" }, // ユーザーアプリはこのアーカイブではR/W不可
|
||||
{ 'B', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 1, OS_MOUNT_RSC_WRAM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "nand2", "/" }, // ユーザーアプリはこのアーカイブではR/W不可
|
||||
{ 'C', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R), 0, 0, "content", NULL }, // Write不可
|
||||
{ 'D', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R), 0, 0, "shared1", "nand:/shared1" }, // Write不可
|
||||
{ 'E', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "shared2", "nand:/shared2" },
|
||||
{ 'F', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 1, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "photo", "nand2:/photo" },
|
||||
{ 'G', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_FILE, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "dataPrv", NULL }, // NANDにセーブデータがないアプリの場合は、マウントされない。
|
||||
{ 'H', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_FILE, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "dataPub", NULL }, // NANDにセーブデータがないアプリの場合は、マウントされない。
|
||||
{ 'I', OS_MOUNT_DEVICE_SD, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "sdmc", "/" },
|
||||
};
|
||||
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// マウント情報セット
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
/*
|
||||
要確認
|
||||
カードブート時のBootSRLPathは、"rom:"ではなく、""でいく。
|
||||
"nand:" と "nand1:"のuserPermissionは"OS_MOUNT_USR_R"で良いのか?
|
||||
*/
|
||||
// ランチャーのマウント情報セット
|
||||
void SYSMi_SetLauncherMountInfo( void )
|
||||
{
|
||||
NAMTitleId titleID = TITLE_ID_LAUNCHER;
|
||||
|
||||
// ※とりあえず自身はROMブートで。[TODO:]後で修正
|
||||
// SYSMi_SetBootSRLPath( LAUNCHER_BOOTTYPE_NAND, titleID ); // ※SDK2623では、BootSRLPathを"rom:"としたらFSi_InitRomArchiveでNANDアプリ扱いされてアクセス例外で落ちる。
|
||||
|
||||
// セーブデータ有無によるマウント情報の編集
|
||||
// ※このタイミングではFSは動かせないので、FSを使わない特別版で対応。
|
||||
SYSMi_ModifySaveDataMountForLauncher( LAUNCHER_BOOTTYPE_NAND,
|
||||
titleID,
|
||||
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
||||
|
||||
// マウント情報のセット
|
||||
SYSMi_SetMountInfoCore( LAUNCHER_BOOTTYPE_NAND,
|
||||
titleID,
|
||||
&s_defaultMountList[0] );
|
||||
}
|
||||
|
||||
|
||||
// システム領域に、ブートするアプリのマウント情報を登録する
|
||||
void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle )
|
||||
{
|
||||
// アプリがTWL対応でない場合は、何もセットせずにリターン
|
||||
if( ( (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->platform_code ) == 0 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 起動アプリのSRLパスをセット
|
||||
// SYSMi_SetBootSRLPath( (LauncherBootType)pBootTitle->flags.bootType,
|
||||
// pBootTitle->titleID );
|
||||
|
||||
STD_CopyLStringZeroFill( (char *)((u32)((( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->sub_mount_info_ram_address) + SYSM_MOUNT_INFO_SIZE),
|
||||
SYSMi_GetWork2()->bootContentPath, OS_MOUNT_PATH_LEN );
|
||||
|
||||
// セーブデータ有無によるマウント情報の編集
|
||||
// ※ARM7ではNAMは動かせないので、NAMを使わないバージョンで対応。
|
||||
SYSMi_ModifySaveDataMountForLauncher( LAUNCHER_BOOTTYPE_NAND,
|
||||
pBootTitle->titleID,
|
||||
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
||||
/*
|
||||
// セーブデータ有無によるマウント情報の編集
|
||||
SYSMi_ModifySaveDataMount( (LauncherBootType)pBootTitle->flags.bootType,
|
||||
pBootTitle->titleID,
|
||||
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
||||
*/
|
||||
// マウント情報のセット
|
||||
SYSMi_SetMountInfoCore( (LauncherBootType)pBootTitle->flags.bootType,
|
||||
pBootTitle->titleID,
|
||||
&s_defaultMountList[0] );
|
||||
|
||||
/*
|
||||
※※ 注意 ※※
|
||||
MountInfoは、FSで直接参照してアクセス許可状態を判定しているため、ここにアプリ用のデータをセットすると、
|
||||
その後はパーミッションの都合上FSライブラリおよびFSを使用したESやNAMライブラリが全く使用できなくなる。(今後パーミッション仕様については変更される可能性あり)
|
||||
よって、内部でFSライブラリを使用する処理は、本処理の前に完了しておく必要がある。
|
||||
*/
|
||||
}
|
||||
|
||||
/*
|
||||
// 起動SRLパスをシステム領域にセット
|
||||
static void SYSMi_SetBootSRLPath( LauncherBootType bootType, NAMTitleId titleID )
|
||||
{
|
||||
static char path[ FS_ENTRY_LONGNAME_MAX ];
|
||||
ROM_Header_Short *header = ( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF;
|
||||
|
||||
switch( bootType )
|
||||
{
|
||||
case LAUNCHER_BOOTTYPE_NAND:
|
||||
if( NAM_GetTitleBootContentPathFast( path, titleID ) != NAM_OK ) {
|
||||
OS_TPrintf( "ERROR: BootContentPath Get failed.\n" );
|
||||
}
|
||||
break;
|
||||
case LAUNCHER_BOOTTYPE_TEMP:
|
||||
STD_TSNPrintf( path, FS_ENTRY_LONGNAME_MAX, OS_TMP_APP_PATH, titleID );
|
||||
break;
|
||||
default:
|
||||
path[ 0 ] = 0;
|
||||
// STD_StrCpy( path, (const char*)"rom:" ); // ※SDK2623では、BootSRLPathを"rom:"としたらFSi_InitRomArchiveでNANDアプリ扱いされてアクセス例外で落ちる。
|
||||
break;
|
||||
}
|
||||
|
||||
if( path[ 0 ] ) {
|
||||
STD_CopyLStringZeroFill( (char *)((u32)header->sub_mount_info_ram_address + SYSMi_MOUNT_INFO_SIZE), path, OS_MOUNT_PATH_LEN );
|
||||
}else {
|
||||
MI_CpuClearFast( (char *)((u32)header->sub_mount_info_ram_address + SYSMi_MOUNT_INFO_SIZE), OS_MOUNT_PATH_LEN );
|
||||
}
|
||||
OS_TPrintf( "boot SRL path : %s\n", (char *)((u32)header->sub_mount_info_ram_address + SYSMi_MOUNT_INFO_SIZE) ); // ※OS_Init前で呼ぶとPrintfできないので注意。
|
||||
}
|
||||
*/
|
||||
|
||||
// マウント情報をシステム領域に書き込み
|
||||
static void SYSMi_SetMountInfoCore( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pSrc )
|
||||
{
|
||||
#pragma unused(bootType)
|
||||
|
||||
int i;
|
||||
ROM_Header_Short *header = ( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF;
|
||||
OSMountInfo *pDst = (OSMountInfo *)header->sub_mount_info_ram_address;
|
||||
char contentpath[ FS_ENTRY_LONGNAME_MAX ];
|
||||
|
||||
// タイトルIDからcontentのファイルパスをセット
|
||||
STD_TSNPrintf( contentpath, FS_ENTRY_LONGNAME_MAX,
|
||||
"nand:/title/%08x/%08x/content", (u32)( titleID >> 32 ), titleID );
|
||||
STD_CopyLStringZeroFill( pSrc[CONTENT_MOUNT_INDEX].path, contentpath, OS_MOUNT_PATH_LEN );
|
||||
|
||||
MI_CpuClearFast( (void *)pDst, SYSM_MOUNT_INFO_SIZE );
|
||||
|
||||
// セキュアアプリでない場合、"nand:", "nand2:"アーカイブを変更。
|
||||
if( ( titleID & TITLE_ID_HI_SECURE_FLAG_MASK ) == 0 ) {
|
||||
pSrc[ NAND_MOUNT_INDEX ].userPermission = 0; // "nand:"
|
||||
pSrc[ NAND2_MOUNT_INDEX ].userPermission = 0; // "nand2:"
|
||||
}
|
||||
|
||||
// セット
|
||||
for( i = 0; i < DEFAULT_MOUNT_LIST_NUM; i++ ) {
|
||||
if( pSrc->drive[ 0 ] ) {
|
||||
MI_CpuCopyFast( pSrc, pDst, sizeof(OSMountInfo) );
|
||||
pDst++;
|
||||
}
|
||||
pSrc++;
|
||||
}
|
||||
|
||||
#if 0
|
||||
pDst = (OSMountInfo *)pDst;
|
||||
for( i = 0; i < DEFAULT_MOUNT_LIST_NUM; i++ ) {
|
||||
OS_TPrintf( "mount path : %s\n", pDst->path );
|
||||
pDst++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
||||
static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt )
|
||||
{
|
||||
int i;
|
||||
|
||||
// ※カードからブートされた場合でも、titleIDが"NANDアプリ"の場合は、セーブデータをマウントするようにしている。
|
||||
|
||||
// セーブデータ有無を判定して、パスをセット
|
||||
if( ( ( bootType == LAUNCHER_BOOTTYPE_NAND ) && // NANDアプリがNANDからブートされた時
|
||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) ) ||
|
||||
( ( bootType == LAUNCHER_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時
|
||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) &&
|
||||
( SYSMi_GetWork()->flags.hotsw.isOnDebugger ) )
|
||||
) {
|
||||
char saveFilePath[ 2 ][ FS_ENTRY_LONGNAME_MAX ];
|
||||
u32 saveDataSize[ 2 ];
|
||||
saveDataSize[ 0 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->private_save_data_size;
|
||||
saveDataSize[ 1 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->public_save_data_size;
|
||||
|
||||
// セーブデータのファイルパスを取得
|
||||
NAM_GetTitleSaveFilePath( saveFilePath[ 1 ], saveFilePath[ 0 ], titleID );
|
||||
|
||||
// "ROMヘッダのNANDセーブファイルサイズ > 0" かつ そのファイルを開ける場合のみマウント情報を登録
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
FSFile file[1];
|
||||
FS_InitFile( file );
|
||||
if( saveDataSize[ i ] &&
|
||||
FS_OpenFileEx( file, saveFilePath[ i ], FS_FILEMODE_R) ) {
|
||||
FS_CloseFile( file );
|
||||
STD_CopyLStringZeroFill( pMountTgt->path, saveFilePath[ i ], OS_MOUNT_PATH_LEN );
|
||||
}else {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
pMountTgt++;
|
||||
}
|
||||
}else {
|
||||
// タイトルID指定なしのカードアプリの場合は、セーブデータ無効
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
||||
static void SYSMi_ModifySaveDataMountForLauncher( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt )
|
||||
{
|
||||
int i;
|
||||
|
||||
// ※カードからブートされた場合でも、titleIDが"NANDアプリ"の場合は、セーブデータをマウントするようにしている。
|
||||
|
||||
// セーブデータ有無を判定して、パスをセット
|
||||
if( ( ( bootType == LAUNCHER_BOOTTYPE_NAND ) && // NANDアプリがNANDからブートされた時
|
||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) ) ||
|
||||
( ( bootType == LAUNCHER_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時
|
||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) &&
|
||||
( SYSMi_GetWork()->flags.hotsw.isOnDebugger ) )
|
||||
) {
|
||||
char saveFilePath[ 2 ][ FS_ENTRY_LONGNAME_MAX ];
|
||||
u32 saveDataSize[ 2 ];
|
||||
saveDataSize[ 0 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->private_save_data_size;
|
||||
saveDataSize[ 1 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->public_save_data_size;
|
||||
|
||||
// セーブデータのファイルパスを取得
|
||||
STD_TSNPrintf( saveFilePath[ 0 ], FS_ENTRY_LONGNAME_MAX,
|
||||
"nand:/title/%08x/%08x/data/private.sav", (u32)( titleID >> 32 ), titleID );
|
||||
STD_TSNPrintf( saveFilePath[ 1 ], FS_ENTRY_LONGNAME_MAX,
|
||||
"nand:/title/%08x/%08x/data/public.sav", (u32)( titleID >> 32 ), titleID );
|
||||
|
||||
// "ROMヘッダのNANDセーブファイルサイズ > 0" かつ そのファイルを開ける場合のみマウント情報を登録
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
if( saveDataSize[ i ] ) {
|
||||
STD_CopyLStringZeroFill( pMountTgt->path, saveFilePath[ i ], OS_MOUNT_PATH_LEN );
|
||||
}else {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
pMountTgt++;
|
||||
}
|
||||
}else {
|
||||
// タイトルID指定なしのカードアプリの場合は、セーブデータ無効
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -355,7 +355,8 @@ SECTIONS
|
||||
|
||||
SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START;
|
||||
SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END;
|
||||
SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_MOUNT_INFO_TABLE = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_AUTOLOAD_WRAM_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400;
|
||||
SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE;
|
||||
SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE;
|
||||
|
||||
@ -548,8 +549,8 @@ SECTIONS
|
||||
} > <PROPERTY.OVERLAYTABLE>F
|
||||
|
||||
############################ OTHERS #################################
|
||||
SDK_SEA_KEY_STORE = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD.WRAM.BSS_END + 0x40;
|
||||
SDK_SEA_KEY_STORE = SDK_AUTOLOAD_WRAM_BSS_END;
|
||||
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD_WRAM_BSS_END + 0x40;
|
||||
|
||||
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM
|
||||
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM
|
||||
@ -557,7 +558,7 @@ SECTIONS
|
||||
|
||||
.check.WORKRAM:
|
||||
{
|
||||
. = . + SDK_AUTOLOAD.WRAM.BSS_END - SDK_AUTOLOAD.WRAM.START + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||
. = . + SDK_AUTOLOAD_WRAM_BSS_END - SDK_AUTOLOAD.WRAM.START + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||
|
||||
} > check.WORKRAM
|
||||
|
||||
|
||||
@ -231,7 +231,8 @@ SECTIONS
|
||||
|
||||
SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START;
|
||||
SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END;
|
||||
SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_MOUNT_INFO_TABLE = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_AUTOLOAD_WRAM_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400;
|
||||
SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE;
|
||||
SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE;
|
||||
|
||||
@ -304,7 +305,7 @@ SECTIONS
|
||||
} > <PROPERTY.OVERLAYTABLE>F
|
||||
|
||||
############################ OTHERS #################################
|
||||
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD_WRAM_BSS_END;
|
||||
|
||||
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM
|
||||
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM
|
||||
|
||||
@ -46,6 +46,8 @@ extern "C" {
|
||||
| PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_R )
|
||||
// 量産工程で使用する初回起動設定をキャンセルしてカードブートするショートカットキー
|
||||
|
||||
#define SYSM_MOUNT_INFO_SIZE (0x400 - OS_MOUNT_PATH_LEN)
|
||||
|
||||
typedef enum PlatformCode {
|
||||
PLATFORM_NTR = 0,
|
||||
PLATFORM_TWL = 1
|
||||
|
||||
@ -127,6 +127,8 @@ typedef struct SYSM_work {
|
||||
|
||||
typedef struct SYSM_work2 {
|
||||
SVCHMACSHA1Context hmac_sha1_context;
|
||||
TitleProperty bootTitleProperty;
|
||||
char bootContentPath[ FS_ENTRY_LONGNAME_MAX ];
|
||||
}SYSM_work2;
|
||||
|
||||
// NTRにおける仕様を継承する必要のあるワーク
|
||||
|
||||
Loading…
Reference in New Issue
Block a user