mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
マウント情報の整理。
カードアプリの時は、デフォルトではマウント情報をセットしないが、SDIO[1]が有効な時のみ、 nand, nand2, shared1, shared2, photo, (sdmc)をセットするよう変更。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1007 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
8653f5937a
commit
2cd5d2aa30
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
#include <twl/nam.h>
|
#include <twl/nam.h>
|
||||||
|
#include <twl/os/common/format_rom_scfg.h>
|
||||||
#include <sysmenu.h>
|
#include <sysmenu.h>
|
||||||
#include "internal_api.h"
|
#include "internal_api.h"
|
||||||
|
|
||||||
@ -30,6 +31,7 @@
|
|||||||
#define SHARED1_MOUNT_INDEX 3
|
#define SHARED1_MOUNT_INDEX 3
|
||||||
#define PRV_SAVE_DATA_MOUNT_INDEX 6 // プライベートセーブデータの s_defaultMountInfo リストインデックス
|
#define PRV_SAVE_DATA_MOUNT_INDEX 6 // プライベートセーブデータの s_defaultMountInfo リストインデックス
|
||||||
#define PUB_SAVE_DATA_MOUNT_INDEX 7 // パブリック セーブデータの 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_APP_SYS_FLAG_SHIFT ( 32 + 0 )
|
||||||
#define TITLEID_NOT_LAUNCH_FLAG_SHIFT ( 32 + 1 )
|
#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", "/" },
|
{ '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 )
|
void SYSMi_SetLauncherMountInfo( void )
|
||||||
{
|
{
|
||||||
@ -86,7 +82,7 @@ void SYSMi_SetLauncherMountInfo( void )
|
|||||||
MI_CpuCopyFast( s_defaultMountList, mountListBuffer, sizeof(s_defaultMountList) );
|
MI_CpuCopyFast( s_defaultMountList, mountListBuffer, sizeof(s_defaultMountList) );
|
||||||
|
|
||||||
if( ( *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG & 0x80 ) == 0 ) {
|
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ファームから引き渡してもらう
|
// bootSRLパスの設定は、ランチャーが自分で設定するのは厄介なので、NANDファームから引き渡してもらう
|
||||||
@ -109,14 +105,12 @@ void SYSMi_SetLauncherMountInfo( void )
|
|||||||
void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle )
|
void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle )
|
||||||
{
|
{
|
||||||
OSMountInfo mountListBuffer[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4);
|
OSMountInfo mountListBuffer[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4);
|
||||||
|
ROM_Header_Short *pROMH = ( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF;
|
||||||
// アプリがTWL対応でない場合は、何もセットせずにリターン
|
// アプリがTWL対応でない場合は、何もセットせずにリターン
|
||||||
if( ( (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->platform_code ) == 0 ) {
|
if( ( pROMH->platform_code ) == 0 ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// デフォルトリストをバッファにコピー
|
|
||||||
MI_CpuCopyFast( s_defaultMountList, mountListBuffer, sizeof(s_defaultMountList) );
|
|
||||||
|
|
||||||
// 起動アプリのSRLパスをセット
|
// 起動アプリのSRLパスをセット
|
||||||
// SYSMi_SetBootSRLPath( (LauncherBootType)pBootTitle->flags.bootType,
|
// SYSMi_SetBootSRLPath( (LauncherBootType)pBootTitle->flags.bootType,
|
||||||
// pBootTitle->titleID );
|
// pBootTitle->titleID );
|
||||||
@ -124,6 +118,38 @@ void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle )
|
|||||||
STD_CopyLStringZeroFill( (char *)(SYSM_TWL_MOUNT_INFO_TMP_BUFFER + SYSM_MOUNT_INFO_SIZE),
|
STD_CopyLStringZeroFill( (char *)(SYSM_TWL_MOUNT_INFO_TMP_BUFFER + SYSM_MOUNT_INFO_SIZE),
|
||||||
SYSMi_GetWork2()->bootContentPath, OS_MOUNT_PATH_LEN );
|
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を使わないバージョンで対応。
|
// ※ARM7ではNAMは動かせないので、NAMを使わないバージョンで対応。
|
||||||
SYSMi_ModifySaveDataMountForLauncher( LAUNCHER_BOOTTYPE_NAND,
|
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 );
|
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++ ) {
|
for( i = 0; i < DEFAULT_MOUNT_LIST_NUM; i++ ) {
|
||||||
if( pSrc->drive[ 0 ] ) {
|
if( pSrc->drive[ 0 ] ) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user