diff options
author | Alexis PUSKARCZYK | 2016-12-19 10:18:15 +0100 |
---|---|---|
committer | Alexis PUSKARCZYK | 2016-12-19 10:18:15 +0100 |
commit | ea4db4b5e14d27f9820cc72ecc7b244c1c2b9cb9 (patch) | |
tree | 1c711b85837e96914b692778376f7cf2dc51927f /frontend/vita/sys | |
parent | 127622a0091a7a54c8c32069bdd262ad6d402b16 (diff) | |
parent | 30373a821c80e223d5c592ccce95377ff57b4998 (diff) | |
download | pcsx_rearmed-ea4db4b5e14d27f9820cc72ecc7b244c1c2b9cb9.tar.gz pcsx_rearmed-ea4db4b5e14d27f9820cc72ecc7b244c1c2b9cb9.tar.bz2 pcsx_rearmed-ea4db4b5e14d27f9820cc72ecc7b244c1c2b9cb9.zip |
Merge branch 'master' of https://github.com/libretro/pcsx_rearmed into master_merged
Diffstat (limited to 'frontend/vita/sys')
-rw-r--r-- | frontend/vita/sys/mman.h | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/frontend/vita/sys/mman.h b/frontend/vita/sys/mman.h index 66467f4..89da513 100644 --- a/frontend/vita/sys/mman.h +++ b/frontend/vita/sys/mman.h @@ -18,19 +18,32 @@ extern "C" { static inline void* mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset) { - (void)addr; (void)prot; (void)flags; (void)fd; (void)offset; - void* addr_out; + int block, ret; + + block = sceKernelAllocMemBlockForVM("code", len); + if(block<=0){ + sceClibPrintf("could not alloc mem block @0x%08X 0x%08X \n", block, len); + exit(1); + } + + // get base address + ret = sceKernelGetMemBlockBase(block, &addr); + if (ret < 0) + { + sceClibPrintf("could get address @0x%08X 0x%08X \n", block, addr); + exit(1); + } + - addr_out = malloc(len); - if(!addr_out) + if(!addr) return MAP_FAILED; - return addr_out; + return addr; } static inline int mprotect(void *addr, size_t len, int prot) @@ -43,8 +56,9 @@ static inline int mprotect(void *addr, size_t len, int prot) static inline int munmap(void *addr, size_t len) { - free(addr); - return 0; + int uid = sceKernelFindMemBlockByAddr(addr, len); + + return sceKernelFreeMemBlock(uid); } @@ -53,4 +67,3 @@ static inline int munmap(void *addr, size_t len) #endif #endif // MMAN_H - |