menu_launcher/sdmc_launcherの更新

・NANDコンテキストをファームで共有メモリにコピーするようにした
・FATFSの許可アーカイブリストの場所を指定するようにした
・FSのうち、sdmc_launcherでのみ使用するコードを分離した
・共有メモリのFS用バッファをいろいろ使うようにした(rollback)
・利用後の共有メモリのFS用バッファを消すようにした
・アドレスの変わらないポインタにconstを付けた(void *constのように)


git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@931 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2008-03-24 11:47:19 +00:00
parent 9c68d56d3f
commit bbb6bc01a7
15 changed files with 171 additions and 98 deletions

View File

@ -260,7 +260,7 @@ void TwlMain( void )
// 3: after PostInit
PUSH_PROFILE();
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE);
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE);
// 4: after STD_CopyString
PUSH_PROFILE();

View File

@ -21,7 +21,9 @@
void FATFS_InitFIRM( void )
{
MI_CpuClearFast( (void*)HW_FIRM_FATFS_COMMAND_BUFFER, HW_FIRM_FATFS_COMMAND_BUFFER_SIZE );
MI_CpuClearFast( (void*)HW_FIRM_FATFS_ARCHNAME_LIST, HW_FIRM_FATFS_ARCHNAME_LIST_SIZE );
FATFSiCommandBuffer = (void*)HW_FIRM_FATFS_COMMAND_BUFFER;
FATFSiArcnameList = (void*)HW_FIRM_FATFS_ARCHNAME_LIST;
FATFS_Init();
}

View File

@ -32,7 +32,7 @@ LINCLUDES = \
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include \
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include/twl/fatfs/ARM7
SRCS = fs_firm.c fs_loader.c
SRCS = fs_firm.c fs_firm_ex.c fs_loader.c
TARGET_LIB = libfs_sp$(FIRM_LIBSUFFIX).a

View File

@ -114,62 +114,8 @@ void FS_InitMountInfo( BOOL nand, BOOL sdmc )
*(u32*)dest = 0;
}
*(u8*)HW_TWL_RED_LAUNCHER_VER = 1;
STD_CopyString( "nand:/sys/HWINFO_S.dat", (void*)HW_FIRM_BOOT_SRL_PATH_BUF ); // dummy for firm
}
/*---------------------------------------------------------------------------*
Name: FS_SetMountInfoForSrl
Description: set mount info for srl file
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void FS_SetMountInfoForSrl( void )
{
const OSMountInfo defaultMountList[] 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, 0, 0, 0, "nand", "/" }, // ユーザーアプリはこのアーカイブではR/W不可
{ 'B', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 1, OS_MOUNT_RSC_WRAM, 0, 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", "/" },
};
#define NAND_MOUNT_INDEX 0
#define NAND2_MOUNT_INDEX 1
#define CONTENT_MOUNT_INDEX 2
const ROM_Header_Short* const rhs = HW_TWL_ROM_HEADER_BUF;
OSMountInfo* const dest = (OSMountInfo*)HW_FIRM_MOUNT_INFO_BUF;
MI_CpuCopy8(defaultMountList, dest, sizeof(defaultMountList));
// nandアプリならパスを追加
if ( *(char*)HW_FIRM_BOOT_SRL_PATH_BUF )
{
const char* lastpath = STD_SearchCharReverse( (char*)HW_FIRM_BOOT_SRL_PATH_BUF, '/' );
if (lastpath && *(char*)(lastpath-1) != ':')
{
u32 len = (u32)(lastpath - (char*)HW_FIRM_BOOT_SRL_PATH_BUF);
if (len > OS_MOUNT_PATH_LEN)
{
len = OS_MOUNT_PATH_LEN;
}
MI_CpuCopy8((char*)HW_FIRM_BOOT_SRL_PATH_BUF, dest[CONTENT_MOUNT_INDEX].path, len);
if (len != OS_MOUNT_PATH_LEN)
{
((char*)HW_FIRM_BOOT_SRL_PATH_BUF)[len] = 0;
}
}
}
// secureアプリならアクセス許可
if ( rhs->titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK )
{
dest[NAND_MOUNT_INDEX].userPermission = dest[NAND2_MOUNT_INDEX].userPermission = (OS_MOUNT_USR_R|OS_MOUNT_USR_W);
}
*(char*)HW_FIRM_BOOT_SRL_PATH_BUF = 0;
// MI_CpuCopy8("nand:/nandfirm/menu_launcher.srl", (char*)HW_FIRM_BOOT_SRL_PATH_BUF, 0x40);
}
/*---------------------------------------------------------------------------*
@ -183,8 +129,8 @@ void FS_SetMountInfoForSrl( void )
*---------------------------------------------------------------------------*/
int FS_OpenSrl( void )
{
u16 fatpath[HW_FIRM_BOOT_SRL_PATH_BUF_SIZE];
MI_CpuCopyFast((void*)HW_FIRM_TEMP_SRL_PATH_BUF, (void*)HW_FIRM_BOOT_SRL_PATH_BUF, HW_FIRM_BOOT_SRL_PATH_BUF_SIZE);
ConvertPath(fatpath, (void*)HW_FIRM_BOOT_SRL_PATH_BUF, HW_FIRM_BOOT_SRL_PATH_BUF_SIZE);
#define BOOT_SRL_PATH_BUF_SIZE (HW_TWL_ROM_HEADER_BUF - HW_TWL_FS_BOOT_SRL_PATH_BUF)
u16 fatpath[BOOT_SRL_PATH_BUF_SIZE];
ConvertPath(fatpath, (void*)HW_TWL_FS_BOOT_SRL_PATH_BUF, BOOT_SRL_PATH_BUF_SIZE);
return FATFSi_rtfs_po_open((u8*)fatpath, 0, 0);
}

