X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=platform%2Flibretro.c;h=ebf6e65efd38128aeed1a9b6cb42ba627945b2b7;hb=c25d78eec11d2a22adbd0bc7d42a24e2d79e40e7;hp=40dc394e96b42e7adca43b1bcda9b253b09ccf28;hpb=2446536be520914616403876d7e49621ac6f4b95;p=picodrive.git diff --git a/platform/libretro.c b/platform/libretro.c index 40dc394..ebf6e65 100644 --- a/platform/libretro.c +++ b/platform/libretro.c @@ -11,6 +11,7 @@ #include #include #include +#include #ifdef __MACH__ #include #endif @@ -71,8 +72,10 @@ void *plat_mmap(unsigned long addr, size_t size, int need_exec, int is_fixed) req = (void *)addr; ret = mmap(req, size, PROT_READ | PROT_WRITE, flags, -1, 0); - if (ret == MAP_FAILED) + if (ret == MAP_FAILED) { + lprintf("mmap(%08lx, %zd) failed: %d\n", addr, size, errno); return NULL; + } if (addr != 0 && ret != (void *)addr) { lprintf("warning: wanted to map @%08lx, got %p\n", @@ -102,6 +105,15 @@ void plat_munmap(void *ptr, size_t size) munmap(ptr, size); } +int plat_mem_set_exec(void *ptr, size_t size) +{ + int ret = mprotect(ptr, size, PROT_READ | PROT_WRITE | PROT_EXEC); + if (ret != 0) + lprintf("mprotect(%p, %zd) failed: %d\n", ptr, size, errno); + + return ret; +} + void emu_video_mode_change(int start_line, int line_count, int is_32cols) { memset(vout_buf, 0, 320 * 240 * 2);