FSライブラリの内部メモリ設定方法の変更に対応

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1795 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2008-07-07 05:17:06 +00:00
parent e76216fdb7
commit b2b334015f
2 changed files with 52 additions and 15 deletions

View File

@ -17,6 +17,8 @@
#include <firm.h> #include <firm.h>
#include <es.h> #include <es.h>
//#define PROFILE_ES 0x02FFCB00
// bootContent ‚ð•\‚·“ÁŽê‚È contentIndex // bootContent ‚ð•\‚·“ÁŽê‚È contentIndex
#define CONTENT_INDEX_BOOT 0xFFFF #define CONTENT_INDEX_BOOT 0xFFFF
@ -34,11 +36,26 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
void FS_InitFIRM( void ) void FS_InitFIRM( void )
{ {
FSiTemporaryBuffer = (void*)HW_FIRM_FS_TEMP_BUFFER;
FATFS_InitFIRM(); FATFS_InitFIRM();
FS_Init( FS_DMA_NOT_USE ); FS_Init( FS_DMA_NOT_USE );
} }
/*---------------------------------------------------------------------------*
Name: FSi_SetupFATBuffers
Description: override weak function
Arguments:
Returns: None
*---------------------------------------------------------------------------*/
void FSi_SetupFATBuffers(void)
{
FSiFATFSDrive = (void*)HW_FIRM_FS_FATFS_DRIVE;
FSiFATFSAsyncRequest = (void*)HW_FIRM_FS_FATFS_ASYNC_REQUEST;
FSiTemporaryBuffer = (void*)HW_FIRM_FS_TEMP_BUFFER;
}
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: FSi_OverrideRomArchive Name: FSi_OverrideRomArchive
@ -241,32 +258,42 @@ BOOL FS_ResolveSrl( OSTitleId titleId )
int FS_ResolveSrlList( const OSTitleId* titleIdList, u32 nums ) int FS_ResolveSrlList( const OSTitleId* titleIdList, u32 nums )
{ {
int i; int i;
#ifdef PROFILE_ES
OSTick tick[8]; OSTick tick[8];
char*ptr=(char*)0x02FFCB00; char*ptr=(char*)PROFILE_ES;
tick[0] = OS_GetTick(); tick[0] = OS_GetTick();
#endif
MI_CpuClearFast( (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, HW_FIRM_FS_BOOT_SRL_PATH_BUF_SIZE ); MI_CpuClearFast( (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, HW_FIRM_FS_BOOT_SRL_PATH_BUF_SIZE );
#ifdef PROFILE_ES
tick[1] = OS_GetTick(); tick[1] = OS_GetTick();
#endif
if ( !titleIdList || !nums || ES_ERR_OK != ES_InitLib() ) if ( !titleIdList || !nums || ES_ERR_OK != ES_InitLib() )
{ {
return FALSE; return FALSE;
} }
for ( i = 0; i < nums; i++ ) for ( i = 0; i < nums; i++ )
{ {
#ifdef PROFILE_ES
tick[2+i] = OS_GetTick(); tick[2+i] = OS_GetTick();
#endif
if ( ES_ERR_OK == ES_GetContentPath(titleIdList[i], CONTENT_INDEX_BOOT, (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF) ) if ( ES_ERR_OK == ES_GetContentPath(titleIdList[i], CONTENT_INDEX_BOOT, (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF) )
{ {
break; break;
} }
} }
#ifdef PROFILE_ES
tick[3+i] = OS_GetTick(); tick[3+i] = OS_GetTick();
#endif
if ( ES_ERR_OK != ES_CloseLib() ) if ( ES_ERR_OK != ES_CloseLib() )
{ {
return FALSE; return FALSE;
} }
#ifdef PROFILE_ES
tick[4+i] = OS_GetTick(); tick[4+i] = OS_GetTick();
tick[5+i] = tick[4+i]; tick[5+i] = tick[4+i];
for(i=0;i<7;i++) for(i=0;i<7;i++)
ptr+=STD_TSPrintf(ptr, "tick[%d]:%d\n",i,(int)OS_TicksToMicroSeconds(tick[i+1]-tick[i])); ptr+=STD_TSPrintf(ptr, "tick[%d]:%d\n",i,(int)OS_TicksToMicroSeconds(tick[i+1]-tick[i]));
#endif
return (i == nums ? -1 : i); return (i == nums ? -1 : i);
} }

View File

@ -24,6 +24,8 @@
extern "C" { extern "C" {
#endif #endif
#define HW_FIRM_ROUNDUP32(x) ( ((x) + 31) & -32 )
//------------------------------------- *_LoadBuffer //------------------------------------- *_LoadBuffer
#define HW_FIRM_LOAD_BUFFER_BASE MI_GetWramMapStart_B() #define HW_FIRM_LOAD_BUFFER_BASE MI_GetWramMapStart_B()
#define HW_FIRM_LOAD_BUFFER_UNIT_SIZE 0x8000 #define HW_FIRM_LOAD_BUFFER_UNIT_SIZE 0x8000
@ -35,13 +37,21 @@ extern "C" {
#define HW_FIRM_FS_MOUNT_INFO_BUF_SIZE (HW_TWL_FS_BOOT_SRL_PATH_BUF - HW_TWL_FS_MOUNT_INFO_BUF) #define HW_FIRM_FS_MOUNT_INFO_BUF_SIZE (HW_TWL_FS_BOOT_SRL_PATH_BUF - HW_TWL_FS_MOUNT_INFO_BUF)
#define HW_FIRM_FS_BOOT_SRL_PATH_BUF_SIZE (HW_TWL_ROM_HEADER_BUF - HW_TWL_FS_BOOT_SRL_PATH_BUF) #define HW_FIRM_FS_BOOT_SRL_PATH_BUF_SIZE (HW_TWL_ROM_HEADER_BUF - HW_TWL_FS_BOOT_SRL_PATH_BUF)
#define HW_FIRM_FATFS_ARCHNAME_LIST (HW_FIRM_FATFS_ARCHNAME_LIST_END - HW_FIRM_FATFS_ARCHNAME_LIST_SIZE) #define HW_FIRM_FATFS_ARCHNAME_LIST (HW_FIRM_FATFS_ARCHNAME_LIST_END - HW_FIRM_FATFS_ARCHNAME_LIST_SIZE) // 0x02fee120
#define HW_FIRM_FATFS_ARCHNAME_LIST_SIZE MATH_ROUNDUP(OS_MOUNT_ARCHIVE_NAME_LEN * OS_MOUNT_INFO_MAX + 1, 32) // 0xC0 #define HW_FIRM_FATFS_ARCHNAME_LIST_SIZE MATH_ROUNDUP(OS_MOUNT_ARCHIVE_NAME_LEN * OS_MOUNT_INFO_MAX + 1, 32) // 0xc0
#define HW_FIRM_FATFS_ARCHNAME_LIST_END HW_FIRM_FATFS_COMMAND_BUFFER // 0x02ff5800 #define HW_FIRM_FATFS_ARCHNAME_LIST_END HW_FIRM_FATFS_COMMAND_BUFFER // 0x2fee1e0
#define HW_FIRM_FATFS_COMMAND_BUFFER (HW_FIRM_FATFS_COMMAND_BUFFER_END - HW_FIRM_FATFS_COMMAND_BUFFER_SIZE) #define HW_FIRM_FATFS_COMMAND_BUFFER (HW_FIRM_FATFS_COMMAND_BUFFER_END - HW_FIRM_FATFS_COMMAND_BUFFER_SIZE)
#define HW_FIRM_FATFS_COMMAND_BUFFER_SIZE FATFS_COMMAND_BUFFER_MAX // 0x1000 #define HW_FIRM_FATFS_COMMAND_BUFFER_SIZE FATFS_COMMAND_BUFFER_MAX // 0x1000
#define HW_FIRM_FATFS_COMMAND_BUFFER_END HW_FIRM_FS_TEMP_BUFFER // 0x02ff6800 #define HW_FIRM_FATFS_COMMAND_BUFFER_END HW_FIRM_FS_FATFS_DRIVE // 0x2fef1e0
#define HW_FIRM_FS_FATFS_DRIVE (HW_FIRM_FS_FATFS_DRIVE_END - HW_FIRM_FS_FATFS_DRIVE_SIZE)
#define HW_FIRM_FS_FATFS_DRIVE_SIZE HW_FIRM_ROUNDUP32(sizeof(FSFATFSArchiveContext[FS_MOUNTDRIVE_MAX])) // 0x1cc0
#define HW_FIRM_FS_FATFS_DRIVE_END HW_FIRM_FS_FATFS_ASYNC_REQUEST // 0x02ff0ea0
#define HW_FIRM_FS_FATFS_ASYNC_REQUEST (HW_FIRM_FS_FATFS_ASYNC_REQUEST_END - HW_FIRM_FS_FATFS_ASYNC_REQUEST_SIZE)
#define HW_FIRM_FS_FATFS_ASYNC_REQUEST_SIZE HW_FIRM_ROUNDUP32(sizeof(FATFSRequestBuffer[FS_MOUNTDRIVE_MAX])) // 0x5960
#define HW_FIRM_FS_FATFS_ASYNC_REQUEST_END HW_FIRM_FS_TEMP_BUFFER // 0x02ff6800
#define HW_FIRM_FS_TEMP_BUFFER (HW_FIRM_FS_TEMP_BUFFER_END - HW_FIRM_FS_TEMP_BUFFER_SIZE) #define HW_FIRM_FS_TEMP_BUFFER (HW_FIRM_FS_TEMP_BUFFER_END - HW_FIRM_FS_TEMP_BUFFER_SIZE)
#define HW_FIRM_FS_TEMP_BUFFER_SIZE FS_TEMPORARY_BUFFER_MAX // 0x5800 #define HW_FIRM_FS_TEMP_BUFFER_SIZE FS_TEMPORARY_BUFFER_MAX // 0x5800