View File

@ -0,0 +1,76 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL - libraries - fs
File: fs_firm_ex.c
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$
*---------------------------------------------------------------------------*/
#include <firm.h>
#if 0
REBOOT内部でコピーする必要がある
#endif
/*---------------------------------------------------------------------------*
Name: FS_SetMountInfoForSrl
Description: set mount info for srl file
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void FS_SetMountInfoForSrl( void )
{
const OSMountInfo defaultMountList[] 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, 0, 0, 0, "nand", "/" }, // ユーザーアプリはこのアーカイブではR/W不可
{ 'B', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 1, OS_MOUNT_RSC_WRAM, 0, 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", "/" },
};
#define NAND_MOUNT_INDEX 0
#define NAND2_MOUNT_INDEX 1
#define CONTENT_MOUNT_INDEX 2
const ROM_Header_Short* const rhs = HW_TWL_ROM_HEADER_BUF;
const char* const srl = HW_TWL_FS_BOOT_SRL_PATH_BUF;
OSMountInfo* dest = (OSMountInfo *)HW_TWL_FS_MOUNT_INFO_BUF;
MI_CpuCopy8(defaultMountList, dest, sizeof(defaultMountList));
// nandアプリならパスを追加
if ( *srl )
{
const char* lastpath = STD_SearchCharReverse( srl, '/' );
u32 len = (u32)(lastpath - srl);
if (len > OS_MOUNT_PATH_LEN)
{
len = OS_MOUNT_PATH_LEN;
}
MI_CpuCopy8(srl, dest[CONTENT_MOUNT_INDEX].path, len);
if (len != OS_MOUNT_PATH_LEN)
{
dest[CONTENT_MOUNT_INDEX].path[len] = 0;
}
}
// secureアプリならアクセス許可
if ( rhs->titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK )
{
dest[NAND_MOUNT_INDEX].userPermission = dest[NAND2_MOUNT_INDEX].userPermission = (OS_MOUNT_USR_R|OS_MOUNT_USR_W);
}
}

View File

@ -175,7 +175,7 @@ BOOL FS_GetTitleBootContentPathFast(char* buf, OSTitleId titleId)
/*---------------------------------------------------------------------------*
Name: FS_ResolveSrl
Description: resolve srl filename and store to HW_FIRM_TEMP_SRL_PATH_BUF
Description: resolve srl filename and store to HW_TWL_FS_BOOT_SRL_PATH_BUF
Arguments: titleId title id for srl file
@ -184,7 +184,7 @@ BOOL FS_GetTitleBootContentPathFast(char* buf, OSTitleId titleId)
BOOL FS_ResolveSrl( OSTitleId titleId )
{
if ( ES_ERR_OK != ES_InitLib() ||
ES_ERR_OK != ES_GetContentPath(titleId, CONTENT_INDEX_BOOT, (char*)HW_FIRM_TEMP_SRL_PATH_BUF) ||
ES_ERR_OK != ES_GetContentPath(titleId, CONTENT_INDEX_BOOT, (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF) ||
ES_ERR_OK != ES_CloseLib() )
{
return FALSE;
@ -195,7 +195,7 @@ BOOL FS_ResolveSrl( OSTitleId titleId )
/*---------------------------------------------------------------------------*
Name: FS_ResolveSrlUnsecured
Description: resolve srl filename and store to HW_FIRM_TEMP_SRL_PATH_BUF
Description: resolve srl filename and store to HW_TWL_FS_BOOT_SRL_PATH_BUF
without almost security check
Arguments: titleId title id for srl file
@ -204,7 +204,7 @@ BOOL FS_ResolveSrl( OSTitleId titleId )
*---------------------------------------------------------------------------*/
BOOL FS_ResolveSrlUnsecured( OSTitleId titleId )
{
if ( !FS_GetTitleBootContentPathFast((char*)HW_FIRM_TEMP_SRL_PATH_BUF, titleId) )
if ( !FS_GetTitleBootContentPathFast((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, titleId) )
{
return FALSE;
}

View File

@ -16,6 +16,7 @@
*---------------------------------------------------------------------------*/
#include <firm/os.h>
#include <firm/fs.h>
#include "reboot.h"
extern void SDK_STATIC_START(void); // static and bss start address
@ -34,15 +35,15 @@ void OS_BootWithRomHeaderFromFIRM( ROM_Header* rom_header )
{
#ifdef SDK_ARM9
void *entry = rom_header->s.main_entry_address;
void *code_buf = (void*)OS_BOOT_CODE_BUF; // 0x023fee00
void *stack_top = (void*)OS_BOOT_STACK_TOP; // (HW_DTCM_END - HW_DTCM_SYSRV_SIZE - HW_SVC_STACK_SIZE)
void *const code_buf = (void*)OS_BOOT_CODE_BUF; // 0x023fee00
void *const stack_top = (void*)OS_BOOT_STACK_TOP; // (HW_DTCM_END - HW_DTCM_SYSRV_SIZE - HW_SVC_STACK_SIZE)
#else
void *entry = rom_header->s.sub_entry_address;
void *code_buf = (void*)OS_BOOT_CODE_BUF; // 0x03fff600
void *stack_top = (void*)OS_BOOT_STACK_TOP; // (HW_WRAM_AREA_END - HW_PRV_WRAM_SYSRV_SIZE - HW_SVC_STACK_SIZE)
void *const code_buf = (void*)OS_BOOT_CODE_BUF; // 0x03fff600
void *const stack_top = (void*)OS_BOOT_STACK_TOP; // (HW_WRAM_AREA_END - HW_PRV_WRAM_SYSRV_SIZE - HW_SVC_STACK_SIZE)
#endif
void *wram_reg = rom_header->s.main_wram_config_data;
REBOOTTarget target = REBOOT_TARGET_TWL_SECURE;
void *const wram_reg = rom_header->s.main_wram_config_data;
REBOOTTarget target = rom_header->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK ? REBOOT_TARGET_TWL_SECURE : (rom_header->s.titleID_Hi & TITLE_ID_HI_APP_TYPE_MASK ? REBOOT_TARGET_TWL_SYSTEM : REBOOT_TARGET_TWL_APP);
BOOL scfg = TRUE; // no touch
BOOL jtag = FALSE; // no touch
static u32 mem_list[32];
@ -80,10 +81,25 @@ void OS_BootWithRomHeaderFromFIRM( ROM_Header* rom_header )
#endif // SDK_ARM7
mem_list[i++] = NULL;
// copy forward
#ifdef SDK_ARM7
if ( *(char*)HW_TWL_FS_MOUNT_INFO_BUF )
{
mem_list[i++] = HW_TWL_FS_MOUNT_INFO_BUF;
mem_list[i++] = (u32)rom_header->s.sub_mount_info_ram_address;
mem_list[i++] = HW_TWL_ROM_HEADER_BUF - HW_TWL_FS_MOUNT_INFO_BUF;
}
#endif
mem_list[i++] = NULL;
// copy backward
mem_list[i++] = NULL;
// post clear
#ifdef SDK_ARM7
if ( *(char*)HW_TWL_FS_MOUNT_INFO_BUF )
{
mem_list[i++] = HW_TWL_FS_MOUNT_INFO_BUF;
mem_list[i++] = HW_TWL_ROM_HEADER_BUF - HW_TWL_FS_MOUNT_INFO_BUF;
}
#endif
mem_list[i++] = NULL;
SDK_ASSERT(i <= sizeof(mem_list)/sizeof(mem_list[0]));
#ifdef FIRM_USE_TWLSDK_KEYS
@ -128,6 +144,10 @@ BOOL OSi_FromBromToMenu( void )
result = FALSE;
}
}
#if SDK_ARM7
// copy nand context
MI_CpuCopyFast( &fromBromBuf->SDNandContext, (void*)HW_SD_NAND_CONTEXT_BUF, sizeof(SDPortContextData) );
#endif
// clear out of OSFromFirmBuf area
MI_CpuClearFast( fromBromBuf->header.max, sizeof(fromBromBuf->header.max) );
return result;

View File

@ -65,8 +65,6 @@ static char* debugPtr = (char*)PRINT_MEMORY_ADDR;
#define DMA_FATFS_1 0
#define DMA_FATFS_2 1
extern void* SDNandContext; /* NAND初期化パラメータ */
static ROM_Header* const rh= (ROM_Header*)HW_TWL_ROM_HEADER_BUF;
static OSThread idleThread;
@ -220,7 +218,6 @@ void TwlSpMain( void )
// PM_BackLightOn( FALSE );
SDNandContext = &OSi_GetFromFirmAddr()->SDNandContext;
if ( !FATFS_Init( DMA_FATFS_1, DMA_FATFS_2, THREAD_PRIO_FATFS ) )
{
OS_TPrintf("Failed to call FATFS_Init().\n");

View File

@ -265,19 +265,19 @@ void TwlMain( void )
switch ( PAD_Read() & PAD_KEYPORT_MASK )
{
case 0:
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE);
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE);
break;
case PAD_BUTTON_A:
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE_A);
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE_A);
break;
case PAD_BUTTON_B:
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE_B);
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE_B);
break;
case PAD_BUTTON_L:
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE_L);
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE_L);
break;
case PAD_BUTTON_R:
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE_R);
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE_R);
break;
default:
OS_TPrintf("Unknown pad pattern (%X).\n", PAD_Read() & PAD_KEYPORT_MASK);

