From 2cd5d2aa309b4c07a45af48dd66134c8c34bcdf5 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Mon, 31 Mar 2008 05:03:26 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=A6=E3=83=B3=E3=83=88=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E3=81=AE=E6=95=B4=E7=90=86=E3=80=82=20=E3=80=80?= =?UTF-8?q?=E3=82=AB=E3=83=BC=E3=83=89=E3=82=A2=E3=83=97=E3=83=AA=E3=81=AE?= =?UTF-8?q?=E6=99=82=E3=81=AF=E3=80=81=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB?= =?UTF-8?q?=E3=83=88=E3=81=A7=E3=81=AF=E3=83=9E=E3=82=A6=E3=83=B3=E3=83=88?= =?UTF-8?q?=E6=83=85=E5=A0=B1=E3=82=92=E3=82=BB=E3=83=83=E3=83=88=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=81=8C=E3=80=81SDIO[1]=E3=81=8C=E6=9C=89?= =?UTF-8?q?=E5=8A=B9=E3=81=AA=E6=99=82=E3=81=AE=E3=81=BF=E3=80=81=20?= =?UTF-8?q?=E3=80=80nand,=20nand2,=20shared1,=20shared2,=20photo,=20(sdmc)?= =?UTF-8?q?=E3=82=92=E3=82=BB=E3=83=83=E3=83=88=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E5=A4=89=E6=9B=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1007 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/common/src/mountInfo.c | 54 +++++++++++++------ 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c b/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c index 2bef2ea7..099fa79b 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c +++ b/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c @@ -17,6 +17,7 @@ #include #include +#include #include #include "internal_api.h" @@ -30,6 +31,7 @@ #define SHARED1_MOUNT_INDEX 3 #define PRV_SAVE_DATA_MOUNT_INDEX 6 // プライベートセーブデータの s_defaultMountInfo リストインデックス #define PUB_SAVE_DATA_MOUNT_INDEX 7 // パブリック セーブデータの s_defaultMountInfo リストインデックス +#define SDMC_MOUNT_INDEX 8 #define TITLEID_APP_SYS_FLAG_SHIFT ( 32 + 0 ) #define TITLEID_NOT_LAUNCH_FLAG_SHIFT ( 32 + 1 ) @@ -63,18 +65,12 @@ OSMountInfo s_defaultMountList[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4) = { { '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 ) { @@ -86,7 +82,7 @@ void SYSMi_SetLauncherMountInfo( void ) MI_CpuCopyFast( s_defaultMountList, mountListBuffer, sizeof(s_defaultMountList) ); if( ( *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG & 0x80 ) == 0 ) { - MI_CpuClearFast( (u8 *)header->sub_mount_info_ram_address, 0x400 ); + MI_CpuClearFast( (u8 *)header->sub_mount_info_ram_address, SYSM_MOUNT_INFO_SIZE + OS_MOUNT_PATH_LEN ); } // bootSRLパスの設定は、ランチャーが自分で設定するのは厄介なので、NANDファームから引き渡してもらう @@ -109,14 +105,12 @@ void SYSMi_SetLauncherMountInfo( void ) void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle ) { OSMountInfo mountListBuffer[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4); + ROM_Header_Short *pROMH = ( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; // アプリがTWL対応でない場合は、何もセットせずにリターン - if( ( (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->platform_code ) == 0 ) { + if( ( pROMH->platform_code ) == 0 ) { return; } - // デフォルトリストをバッファにコピー - MI_CpuCopyFast( s_defaultMountList, mountListBuffer, sizeof(s_defaultMountList) ); - // 起動アプリのSRLパスをセット // SYSMi_SetBootSRLPath( (LauncherBootType)pBootTitle->flags.bootType, // pBootTitle->titleID ); @@ -124,6 +118,38 @@ void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle ) STD_CopyLStringZeroFill( (char *)(SYSM_TWL_MOUNT_INFO_TMP_BUFFER + SYSM_MOUNT_INFO_SIZE), SYSMi_GetWork2()->bootContentPath, OS_MOUNT_PATH_LEN ); + // デフォルトリストをバッファにコピー + MI_CpuCopyFast( s_defaultMountList, mountListBuffer, sizeof(s_defaultMountList) ); + + // SDカードアクセス要求がない場合は、sdmcドライブをマウントしない。 + if( pROMH->access_control.sd_card_access == 0 ) { + mountListBuffer[ SDMC_MOUNT_INDEX ].drive[ 0 ] = 0; + } + + // セキュアアプリでない場合、"nand:", "nand2:"アーカイブをNAに変更。 + if( ( pBootTitle->titleID & TITLE_ID_SECURE_FLAG_MASK ) == 0 ) { + mountListBuffer[ NAND_MOUNT_INDEX ].userPermission = 0; // "nand:" + mountListBuffer[ NAND2_MOUNT_INDEX ].userPermission = 0; // "nand2:" + } + + // セキュアアプリでないカードアプリは、マウント情報をクリアする。 + // 但し、SDIO[1]アクセスが有効なら、いくつかのアーカイブを残す。(NANDにアクセスしたいカードアプリが出てきた時のための準備。) + if( ( ( pBootTitle->titleID & TITLE_ID_SECURE_FLAG_MASK ) == 0 ) && + ( ( pBootTitle->titleID & TITLEID_MEDIA_NAND_FLAG ) == 0 ) ) { + int i; + u16 mask = 0; + if( pROMH->arm7_scfg_ext & ROM_SCFG_EXT_SD1_MASK ) { + mask = 0x0173; // SDIO[1]アクセスが有効なアプリは、nand:/, nand2:/, shared1:/, shared2:/, photo:/, sdmc:/を残す。 + }else { + mask = 0; // 全マウント情報クリア + } + for( i = 0; i < DEFAULT_MOUNT_LIST_NUM; i++ ) { + if( ( mask & ( 0x0001 << i ) ) == 0 ) { + mountListBuffer[ i ].drive[ 0 ] = 0; + } + } + } + // セーブデータ有無によるマウント情報の編集 // ※ARM7ではNAMは動かせないので、NAMを使わないバージョンで対応。 SYSMi_ModifySaveDataMountForLauncher( LAUNCHER_BOOTTYPE_NAND, @@ -164,12 +190,6 @@ static void SYSMi_SetMountInfoCore( LauncherBootType bootType, NAMTitleId titleI MI_CpuClearFast( (void *)pDst, SYSM_MOUNT_INFO_SIZE ); - // セキュアアプリでない場合、"nand:", "nand2:"アーカイブを変更。 - if( ( titleID & TITLE_ID_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 ] ) {