X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=platform%2Flibretro.c;h=72b7a1be126a84fedc4c10916dffcaff7d68681a;hb=f18d0e083ce89df07ef7a0c0cf5dc200638ad5d2;hp=67b4369cb95fa71fdd449152a46fea34711e5f65;hpb=f5d4045b92e929e8d31ffa4fe426cbf6bf31624c;p=picodrive.git diff --git a/platform/libretro.c b/platform/libretro.c index 67b4369..72b7a1b 100644 --- a/platform/libretro.c +++ b/platform/libretro.c @@ -6,12 +6,18 @@ * See COPYING file in the top-level directory. */ +#ifdef PSP +#define NO_MMAP +#endif + #define _GNU_SOURCE 1 // mremap #include #include #include #ifndef _WIN32 +#ifndef NO_MMAP #include +#endif #else #include #include @@ -161,6 +167,30 @@ static void munmap(void *addr, size_t length) UnmapViewOfFile(addr); /* ruh-ro, we leaked handle from CreateFileMapping() ... */ } +#elif defined(NO_MMAP) +#define PROT_EXEC 0x04 +#define MAP_FAILED 0 +#define PROT_READ 0 +#define PROT_WRITE 0 +#define MAP_PRIVATE 0 +#define MAP_ANONYMOUS 0 + +void* mmap(void *desired_addr, size_t len, int mmap_prot, int mmap_flags, int fildes, size_t off) +{ + return malloc(len); +} + +void munmap(void *base_addr, size_t len) +{ + free(base_addr); +} + +int mprotect(void *addr, size_t len, int prot) +{ + /* stub - not really needed at this point since this codepath has no dynarecs */ + return 0; +} + #endif #ifndef MAP_ANONYMOUS @@ -263,9 +293,13 @@ void emu_32x_startup(void) void lprintf(const char *fmt, ...) { + char buffer[256]; + va_list ap; + va_start(ap, fmt); + vsprintf(buffer, fmt, ap); /* TODO - add 'level' param for warning/error messages? */ if (log_cb) - log_cb(RETRO_LOG_INFO, fmt); + log_cb(RETRO_LOG_INFO, "%s\n", fmt); } /* libretro */ @@ -870,9 +904,10 @@ void retro_init(void) level = 0; environ_cb(RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL, &level); - environ_cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &log); - if (log.log) + if (environ_cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &log)) log_cb = log.log; + else + log_cb = NULL; environ_cb(RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE, &disk_control);