From d5d2c6b4dec19d2f56df633518f677ff2045c32c Mon Sep 17 00:00:00 2001 From: "fix94.1" Date: Sat, 19 Jan 2013 16:09:56 +0000 Subject: [PATCH] -reserved 6mb exclusively for the sd and usb device and partition handling, now we have 44mb for everything else left (we had 47mb before) --- portlibs/lib/libcustomext2fs.a | Bin 447934 -> 448474 bytes portlibs/lib/libcustomfat.a | Bin 350026 -> 350074 bytes portlibs/lib/libcustomntfs.a | Bin 534806 -> 534854 bytes source/devicemounter/sdhc.c | 6 ++-- source/devicemounter/usbstorage.c | 6 ++-- source/devicemounter/usbstorage_libogc.c | 9 ++---- source/memory/mem2.cpp | 37 ++++++++++++++++++----- source/memory/mem2.hpp | 6 ++-- source/memory/mem2alloc.cpp | 17 ++--------- source/menu/menu_game.cpp | 2 +- 10 files changed, 42 insertions(+), 41 deletions(-) diff --git a/portlibs/lib/libcustomext2fs.a b/portlibs/lib/libcustomext2fs.a index 55b708398d0dd58ab33ca78ec0c2a71e3de36321..2adf2cca59b652cb77bf03d58f144bfca4dbae4f 100644 GIT binary patch delta 18699 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 OTeLn#>LI_!)c*#bzDG3x delta 18424 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 delta 2516 zcma)-e^69a6vy9r@9x5&<|fNB2qA(v#vrb+AQUoaxPT(tG-(b~DH1Cx3KD_wW7ovr zp@TlF{IyQRnVHsJ+t<-|W5L`#I;{ zyKm09=Us0{*x8P-ma)OMsTnD0Q*GAmvGd$%lJuAjcI=Vh(Co)24vN(p1JkzJ$26F+8C7H>JEr~n@ zndHgvWM$NjfE@K`jsu!i<17bssq?A7pdO(9mfAO~P|h7t?RE#4)K==F)Em@it7*Bl zut4p|b-*U|5si1MHF>pAsrKd-%Bu#{tb7NVw)y&={5F`Nx@OlyIrb*A*F7udv;bag z2NQ06qy)R~jFF^ZNs`K_`5u#BDs=pk{2?@M*7*VPNE&~l^A+MJX#ADVEyR3_+kS?T z#PkDwTfdVy-0x2S6M4;Kn4)jMU&un7t@Ao!nhf*RV{>0H7MGV-lt`ZOg>m4S<=7NK zK|fcv!7`MUG|GylsmiTYxxpSfWSypcz5_l8{|hS*L1Nbsrt>u$JDsxD=~V1-0cI_F zi(;G}U}DKBwp2XkloPbd(@H~p&~_J3=74thmLgL&v9DioKs(w8NG@P27Zcv#vH;Tt zNh)yzmyhuhmu{TsCAoq%UZqCPd4RnfyD;lM$t2vyWexV+SK8nzx*jO?VD}|bTk%k- zgyOIDF!_Q`uvuv5+;5wreKzTFkd;&)}UMMw6r z<*`HI$l!s~65?3VaQuBHLvp&+mhLMItviD~l>{@fcL}q>evB()mqX9E7Er*>LK0QO zQP)};AJ;}LWz8mNz&&p=2TZ`5T&(y^9m#6k!sU7Vp3BRaP*1|JuAbG%h4=9HdR9ws zxvYV#iP*_y4Tdz5e1=7htPLdeHnMtH%%gT(Ju}CAFyGB!#!MkFuL%5_z{>@GLyevr zp3hIOkvyAq?`mRRPCJF!`vpEMa2NJGQY>z{i`MgU>k<5S0~tWzAc02<9H}!eN1pZs zKSMJyPkW}1-PHRF6^ir)L%dkvWdhdFy8d=rac&Z^QZMv6z7Y4y-F&P|CjZQAR@hF#eG(Jhfa6Xp?JisLn`?!>&eGJKu*gD2= z8q)FAP(v-4@lq%mFW^KoNdeZF4TbW7dw9xhXoE%Q3^UZpKp#MVo#trQEe0#N8v;`! zy`{5NFSYjt|EGS2D7}=r1^;D%f79n@>!mTm&uo&vG-8KpW%%T!2W|k_xH1aD-MeW% z9WtoW_v7p72V3>&YY6y7cTiX^9`uuf{|A8szvz|4Rn<$YmsYIAf(S#oem`nwA`DHS K&5bln&ioUEb?zbn diff --git a/portlibs/lib/libcustomntfs.a b/portlibs/lib/libcustomntfs.a index 4b418887da1e3967a8f376b649093ed6a57b902d..93046cea28be450842476d6d0a8b32152cfe5fdb 100644 GIT binary patch delta 57127 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%0DPLl5IX0anNpN{+BqmG?fD#3SMA`O<&qXM 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 Ld;UmGI5+q|aQW;I delta 57559 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 Um&Y68DmSe{z40u%CmtXDKRR{}pa1{> diff --git a/source/devicemounter/sdhc.c b/source/devicemounter/sdhc.c index a8d7468a..adbc5da9 100644 --- a/source/devicemounter/sdhc.c +++ b/source/devicemounter/sdhc.c @@ -3,7 +3,7 @@ #include #include #include - +#include "memory/mem2.hpp" #include "sdhc.h" /* IOCTL comamnds */ @@ -25,8 +25,6 @@ static s32 hid = -1, fd = -1; static u32 sector_size = SDHC_SECTOR_SIZE; static void *sdhc_buf2; -extern void* SYS_AllocArena2MemLo(u32 size,u32 align); - bool SDHC_Init(void) { s32 ret; @@ -49,7 +47,7 @@ bool SDHC_Init(void) // allocate buf2 if (sdhc_buf2 == NULL) { - sdhc_buf2 = SYS_AllocArena2MemLo(SDHC_MEM2_SIZE, 32); + sdhc_buf2 = MEM2_lo_alloc(SDHC_MEM2_SIZE); if (sdhc_buf2 == NULL) goto err; } diff --git a/source/devicemounter/usbstorage.c b/source/devicemounter/usbstorage.c index f96fd77c..299147a9 100644 --- a/source/devicemounter/usbstorage.c +++ b/source/devicemounter/usbstorage.c @@ -31,7 +31,7 @@ #include #include #include - +#include "memory/mem2.hpp" #include "usbstorage.h" #include "usbstorage_libogc.h" #include "usbthread.h" @@ -69,8 +69,6 @@ u32 hdd_sector_size[2] = { 512, 512 }; bool first = false; int usb_libogc_mode = 0; -extern void* SYS_AllocArena2MemLo(u32 size,u32 align); - inline s32 __USBStorage_isMEM2Buffer(const void *buffer) { u32 high_addr = ((u32)buffer) >> 24; @@ -81,7 +79,7 @@ s32 USBStorage2_Init(u32 port) { /* allocate buf2 */ if(mem2_ptr == NULL) - mem2_ptr = SYS_AllocArena2MemLo(USB_MEM2_SIZE, 32); + mem2_ptr = MEM2_lo_alloc(USB_MEM2_SIZE); if(usb_libogc_mode) { diff --git a/source/devicemounter/usbstorage_libogc.c b/source/devicemounter/usbstorage_libogc.c index fa53c2de..023cc3b8 100644 --- a/source/devicemounter/usbstorage_libogc.c +++ b/source/devicemounter/usbstorage_libogc.c @@ -38,7 +38,7 @@ distribution. #include #include #include - +#include "memory/mem2.hpp" #include #include #include @@ -208,12 +208,7 @@ s32 USBStorage_OGC_Initialize() _CPU_ISR_Disable(level); LWP_InitQueue(&__usbstorage_ogc_waitq); if(!arena_ptr) { - arena_ptr = (u8*)ROUNDDOWN32(((u32)SYS_GetArena2Hi() - HEAP_SIZE)); - if((u32)arena_ptr < (u32)SYS_GetArena2Lo()) { - _CPU_ISR_Restore(level); - return IPC_ENOMEM; - } - SYS_SetArena2Hi(arena_ptr); + arena_ptr = (u8*)MEM2_lo_alloc(HEAP_SIZE); } __lwp_heap_init(&__heap, arena_ptr, HEAP_SIZE, 32); cbw_buffer=(u8*)__lwp_heap_allocate(&__heap, 32); diff --git a/source/memory/mem2.cpp b/source/memory/mem2.cpp index a76fb0fe..f9485d87 100644 --- a/source/memory/mem2.cpp +++ b/source/memory/mem2.cpp @@ -16,10 +16,14 @@ u32 MALLOC_MEM2 = 0; void *MEM1_lo_start = (void*)0x80004000; void *MEM1_lo_end = (void*)0x80620000; -void *MEM2_start = (void*)0x90200000; -void *MEM2_end = (void*)0x93100000; +void *MEM2_lo_start = (void*)0x90000000; +void *MEM2_lo_end = (void*)0x90600000; + +void *MEM2_start = (void*)0x90600000; +void *MEM2_end = (void*)0x93200000; static CMEM2Alloc g_mem1lo; +static CMEM2Alloc g_mem2lo_gp; static CMEM2Alloc g_mem2gp; extern "C" @@ -37,7 +41,10 @@ void MEM_init() g_mem1lo.init(MEM1_lo_start, MEM1_lo_end); //about 6mb g_mem1lo.clear(); - g_mem2gp.init(MEM2_start, MEM2_end); //about 47mb + g_mem2lo_gp.init(MEM2_lo_start, MEM2_lo_end); //about 6mb + g_mem2lo_gp.clear(); + + g_mem2gp.init(MEM2_start, MEM2_end); //about 44mb g_mem2gp.clear(); } @@ -80,16 +87,25 @@ unsigned int MEM1_freesize() return (g_mem1lo.FreeSize() + SYS_GetArena1Size()); } -void MEM2_cleanup(void) + +void *MEM2_lo_alloc(unsigned int s) { - g_mem2gp.cleanup(); + return g_mem2lo_gp.allocate(s); } -void MEM2_clear(void) +void *MEM2_lo_realloc(void *p, unsigned int s) { - g_mem2gp.clear(); + return g_mem2lo_gp.reallocate(p, s); } +void MEM2_lo_free(void *p) +{ + if(!p) + return; + g_mem2lo_gp.release(p); +} + + void MEM2_free(void *p) { if(!p) @@ -188,7 +204,12 @@ void __wrap_free(void *p) return; if(((u32)p & 0x10000000) != 0) - g_mem2gp.release(p); + { + if(p > MEM2_start) + g_mem2gp.release(p); + else + g_mem2lo_gp.release(p); + } else MEM1_free(p); } diff --git a/source/memory/mem2.hpp b/source/memory/mem2.hpp index 6713112a..acb655bd 100644 --- a/source/memory/mem2.hpp +++ b/source/memory/mem2.hpp @@ -20,8 +20,10 @@ void *MEM1_realloc(void *p, unsigned int s); void MEM1_free(void *p); unsigned int MEM1_freesize(); -void MEM2_cleanup(void); -void MEM2_clear(void); +void *MEM2_lo_alloc(unsigned int s); +void *MEM2_lo_realloc(void *p, unsigned int s); +void MEM2_lo_free(void *p); + void MEM2_free(void *p); void *MEM2_alloc(unsigned int s); void *MEM2_memalign(unsigned int /* alignment */, unsigned int s); diff --git a/source/memory/mem2alloc.cpp b/source/memory/mem2alloc.cpp index 8c64886a..6327ea77 100644 --- a/source/memory/mem2alloc.cpp +++ b/source/memory/mem2alloc.cpp @@ -4,21 +4,8 @@ #include #include #include - -#define IOS_RELOAD_AREA 0x90200000 - #include "lockMutex.hpp" -void CMEM2Alloc::init(unsigned int size) -{ - m_baseAddress = (SBlock *)std::max(((u32)SYS_GetArena2Lo() + 31) & ~31, IOS_RELOAD_AREA); - m_endAddress = (SBlock *)((u8*)m_baseAddress + std::min(size * 0x100000, SYS_GetArena2Size() & ~31)); - if (m_endAddress > (SBlock *)0x93100000) //rest is reserved for usb/usb2/network and other stuff... (0xE0000 bytes) - m_endAddress = (SBlock *)0x93100000; - SYS_SetArena2Lo(m_endAddress); - LWP_MutexInit(&m_mutex, 0); -} - void CMEM2Alloc::init(void *addr, void *end) { m_baseAddress = (SBlock *)(((u32)addr + 31) & ~31); @@ -32,8 +19,8 @@ void CMEM2Alloc::cleanup(void) m_mutex = 0; m_first = 0; // Try to release the range we took through SYS functions - if (SYS_GetArena2Lo() == m_endAddress) - SYS_SetArena2Lo(m_baseAddress); + /*if (SYS_GetArena2Lo() == m_endAddress) + SYS_SetArena2Lo(m_baseAddress);*/ m_baseAddress = 0; m_endAddress = 0; } diff --git a/source/menu/menu_game.cpp b/source/menu/menu_game.cpp index 543c294b..e6004bad 100644 --- a/source/menu/menu_game.cpp +++ b/source/menu/menu_game.cpp @@ -961,7 +961,6 @@ void CMenu::_launchHomebrew(const char *filepath, vector arguments) Playlog_Delete(); cleanup(); // wifi and sd gecko doesnt work anymore after cleanup - loadIOS(58, true); LoadHomebrew(filepath); AddBootArgument(filepath); @@ -970,6 +969,7 @@ void CMenu::_launchHomebrew(const char *filepath, vector arguments) gprintf("Argument: %s\n", arguments[i].c_str()); AddBootArgument(arguments[i].c_str()); } + loadIOS(58, false); ShutdownBeforeExit(); BootHomebrew(); }