diff options
-rw-r--r-- | Makefile.libretro | 18 | ||||
-rw-r--r-- | frontend/libretro.c | 12 | ||||
-rw-r--r-- | frontend/main.c | 10 | ||||
-rw-r--r-- | libpcsxcore/new_dynarec/assem_arm.c | 4 | ||||
-rw-r--r-- | libpcsxcore/new_dynarec/assem_arm.h | 4 | ||||
-rw-r--r-- | libpcsxcore/new_dynarec/emu_if.c | 2 | ||||
-rw-r--r-- | libpcsxcore/socket.c | 17 | ||||
-rw-r--r-- | plugins/cdrcimg/cdrcimg.c | 4 |
8 files changed, 57 insertions, 14 deletions
diff --git a/Makefile.libretro b/Makefile.libretro index de2bceb..7122306 100644 --- a/Makefile.libretro +++ b/Makefile.libretro @@ -119,17 +119,27 @@ else ifeq ($(platform), vita) AR = arm-vita-eabi-ar$(EXE_EXT) CFLAGS += -DVITA CFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -marm + CFLAGS += -I$(VITASDK)/include -Ifrontend/vita + CFLAGS += -DNO_SOCKET -DNO_OS -DNO_DYLIB ASFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon + +# CFLAGS += -U__ARM_NEON__ HAVE_NEON = 1 BUILTIN_GPU = neon +# USE_DYNAREC = 1 +# DRC_CACHE_BASE = 0 + + ARCH = arm + STATIC_LINKING = 1 + # CTR(3DS) else ifeq ($(platform), ctr) TARGET := $(TARGET_NAME)_libretro_ctr.a CC = $(DEVKITARM)/bin/arm-none-eabi-gcc$(EXE_EXT) CXX = $(DEVKITARM)/bin/arm-none-eabi-g++$(EXE_EXT) AR = $(DEVKITARM)/bin/arm-none-eabi-ar$(EXE_EXT) - CFLAGS += -DARM11 -D_3DS -DNO_OS + CFLAGS += -DARM11 -D_3DS -DNO_OS -DNO_DYLIB CFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp CFLAGS += -Wall -mword-relocations CFLAGS += -fomit-frame-pointer -ffast-math @@ -172,6 +182,7 @@ else ifeq ($(platform), wii) # QNX else ifeq ($(platform), qnx) TARGET := $(TARGET_NAME)_libretro_qnx.so + fpic := -fPIC CC = qcc -Vgcc_ntoarmv7le CC_AS = $(CC) HAVE_NEON = 1 @@ -186,6 +197,7 @@ else ifeq ($(platform), qnx) else ifneq (,$(findstring armv,$(platform))) TARGET := $(TARGET_NAME)_libretro.so SHARED := -shared -Wl,--no-undefined + fpic := -fPIC DRC_CACHE_BASE = 0 ifneq (,$(findstring cortexa8,$(platform))) CFLAGS += -marm -mcpu=cortex-a8 @@ -209,7 +221,7 @@ else ifneq (,$(findstring armv,$(platform))) ASFLAGS += -mfloat-abi=hard endif ARCH = arm - USE_DYNAREC = 1 + USE_DYNAREC = 1 # Windows else @@ -222,7 +234,7 @@ else MMAP_WIN32=1 endif -CFLAGS += -fPIC +CFLAGS += $(fpic) ifeq ($(platform),win) MAIN_LDLIBS += -lws2_32 else ifneq ($(platform),qnx) diff --git a/frontend/libretro.c b/frontend/libretro.c index 69fad2a..7243db1 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -1280,7 +1280,7 @@ static bool try_use_bios(const char *path) return true; } -#if 1 +#ifndef VITA #include <sys/types.h> #include <dirent.h> @@ -1336,7 +1336,7 @@ void retro_init(void) exit(1); } -#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L) +#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L) && !defined(VITA) posix_memalign(&vout_buf, 16, VOUT_MAX_WIDTH * VOUT_MAX_HEIGHT * 2); #else vout_buf = malloc(VOUT_MAX_WIDTH * VOUT_MAX_HEIGHT * 2); @@ -1405,3 +1405,11 @@ void retro_deinit(void) free(vout_buf); vout_buf = NULL; } + +#ifdef VITA +#include <psp2/kernel/threadmgr.h> +int usleep (unsigned long us) +{ + sceKernelDelayThread(us); +} +#endif diff --git a/frontend/main.c b/frontend/main.c index c816ba1..2deff70 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -11,7 +11,7 @@ #include <unistd.h> #include <signal.h> #include <time.h> -#if !defined(_WIN32) && !defined(_3DS) +#if !defined(_WIN32) && !defined(NO_DYLIB) #include <dlfcn.h> #endif @@ -985,7 +985,7 @@ void *SysLoadLibrary(const char *lib) { return (void *)(long)(PLUGIN_DL_BASE + builtin_plugin_ids[i]); } -#if !defined(_WIN32) && !defined(_3DS) +#if !defined(_WIN32) && !defined(NO_DYLIB) ret = dlopen(lib, RTLD_NOW); if (ret == NULL) SysMessage("dlopen: %s", dlerror()); @@ -1002,7 +1002,7 @@ void *SysLoadSym(void *lib, const char *sym) { if (PLUGIN_DL_BASE <= plugid && plugid < PLUGIN_DL_BASE + ARRAY_SIZE(builtin_plugins)) return plugin_link(plugid - PLUGIN_DL_BASE, sym); -#if !defined(_WIN32) && !defined(_3DS) +#if !defined(_WIN32) && !defined(NO_DYLIB) return dlsym(lib, sym); #else return NULL; @@ -1010,7 +1010,7 @@ void *SysLoadSym(void *lib, const char *sym) { } const char *SysLibError() { -#if defined(_3DS) +#if defined(NO_DYLIB) return NULL; #elif !defined(_WIN32) return dlerror(); @@ -1025,7 +1025,7 @@ void SysCloseLibrary(void *lib) { if (PLUGIN_DL_BASE <= plugid && plugid < PLUGIN_DL_BASE + ARRAY_SIZE(builtin_plugins)) return; -#if !defined(_WIN32) && !defined(_3DS) +#if !defined(_WIN32) && !defined(NO_DYLIB) dlclose(lib); #endif } diff --git a/libpcsxcore/new_dynarec/assem_arm.c b/libpcsxcore/new_dynarec/assem_arm.c index 6853e9e..8e0c634 100644 --- a/libpcsxcore/new_dynarec/assem_arm.c +++ b/libpcsxcore/new_dynarec/assem_arm.c @@ -30,7 +30,9 @@ #endif #include "arm_features.h" -#if !BASE_ADDR_FIXED +#ifdef VITA +char* translation_cache = 0; +#elif !BASE_ADDR_FIXED char translation_cache[1 << TARGET_SIZE_2] __attribute__((aligned(4096))); #endif diff --git a/libpcsxcore/new_dynarec/assem_arm.h b/libpcsxcore/new_dynarec/assem_arm.h index 2254638..da4144d 100644 --- a/libpcsxcore/new_dynarec/assem_arm.h +++ b/libpcsxcore/new_dynarec/assem_arm.h @@ -64,6 +64,10 @@ extern char *invc_ptr; // "round" address helpful for debug #define BASE_ADDR 0x1000000 #else +#if defined(VITA) +extern char* translation_cache; +#else extern char translation_cache[1 << TARGET_SIZE_2]; +#endif #define BASE_ADDR (u_int)translation_cache #endif diff --git a/libpcsxcore/new_dynarec/emu_if.c b/libpcsxcore/new_dynarec/emu_if.c index 22db5d1..8aebd64 100644 --- a/libpcsxcore/new_dynarec/emu_if.c +++ b/libpcsxcore/new_dynarec/emu_if.c @@ -431,7 +431,7 @@ void do_insn_cmp() {} #ifdef DRC_DISABLE unsigned int address; int pending_exception, stop; -unsigned int next_interupt; +u32 next_interupt; int new_dynarec_did_compile; int cycle_multiplier; int new_dynarec_hacks; diff --git a/libpcsxcore/socket.c b/libpcsxcore/socket.c index 31f82e2..c408bc3 100644 --- a/libpcsxcore/socket.c +++ b/libpcsxcore/socket.c @@ -15,6 +15,22 @@ * along with this program; if not, see <http://www.gnu.org/licenses>. */ +#ifdef NO_SOCKET + +int StartServer() { return 0;} +void StopServer() {} +void GetClient() {} +void CloseClient() {} +int HasClient() { return 0;} +int ReadSocket(char * buffer, int len) { return 0;} +int RawReadSocket(char * buffer, int len) { return 0;} +void WriteSocket(char * buffer, int len) {} + +void SetsBlock() {} +void SetsNonblock() {} + +#else // NO_SOCKET + #ifdef _WIN32 #include <winsock2.h> #endif @@ -252,3 +268,4 @@ void SetsNonblock() { fcntl(server_socket, F_SETFL, flags | O_NONBLOCK); #endif } +#endif // NO_SOCKET diff --git a/plugins/cdrcimg/cdrcimg.c b/plugins/cdrcimg/cdrcimg.c index 036c68d..47371aa 100644 --- a/plugins/cdrcimg/cdrcimg.c +++ b/plugins/cdrcimg/cdrcimg.c @@ -14,7 +14,7 @@ #include <zlib.h> #ifndef _WIN32 #define CALLBACK -#ifndef _3DS +#ifndef NO_DYLIB #include <dlfcn.h> #endif #else @@ -287,7 +287,7 @@ static long CDRinit(void) return -1; } } -#if !defined(_WIN32) && !defined(_3DS) +#if !defined(_WIN32) && !defined(NO_DYLIB) if (pBZ2_bzBuffToBuffDecompress == NULL) { void *h = dlopen("/usr/lib/libbz2.so.1", RTLD_LAZY); if (h == NULL) |