From 5f9ff91070c4c22faa9f0848b5354dfe70694fa9 Mon Sep 17 00:00:00 2001 From: yutaka Date: Wed, 23 Apr 2008 05:03:32 +0000 Subject: [PATCH] =?UTF-8?q?HOTSW=E3=82=B5=E3=83=B3=E3=83=97=E3=83=AB?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=81=AE=E5=A4=89=E6=9B=B4?= 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@1237 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/tests/CheckDSHashTable/src/main.c | 29 +++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/build/tests/CheckDSHashTable/src/main.c b/build/tests/CheckDSHashTable/src/main.c index 1bb58226..d005db49 100644 --- a/build/tests/CheckDSHashTable/src/main.c +++ b/build/tests/CheckDSHashTable/src/main.c @@ -53,7 +53,7 @@ static u8 rom_arm7[1024*1024] ATTRIBUTE_ALIGN(32); デバイスアクセスAPI */ #if 1 -// FS版 (fctx == FSFile*) +// FS版 (arg == FSFile*) static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) { FSFile* fp = arg; @@ -74,7 +74,7 @@ static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) #else #ifdef SDK_ARM9 #define PAGE_SIZE 512 -// CARD版 (fctx == dma no) +// CARD版 (arg == dma no) static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) { u32 dma = (u32)arg; @@ -82,12 +82,33 @@ static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) return TRUE; } #else -// HOTSW版 (fctx == CardBootData* cdb) +// HOTSW版 (arg == CardBootData* cdb) #include #include static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) { - HotSwState retval = ReadPageGame((CardBootData*)arg, (u32)offset, dest, (u32)length); + HotSwState retval; + if ( offset % 512 ) + { + static u8 page_buffer[512]; + u32 page_offset = (u32)(offset & -512); + u32 buffer_offset = (u32)(offset % 512); + u32 valid_length = 512 - buffer_offset; + retval = ReadPageGame((CardBootData*)arg, page_offset, page_buffer, 512); + if (retval != HOTSW_SUCCESS) + { + return FALSE; + } + MI_CpuCopy8(page_buffer + buffer_offset, dest, (length < valid_length ? length : valid_length)); + dest = (u8*)dest + valid_length; + offset += valid_length; + length -= valid_length; + if ( length < 0) + { + return TRUE; + } + } + retval = ReadPageGame((CardBootData*)arg, (u32)offset, dest, (u32)length); return (retval == HOTSW_SUCCESS); } #endif