diff options
author | aliaspider | 2015-09-23 16:12:24 +0100 |
---|---|---|
committer | aliaspider | 2015-09-23 16:12:24 +0100 |
commit | fc99395c2d7efbbaa0663feed47dc89a54e49506 (patch) | |
tree | 02114dc1d8f34d10b5eb46cb508d9d53a49cdc9f /frontend/3ds/sys | |
parent | c90258c8ca8d207f24c3de741572c0ef2d1e9cb8 (diff) | |
download | pcsx_rearmed-fc99395c2d7efbbaa0663feed47dc89a54e49506.tar.gz pcsx_rearmed-fc99395c2d7efbbaa0663feed47dc89a54e49506.tar.bz2 pcsx_rearmed-fc99395c2d7efbbaa0663feed47dc89a54e49506.zip |
(ctr/3ds) add target.
Diffstat (limited to 'frontend/3ds/sys')
-rw-r--r-- | frontend/3ds/sys/mman.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/frontend/3ds/sys/mman.h b/frontend/3ds/sys/mman.h new file mode 100644 index 0000000..c93b13b --- /dev/null +++ b/frontend/3ds/sys/mman.h @@ -0,0 +1,66 @@ +#ifndef MMAN_H +#define MMAN_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "3ds.h" +#include "stdlib.h" +#include "stdio.h" + +#define PROT_READ MEMPERM_READ +#define PROT_WRITE MEMPERM_WRITE +#define PROT_EXEC MEMPERM_EXECUTE +#define MAP_PRIVATE 2 +#define MAP_ANONYMOUS 0x20 + +#define MAP_FAILED ((void *)-1) + +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; + + addr_out = malloc(len); + if(!addr_out) + return MAP_FAILED; + + return addr_out; +} + +static inline int mprotect(void *addr, size_t len, int prot) +{ + extern int ctr_svchack_init_success; + + if(ctr_svchack_init_success) + { + uint32_t currentHandle; + svcDuplicateHandle(¤tHandle, 0xFFFF8001); + svcControlProcessMemory(currentHandle, (u32)addr, 0x0, + len, MEMOP_PROT, prot); + svcCloseHandle(currentHandle); + return 0; + } + + return -1; +} + +static inline int munmap(void *addr, size_t len) +{ + free(addr); + return 0; + +} + +#ifdef __cplusplus +}; +#endif + +#endif // MMAN_H + |