View File

@ -20,6 +20,7 @@
#ifdef SDK_ARM7
#include <firm/fs/ARM7/fs_firm.h>
#include <firm/fs/ARM7/fs_firm_ex.h>
#include <firm/fs/ARM7/fs_loader.h>
#else
#include <firm/fs/ARM9/fs_firm.h>

View File

@ -34,17 +34,6 @@ extern "C" {
*---------------------------------------------------------------------------*/
void FS_InitMountInfo( BOOL nand, BOOL sdmc );
/*---------------------------------------------------------------------------*
Name: FS_SetMountInfoForSrl
Description: set mount info for srl file
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void FS_SetMountInfoForSrl( void );
/*---------------------------------------------------------------------------*
Name: FS_OpenSrl

View File

@ -0,0 +1,42 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL - include - fs
File: fs_firm_ex.h
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:: 2007-09-06$
$Rev$
$Author$
*---------------------------------------------------------------------------*/
#ifndef FIRM_FS_FS_FIRM_EX_H_
#define FIRM_FS_FS_FIRM_EX_H_
#ifdef __cplusplus
extern "C" {
#endif
/*---------------------------------------------------------------------------*
Name: FS_SetMountInfoForSrl
Description: set mount info for srl file
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void FS_SetMountInfoForSrl( void );
#ifdef __cplusplus
} /* extern "C" */
#endif
/* FIRM_FS_FS_FIRM_EX_H_ */
#endif

View File

@ -54,7 +54,7 @@ BOOL FS_GetTitleBootContentPathFast(char* buf, OSTitleId titleId);
/*---------------------------------------------------------------------------*
Name: FS_ResolveSrl
Description: resolve srl filename and store to HW_FIRM_TEMP_SRL_PATH_BUF
Description: resolve srl filename and store to HW_TWL_FS_BOOT_SRL_PATH_BUF
Arguments: titleId title id for srl file
@ -65,7 +65,7 @@ BOOL FS_ResolveSrl( OSTitleId titleId );
/*---------------------------------------------------------------------------*
Name: FS_ResolveSrlUnsecured
Description: resolve srl filename and store to HW_FIRM_TEMP_SRL_PATH_BUF
Description: resolve srl filename and store to HW_TWL_FS_BOOT_SRL_PATH_BUF
without almost security check
Arguments: titleId title id for srl file

View File

@ -50,7 +50,7 @@ extern "C" {
extern void SDK_MOUNT_INFO_TABLE(void);
#define HW_FIRM_MOUNT_INFO_BUF (u32)SDK_MOUNT_INFO_TABLE
#define HW_FIRM_MOUNT_INFO_BUF_END (HW_FIRM_MOUNT_INFO_BUF + HW_FIRM_MOUNT_INFO_BUF_SIZE)
#define HW_FIRM_MOUNT_INFO_BUF_SIZE (0x400 - OS_MOUNT_PATH_LEN)
#define HW_FIRM_MOUNT_INFO_BUF_SIZE 0x3C0
//------------------------------------- FIRM_BOOT_SRL_PATH_BUF
#define HW_FIRM_BOOT_SRL_PATH_BUF HW_FIRM_MOUNT_INFO_BUF_END

View File

@ -32,16 +32,16 @@ extern "C" {
#define HW_FIRM_LOAD_BUFFER_END (HW_FIRM_LOAD_BUFFER_BASE + HW_FIRM_LOAD_BUFFER_SIZE)
//------------------------------------- FS/FATFS
#define HW_FIRM_TEMP_SRL_PATH_BUF (HW_FIRM_TEMP_SRL_PATH_BUF_END - HW_FIRM_TEMP_SRL_PATH_BUF_SIZE) // 0x2ff76fc
#define HW_FIRM_TEMP_SRL_PATH_BUF_SIZE FS_ENTRY_LONGNAME_MAX
#define HW_FIRM_TEMP_SRL_PATH_BUF_END HW_FIRM_FATFS_COMMAND_BUFFER // 0x02ff7800
#define HW_FIRM_FATFS_ARCHNAME_LIST (HW_FIRM_FATFS_ARCHNAME_LIST_END - HW_FIRM_FATFS_ARCHNAME_LIST_SIZE)
#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 // 0x02ff6000
#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 // 0x800
#define HW_FIRM_FATFS_COMMAND_BUFFER_END HW_FIRM_FS_TEMP_BUFFER // 0x02ff8000
#define HW_FIRM_FATFS_COMMAND_BUFFER_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_SIZE FS_TEMPORARY_BUFFER_MAX // 0x4000
#define HW_FIRM_FS_TEMP_BUFFER_SIZE FS_TEMPORARY_BUFFER_MAX // 0x5800
#define HW_FIRM_FS_TEMP_BUFFER_END HW_TWL_MAIN_MEM_SHARED // 0x02ffc000
#ifdef __cplusplus