X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2F3ds%2Fsys%2Fmman.h;h=fdf5ac6a91dc908a2fdd79534d6534299356eaff;hb=9a864a8f77d7de8e787eb8a1d594d89daa7daca1;hp=e295b8937394b36377ab20382ca9d6cb593cdc26;hpb=9766e77ddec3157cbf8b7da407b99f47467a8f72;p=pcsx_rearmed.git diff --git a/frontend/3ds/sys/mman.h b/frontend/3ds/sys/mman.h index e295b893..fdf5ac6a 100644 --- a/frontend/3ds/sys/mman.h +++ b/frontend/3ds/sys/mman.h @@ -7,6 +7,7 @@ extern "C" { #include #include +#include #include #include @@ -32,21 +33,25 @@ static inline void* mmap(void *addr, size_t len, int prot, int flags, int fd, of void* addr_out; if((prot == (PROT_READ | PROT_WRITE | PROT_EXEC)) && - (flags == (MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS))) + (flags == (MAP_PRIVATE | MAP_ANONYMOUS))) { if(__ctr_svchax) { /* this hack works only for pcsx_rearmed */ uint32_t currentHandle; - if(!dynarec_cache) + if (!dynarec_cache) { dynarec_cache = memalign(0x1000, len); + if (!dynarec_cache) + return MAP_FAILED; + } svcDuplicateHandle(¤tHandle, 0xFFFF8001); svcControlProcessMemory(currentHandle, addr, dynarec_cache, len, MEMOP_MAP, prot); svcCloseHandle(currentHandle); dynarec_cache_mapping = addr; + memset(addr, 0, len); return addr; } else @@ -57,10 +62,11 @@ static inline void* mmap(void *addr, size_t len, int prot, int flags, int fd, of } - addr_out = malloc(len); - if(!addr_out) + addr_out = memalign(0x1000, len); + if (!addr_out) return MAP_FAILED; + memset(addr_out, 0, len); return addr_out; }