diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64syscall.c | 23 | ||||
| -rw-r--r-- | src/emu/x86syscall_32.c | 23 | ||||
| -rw-r--r-- | src/include/env.h | 25 |
3 files changed, 22 insertions, 49 deletions
diff --git a/src/emu/x64syscall.c b/src/emu/x64syscall.c index 1660c471..68fb0564 100644 --- a/src/emu/x64syscall.c +++ b/src/emu/x64syscall.c @@ -870,12 +870,11 @@ void EXPORT x64Syscall(x64emu_t *emu) break; #endif case 449: - #ifdef __NR_futex_waitv - if(BOX64ENV(futex_waitv)) - S_RAX = syscall(__NR_futex_waitv, R_RDI, R_RSI, R_RDX, R_R10, R_R8); - else + #if defined(__NR_futex_waitv) && !defined(BAD_SIGNAL) + S_RAX = syscall(__NR_futex_waitv, R_RDI, R_RSI, R_RDX, R_R10, R_R8); + #else + S_RAX = -ENOSYS; #endif - S_RAX = -ENOSYS; break; default: printf_log(LOG_INFO, "Warning: Unsupported Syscall 0x%02Xh (%d)\n", s, s); @@ -1156,16 +1155,12 @@ long EXPORT my_syscall(x64emu_t *emu) return faccessat(S_ESI, (void*)R_RDX, (mode_t)R_RCX, S_R8d); #endif case 449: - #ifdef __NR_futex_waitv - if(BOX64ENV(futex_waitv)) - return syscall(__NR_futex_waitv, R_RSI, R_RDX, R_RCX, R_R8, R_R9); - else + #if defined(__NR_futex_waitv) && !defined(BAD_SIGNAL) + return syscall(__NR_futex_waitv, R_RSI, R_RDX, R_RCX, R_R8, R_R9); + #else + errno = ENOSYS; + return -1; #endif - { - errno = ENOSYS; - return -1; - } - break; default: if(!(warned&(1<<s))) { printf_log(LOG_INFO, "Warning: Unsupported libc Syscall 0x%02X (%d)\n", s, s); diff --git a/src/emu/x86syscall_32.c b/src/emu/x86syscall_32.c index b4ed24d2..6efc27be 100644 --- a/src/emu/x86syscall_32.c +++ b/src/emu/x86syscall_32.c @@ -491,12 +491,11 @@ void EXPORT x86Syscall(x64emu_t *emu) } break; case 449: - #ifdef __NR_futex_waitv - if(BOX64ENV(futex_waitv)) - S_RAX = syscall(__NR_futex_waitv, R_EBX, R_ECX, R_EDX, R_ESI, R_EDI); - else + #if defined(__NR_futex_waitv) && !defined(BAD_SIGNAL) + S_RAX = syscall(__NR_futex_waitv, R_EBX, R_ECX, R_EDX, R_ESI, R_EDI); + #else + S_RAX = -ENOSYS; #endif - S_RAX = -ENOSYS; break; default: printf_log(LOG_INFO, "Warning: Unsupported Syscall 0x%02Xh (%d)\n", s, s); @@ -715,16 +714,12 @@ uint32_t EXPORT my32_syscall(x64emu_t *emu, uint32_t s, ptr_t* b) #endif #endif case 449: - #ifdef __NR_futex_waitv - if(BOX64ENV(futex_waitv)) - return syscall(__NR_futex_waitv, u32(0), u32(4), u32(8), u32(12), u32(16)); - else + #if defined(__NR_futex_waitv) && !defined(BAD_SIGNAL) + return syscall(__NR_futex_waitv, u32(0), u32(4), u32(8), u32(12), u32(16)); + #else + errno = ENOSYS; + return -1; #endif - { - errno = ENOSYS; - return -1; - } - break; default: if((s>>6)<sizeof(warned)/sizeof(warned[0])) { if(!(warned[s>>6]&(1<<(s&0x3f)))) { diff --git a/src/include/env.h b/src/include/env.h index ccee91fa..f3456647 100644 --- a/src/include/env.h +++ b/src/include/env.h @@ -40,7 +40,7 @@ extern char* ftrace_name; INTEGER(BOX64_CPUTYPE, cputype, 0, 0, 1) \ BOOLEAN(BOX64_CRASHHANDLER, dummy_crashhandler, 1) \ BOOLEAN(BOX64_DLSYM_ERROR, dlsym_error, 0) \ - INTEGER(BOX64_DUMP, dump, 0, 0, 2) \ + BOOLEAN(BOX64_DUMP, dump, 0) \ BOOLEAN(BOX64_DYNAREC_ALIGNED_ATOMICS, dynarec_aligned_atomics, 0) \ INTEGER(BOX64_DYNAREC_BIGBLOCK, dynarec_bigblock, 2, 0, 3) \ BOOLEAN(BOX64_DYNAREC_BLEEDING_EDGE, dynarec_bleeding_edge, 1) \ @@ -89,7 +89,8 @@ extern char* ftrace_name; INTEGER(BOX64_LOG, log, DEFAULT_LOG_LEVEL, 0, 3) \ INTEGER(BOX64_MALLOC_HACK, malloc_hack, 0, 0, 2) \ INTEGER(BOX64_MAXCPU, new_maxcpu, 0, 0, 100) \ - BOOLEAN(BOX64_NOBANNER, nobanner, BOX64_NOBANNER_DEFAULT) \ + BOOLEAN(BOX64_MMAP32, mmap32, 1) \ + BOOLEAN(BOX64_NOBANNER, nobanner, BOX64_NOBANNER_DEFAULT) \ STRING(BOX64_NODYNAREC, nodynarec) \ BOOLEAN(BOX64_NOGTK, nogtk, 0) \ BOOLEAN(BOX64_NOPULSE, nopulse, 0) \ @@ -142,28 +143,10 @@ extern char* ftrace_name; BOOLEAN(BOX64_DYNAREC, dynarec, 0) #endif -#ifdef BAD_SIGNAL -#define ENVSUPER4() \ - BOOLEAN(BOX64_FUTEX_WAITV, futex_waitv, 0) -#else -#define ENVSUPER4() \ - BOOLEAN(BOX64_FUTEX_WAITV, futex_waitv, 1) -#endif - -#if defined(SD845) || defined(SD888) || defined(SD8G2) || defined(TEGRAX1) -#define ENVSUPER5() \ - BOOLEAN(BOX64_MMAP32, mmap32, 1) -#else -#define ENVSUPER5() \ - BOOLEAN(BOX64_MMAP32, mmap32, 0) -#endif - #define ENVSUPER() \ ENVSUPER1() \ ENVSUPER2() \ - ENVSUPER3() \ - ENVSUPER4() \ - ENVSUPER5() + ENVSUPER3() typedef struct box64env_s { #define INTEGER(NAME, name, default, min, max) int name; |