aboutsummaryrefslogtreecommitdiff
path: root/frontend/vita/sys/mman.h
diff options
context:
space:
mode:
authorTwinaphex2016-09-07 09:09:22 +0200
committerGitHub2016-09-07 09:09:22 +0200
commit5dd01cbd4e93fdcaf8daeef76e79bfeab0b5b678 (patch)
tree7763f8e5a27b12440e2f5cb49607dca7fe9cff7f /frontend/vita/sys/mman.h
parent201e4c416a48f547fbfd2f0c3e5ad5cbbc4cc10d (diff)
parent9facb65b76d846175f3ef9fbeafd1c590a0e0630 (diff)
downloadpcsx_rearmed-5dd01cbd4e93fdcaf8daeef76e79bfeab0b5b678.tar.gz
pcsx_rearmed-5dd01cbd4e93fdcaf8daeef76e79bfeab0b5b678.tar.bz2
pcsx_rearmed-5dd01cbd4e93fdcaf8daeef76e79bfeab0b5b678.zip
Merge pull request #61 from frangarcj/master
(VITA) I think this is not going to work but if someone can test it
Diffstat (limited to 'frontend/vita/sys/mman.h')
-rw-r--r--frontend/vita/sys/mman.h29
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
-