diff options
Diffstat (limited to 'src')
63 files changed, 777 insertions, 774 deletions
diff --git a/src/core.c b/src/core.c index 8574ba54..9ea4632b 100644 --- a/src/core.c +++ b/src/core.c @@ -488,13 +488,13 @@ HWCAP2_AFP return; } - if (la64_lbt = (cpucfg2 >> 18) & 0b1) + if ((la64_lbt = (cpucfg2 >> 18) & 0b1)) printf_log(LOG_INFO, " LBT_X86"); - if (la64_lam_bh = (cpucfg2 >> 27) & 0b1) + if ((la64_lam_bh = (cpucfg2 >> 27) & 0b1)) printf_log(LOG_INFO, " LAM_BH"); - if (la64_lamcas = (cpucfg2 >> 28) & 0b1) + if ((la64_lamcas = (cpucfg2 >> 28) & 0b1)) printf_log(LOG_INFO, " LAMCAS"); - if (la64_scq = (cpucfg2 >> 30) & 0b1) + if ((la64_scq = (cpucfg2 >> 30) & 0b1)) printf_log(LOG_INFO, " SCQ"); } #elif defined(RV64) @@ -1278,7 +1278,7 @@ void AddNewLibs(const char* list) } void PrintFlags() { - printf("Environment Variables:\n"); + printf("Environment Variables:\n"); printf(" BOX64_PATH is the box64 version of PATH (default is '.:bin')\n"); printf(" BOX64_LD_LIBRARY_PATH is the box64 version LD_LIBRARY_PATH (default is '.:lib:lib64')\n"); printf(" BOX64_LOG with 0/1/2/3 or NONE/INFO/DEBUG/DUMP to set the printed debug info (level 3 is level 2 + BOX64_DUMP)\n"); @@ -1412,31 +1412,31 @@ void LoadEnvVars(box64context_t *context) if (strcmp(getenv("BOX64_SSE_FLUSHTO0"), "1")==0) { box64_sse_flushto0 = 1; printf_log(LOG_INFO, "BOX64: Direct apply of SSE Flush to 0 flag\n"); - } + } } if(getenv("BOX64_X87_NO80BITS")) { if (strcmp(getenv("BOX64_X87_NO80BITS"), "1")==0) { box64_x87_no80bits = 1; printf_log(LOG_INFO, "BOX64: All 80bits x87 long double will be handle as double\n"); - } + } } if(getenv("BOX64_SYNC_ROUNDING")) { if (strcmp(getenv("BOX64_SYNC_ROUNDING"), "1")==0) { box64_sync_rounding = 1; printf_log(LOG_INFO, "BOX64: Rouding mode with be synced with fesetround/fegetround\n"); - } + } } if(getenv("BOX64_PREFER_WRAPPED")) { if (strcmp(getenv("BOX64_PREFER_WRAPPED"), "1")==0) { box64_prefer_wrapped = 1; printf_log(LOG_INFO, "BOX64: Prefering Wrapped libs\n"); - } + } } if(getenv("BOX64_PREFER_EMULATED")) { if (strcmp(getenv("BOX64_PREFER_EMULATED"), "1")==0) { box64_prefer_emulated = 1; printf_log(LOG_INFO, "BOX64: Prefering Emulated libs\n"); - } + } } if(getenv("BOX64_NOSIGSEGV")) { @@ -1684,7 +1684,7 @@ static void load_rcfiles() char* rcpath = getenv("BOX64_RCFILE"); if(rcpath && FileExist(rcpath, IS_FILE)) - LoadRCFile(rcpath); + LoadRCFile(rcpath); #ifndef TERMUX else if(FileExist("/etc/box64.box64rc", IS_FILE)) LoadRCFile("/etc/box64.box64rc"); diff --git a/src/dynarec/arm64/arm64_emitter.h b/src/dynarec/arm64/arm64_emitter.h index 6deea7f3..0070af36 100644 --- a/src/dynarec/arm64/arm64_emitter.h +++ b/src/dynarec/arm64/arm64_emitter.h @@ -8,16 +8,16 @@ /* ARM64 Linux Call Convention -SP The Stack Pointer. -r30 LR The Link Register. -r29 FP The Frame Pointer -r19…r28 Callee-saved registers -r18 The Platform Register, if needed; otherwise a temporary register. See notes. -r17 IP1 The second intra-procedure-call temporary register (can be used by call veneers and PLT code); at other times may be used as a temporary register. -r16 IP0 The first intra-procedure-call scratch register (can be used by call veneers and PLT code); at other times may be used as a temporary register. -r9…r15 Temporary registers -r8 Indirect result location register -r0…r7 Parameter/result registers +SP The Stack Pointer. +r30 LR The Link Register. +r29 FP The Frame Pointer +r19…r28 Callee-saved registers +r18 The Platform Register, if needed; otherwise a temporary register. See notes. +r17 IP1 The second intra-procedure-call temporary register (can be used by call veneers and PLT code); at other times may be used as a temporary register. +r16 IP0 The first intra-procedure-call scratch register (can be used by call veneers and PLT code); at other times may be used as a temporary register. +r9…r15 Temporary registers +r8 Indirect result location register +r0…r7 Parameter/result registers For SIMD: The first eight registers, v0-v7, are used to pass argument values into a subroutine and to return result values from a function. @@ -817,9 +817,9 @@ int convert_bitmask(uint64_t bitmask); #define MSR_fpsr(Rt) EMIT(MRS_gen(0, 1, 3, 4, 4, 1, Rt)) // mrs x0, cntvct_el0 op0=0b11 op1=0b011 CRn=0b1110 CRm=0b0000 op2=0b010 #define MRS_cntvct_el0(Rt) EMIT(MRS_gen(1, 1, 0b011, 0b1110, 0b0000, 0b010, Rt)) -// mrs x0, cntpctss_el0 op0=0b11 op1=0b011 CRn=0b1110 CRm=0b0000 op2=0b101 +// mrs x0, cntpctss_el0 op0=0b11 op1=0b011 CRn=0b1110 CRm=0b0000 op2=0b101 #define MRS_cntpctss_el0(Rt) EMIT(MRS_gen(1, 1, 0b011, 0b1110, 0b0000, 0b101, Rt)) -// mrs rt, rndr op0=0b11 op1=0b011 CRn=0b0010 CRm=0b0100 op2=0b000 +// mrs rt, rndr op0=0b11 op1=0b011 CRn=0b0010 CRm=0b0100 op2=0b000 #define MRS_rndr(Rt) EMIT(MRS_gen(1, 1, 0b011, 0b0010, 0b0100, 0b000, Rt)) // NEON Saturation Bit #define FPSR_QC 27 @@ -1725,8 +1725,8 @@ int convert_bitmask(uint64_t bitmask); #define VCHIQQ_64(Rd, Rn, Rm) EMIT(CMG_vector(1, 1, 0b11, 0, Rm, Rn, Rd)) // Less Than 0 -#define CMLT_0_vector(Q, size, Rn, Rd) ((Q)<<30 | 0b01110<<24 | (size)<<22 | 0b10000<<17 | 0b01010<<12 | 0b10<<10 | (Rn)<<5 | (Rd)) -#define CMLT_0_8(Rd, Rn) EMIT(CMLT_0_vector(0, 0b00, Rn, Rd)) +#define CMLT_0_vector(Q, size, Rn, Rd) ((Q)<<30 | 0b01110<<24 | (size)<<22 | 0b10000<<17 | 0b01010<<12 | 0b10<<10 | (Rn)<<5 | (Rd)) +#define CMLT_0_8(Rd, Rn) EMIT(CMLT_0_vector(0, 0b00, Rn, Rd)) #define CMLT_0_16(Rd, Rn) EMIT(CMLT_0_vector(0, 0b01, Rn, Rd)) #define CMLT_0_32(Rd, Rn) EMIT(CMLT_0_vector(0, 0b10, Rn, Rd)) #define CMLTQ_0_8(Rd, Rn) EMIT(CMLT_0_vector(1, 0b00, Rn, Rd)) diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c index 2d5c745e..cd279330 100644 --- a/src/dynarec/arm64/dynarec_arm64_00.c +++ b/src/dynarec/arm64/dynarec_arm64_00.c @@ -760,7 +760,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } else { INST_NAME("BOUND Gd, Ed"); nextop = F8; - FAKEED(0); + FAKEED; } break; case 0x63: diff --git a/src/dynarec/arm64/dynarec_arm64_660f.c b/src/dynarec/arm64/dynarec_arm64_660f.c index bf72c833..a8625e23 100644 --- a/src/dynarec/arm64/dynarec_arm64_660f.c +++ b/src/dynarec/arm64/dynarec_arm64_660f.c @@ -2515,7 +2515,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } MOV32w(x4, 1); BFIxw(ed, x4, u8, 1); - EWBACK(x1); + EWBACK; break; case 6: INST_NAME("BTR Ew, Ib"); @@ -2528,7 +2528,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n BFXILxw(xFlags, ed, u8, 1); // inject 1 bit from u8 to F_CF (i.e. pos 0) } BFCxw(ed, u8, 1); - EWBACK(x1); + EWBACK; break; case 7: INST_NAME("BTC Ew, Ib"); @@ -2542,7 +2542,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } MOV32w(x4, 1); EORxw_REG_LSL(ed, ed, x4, u8); - EWBACK(x1); + EWBACK; break; default: DEFAULT; diff --git a/src/dynarec/arm64/dynarec_arm64_helper.c b/src/dynarec/arm64/dynarec_arm64_helper.c index cba6cc10..506167b3 100644 --- a/src/dynarec/arm64/dynarec_arm64_helper.c +++ b/src/dynarec/arm64/dynarec_arm64_helper.c @@ -998,7 +998,7 @@ void x87_do_push_empty(dynarec_arm_t* dyn, int ninst, int s1) dyn->abort = 1; } } -void static internal_x87_dopop(dynarec_arm_t* dyn) +static void internal_x87_dopop(dynarec_arm_t* dyn) { for(int i=0; i<8; ++i) if(dyn->n.x87cache[i]!=-1) { @@ -1009,7 +1009,7 @@ void static internal_x87_dopop(dynarec_arm_t* dyn) } } } -int static internal_x87_dofree(dynarec_arm_t* dyn) +static int internal_x87_dofree(dynarec_arm_t* dyn) { if(dyn->n.tags&0b11) { MESSAGE(LOG_DUMP, "\t--------x87 FREED ST0, poping 1 more\n"); @@ -1761,8 +1761,8 @@ static void sse_reflectcache(dynarec_arm_t* dyn, int ninst, int s1) } } for(int i=0; i<32; ++i) - if(dyn->n.neoncache[i].t == NEON_CACHE_YMMW) - VSTR128_U12(i, xEmu, offsetof(x64emu_t, ymm[dyn->n.neoncache[i].n])); + if(dyn->n.neoncache[i].t == NEON_CACHE_YMMW) + VSTR128_U12(i, xEmu, offsetof(x64emu_t, ymm[dyn->n.neoncache[i].n])); } void sse_reflect_reg(dynarec_arm_t* dyn, int ninst, int a) @@ -2663,4 +2663,4 @@ int fpu_get_reg_ymm(dynarec_arm_t* dyn, int ninst, int t, int ymm, int k1, int k #endif printf_log(LOG_NONE, "BOX64 Dynarec: Error, unable to free a reg for YMM %d at inst=%d on pass %d\n", ymm, ninst, STEP); return i; -} \ No newline at end of file +} diff --git a/src/dynarec/arm64/dynarec_arm64_helper.h b/src/dynarec/arm64/dynarec_arm64_helper.h index 2b6102fb..769082c3 100644 --- a/src/dynarec/arm64/dynarec_arm64_helper.h +++ b/src/dynarec/arm64/dynarec_arm64_helper.h @@ -1035,7 +1035,7 @@ #define SET_DFOK() dyn->f.dfnone = 1; dyn->f.dfnone_here=1 #ifndef MAYSETFLAGS -#define MAYSETFLAGS() +#define MAYSETFLAGS() do {} while (0) #endif #ifndef READFLAGS diff --git a/src/dynarec/arm64/dynarec_arm64_pass0.h b/src/dynarec/arm64/dynarec_arm64_pass0.h index 7d4c0c2d..4cfce5af 100644 --- a/src/dynarec/arm64/dynarec_arm64_pass0.h +++ b/src/dynarec/arm64/dynarec_arm64_pass0.h @@ -5,7 +5,7 @@ dyn->insts[ninst].x64.addr = addr; \ if(ninst) dyn->insts[ninst-1].x64.size = dyn->insts[ninst].x64.addr - dyn->insts[ninst-1].x64.addr -#define MESSAGE(A, ...) +#define MESSAGE(A, ...) do {} while (0) #define MAYSETFLAGS() dyn->insts[ninst].x64.may_set = 1 #define READFLAGS(A) \ dyn->insts[ninst].x64.use_flags = A; dyn->f.dfnone = 1;\ diff --git a/src/dynarec/arm64/dynarec_arm64_pass1.h b/src/dynarec/arm64/dynarec_arm64_pass1.h index 6cf92feb..173f27bf 100644 --- a/src/dynarec/arm64/dynarec_arm64_pass1.h +++ b/src/dynarec/arm64/dynarec_arm64_pass1.h @@ -1,7 +1,7 @@ #define INIT #define FINI -#define MESSAGE(A, ...) -#define EMIT(A) +#define MESSAGE(A, ...) do {} while (0) +#define EMIT(A) do {} while (0) #define NEW_INST \ dyn->insts[ninst].f_entry = dyn->f; \ dyn->n.combined1 = dyn->n.combined2 = 0;\ diff --git a/src/dynarec/arm64/dynarec_arm64_pass2.h b/src/dynarec/arm64/dynarec_arm64_pass2.h index 013dfb86..dbb129ff 100644 --- a/src/dynarec/arm64/dynarec_arm64_pass2.h +++ b/src/dynarec/arm64/dynarec_arm64_pass2.h @@ -5,7 +5,7 @@ dyn->insts_size += 1+((dyn->insts[ninst].x64.size>(dyn->insts[ninst].size/4))?dyn->insts[ninst].x64.size:(dyn->insts[ninst].size/4))/15; \ } -#define MESSAGE(A, ...) +#define MESSAGE(A, ...) do {} while (0) #define EMIT(A) do{dyn->insts[ninst].size+=4; dyn->native_size+=4;}while(0) #define NEW_INST \ if(ninst) { \ @@ -16,4 +16,4 @@ #define INST_EPILOG dyn->insts[ninst].epilog = dyn->native_size; #define INST_NAME(name) #define TABLE64(A, V) {Table64(dyn, (V), 2); EMIT(0);} -#define FTABLE64(A, V) {mmx87_regs_t v = {.d = V}; Table64(dyn, v.q, 2); EMIT(0);} \ No newline at end of file +#define FTABLE64(A, V) {mmx87_regs_t v = {.d = V}; Table64(dyn, v.q, 2); EMIT(0);} diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c index 55f33670..4c703167 100644 --- a/src/dynarec/dynablock.c +++ b/src/dynarec/dynablock.c @@ -31,9 +31,9 @@ uint32_t X31_hash_code(void* addr, int len) { if(!len) return 0; uint8_t* p = (uint8_t*)addr; - int32_t h = *p; - for (--len, ++p; len; --len, ++p) h = (h << 5) - h + (int32_t)*p; - return (uint32_t)h; + int32_t h = *p; + for (--len, ++p; len; --len, ++p) h = (h << 5) - h + (int32_t)*p; + return (uint32_t)h; } dynablock_t* InvalidDynablock(dynablock_t* db, int need_lock) @@ -48,7 +48,7 @@ dynablock_t* InvalidDynablock(dynablock_t* db, int need_lock) mutex_lock(&my_context->mutex_dyndump); db->done = 0; db->gone = 1; - int db_size = db->x64_size; + uintptr_t db_size = db->x64_size; if(db_size && my_context) { uint32_t n = rb_get(my_context->db_sizes, db_size); if(n>1) @@ -94,7 +94,7 @@ void FreeDynablock(dynablock_t* db, int need_lock) dynarec_log(LOG_DEBUG, " -- FreeDyrecMap(%p, %d)\n", db->actual_block, db->size); db->done = 0; db->gone = 1; - int db_size = db->x64_size; + uintptr_t db_size = db->x64_size; if(db_size && my_context) { uint32_t n = rb_get(my_context->db_sizes, db_size); if(n>1) diff --git a/src/dynarec/dynarec_native_functions.c b/src/dynarec/dynarec_native_functions.c index c97d041d..219fd413 100644 --- a/src/dynarec/dynarec_native_functions.c +++ b/src/dynarec/dynarec_native_functions.c @@ -268,23 +268,23 @@ void native_fprem1(x64emu_t* emu) static uint8_t ff_mult(uint8_t a, uint8_t b) { - int retval = 0; + int retval = 0; - for(int i = 0; i < 8; i++) { - if((b & 1) == 1) - retval ^= a; + for(int i = 0; i < 8; i++) { + if((b & 1) == 1) + retval ^= a; - if((a & 0x80)) { - a <<= 1; - a ^= 0x1b; - } else { - a <<= 1; - } + if((a & 0x80)) { + a <<= 1; + a ^= 0x1b; + } else { + a <<= 1; + } - b >>= 1; - } + b >>= 1; + } - return retval; + return retval; } void native_aesimc(x64emu_t* emu, int xmm) diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c index 2ebc89cc..a6bcd4ec 100644 --- a/src/dynarec/dynarec_native_pass.c +++ b/src/dynarec/dynarec_native_pass.c @@ -264,7 +264,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int reset_n = get_first_jump(dyn, next); } if(box64_dynarec_dump) dynarec_log(LOG_NONE, "Extend block %p, %s%p -> %p (ninst=%d, jump from %d)\n", dyn, dyn->insts[ninst].x64.has_callret?"(opt. call) ":"", (void*)addr, (void*)next, ninst+1, dyn->insts[ninst].x64.has_callret?ninst:reset_n); - } else if(next && (next-addr)<box64_dynarec_forward && (getProtection(next)&PROT_READ)/*box64_dynarec_bigblock>=stopblock*/) { + } else if(next && (int)(next-addr)<box64_dynarec_forward && (getProtection(next)&PROT_READ)/*box64_dynarec_bigblock>=stopblock*/) { if(!((box64_dynarec_bigblock<stopblock) && !isJumpTableDefault64((void*)next))) { if(dyn->forward) { if(next<dyn->forward_to) diff --git a/src/dynarec/la64/dynarec_la64_emit_math.c b/src/dynarec/la64/dynarec_la64_emit_math.c index 29e1d613..f99c61ef 100644 --- a/src/dynarec/la64/dynarec_la64_emit_math.c +++ b/src/dynarec/la64/dynarec_la64_emit_math.c @@ -144,7 +144,9 @@ void emit_add32c(dynarec_la64_t* dyn, int ninst, rex_t rex, int s1, int64_t c, i IFX(X_PEND | X_AF | X_CF | X_OF) { MOV64xw(s2, c); - } else if (la64_lbt) MOV64xw(s2, c); + } else if (la64_lbt) { + MOV64xw(s2, c); + } IFX(X_PEND) { SDxw(s1, xEmu, offsetof(x64emu_t, op1)); @@ -1602,4 +1604,4 @@ void emit_neg16(dynarec_la64_t* dyn, int ninst, int s1, int s2, int s3) IFXA (X_ALL, la64_lbt) { SPILL_EFLAGS(); } -} \ No newline at end of file +} diff --git a/src/dynarec/la64/dynarec_la64_f0.c b/src/dynarec/la64/dynarec_la64_f0.c index 26610d2c..d1b0810c 100644 --- a/src/dynarec/la64/dynarec_la64_f0.c +++ b/src/dynarec/la64/dynarec_la64_f0.c @@ -353,12 +353,14 @@ uintptr_t dynarec64_F0(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni emit_or32c(dyn, ninst, rex, ed, i64, x3, x4); } else { addr = geted(dyn, addr, ninst, nextop, &wback, x2, x1, &fixedaddress, rex, LOCK_LOCK, 0, (opcode == 0x81) ? 4 : 1); - if (opcode == 0x81) + if (opcode == 0x81) { i64 = F32S; - else + } else { i64 = F8S; - if (i64 <= -2048 || i64 > 2048) + } + if (i64 <= -2048 || i64 > 2048) { MOV64xw(x3, i64); + } MARKLOCK; LLxw(x1, wback, 0); if (i64 >= -2048 && i64 < 2048) { diff --git a/src/dynarec/la64/dynarec_la64_helper.h b/src/dynarec/la64/dynarec_la64_helper.h index 6ebfed29..2bfff82a 100644 --- a/src/dynarec/la64/dynarec_la64_helper.h +++ b/src/dynarec/la64/dynarec_la64_helper.h @@ -621,7 +621,7 @@ ANDI(scratch1, scratch2, 0x80); \ } else { \ SRLI_D(scratch1, scratch2, (width)-1); \ - if (width != 64) ANDI(scratch1, scratch1, 1); \ + if ((width) != 64) ANDI(scratch1, scratch1, 1); \ } \ BEQZ(scratch1, 8); \ ORI(xFlags, xFlags, 1 << F_CF); \ @@ -639,7 +639,7 @@ } #ifndef MAYSETFLAGS -#define MAYSETFLAGS() +#define MAYSETFLAGS() do {} while (0) #endif #ifndef READFLAGS @@ -1149,4 +1149,4 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int #define PURGE_YMM() /* TODO */ -#endif //__DYNAREC_LA64_HELPER_H__ \ No newline at end of file +#endif //__DYNAREC_LA64_HELPER_H__ diff --git a/src/dynarec/la64/dynarec_la64_pass0.h b/src/dynarec/la64/dynarec_la64_pass0.h index 99a897a6..b3f0f7ef 100644 --- a/src/dynarec/la64/dynarec_la64_pass0.h +++ b/src/dynarec/la64/dynarec_la64_pass0.h @@ -4,7 +4,7 @@ dyn->insts[ninst].x64.addr = addr; \ if (ninst) dyn->insts[ninst - 1].x64.size = dyn->insts[ninst].x64.addr - dyn->insts[ninst - 1].x64.addr -#define MESSAGE(A, ...) +#define MESSAGE(A, ...) do {} while (0) #define MAYSETFLAGS() dyn->insts[ninst].x64.may_set = 1 #define READFLAGS(A) \ dyn->insts[ninst].x64.use_flags = A; \ diff --git a/src/dynarec/la64/dynarec_la64_pass1.h b/src/dynarec/la64/dynarec_la64_pass1.h index af69ceca..20366bd0 100644 --- a/src/dynarec/la64/dynarec_la64_pass1.h +++ b/src/dynarec/la64/dynarec_la64_pass1.h @@ -1,7 +1,7 @@ #define INIT #define FINI -#define MESSAGE(A, ...) -#define EMIT(A) +#define MESSAGE(A, ...) do {} while (0) +#define EMIT(A) do {} while (0) #define NEW_INST \ dyn->insts[ninst].f_entry = dyn->f; \ dyn->lsx.combined1 = dyn->lsx.combined2 = 0; \ diff --git a/src/dynarec/la64/dynarec_la64_pass2.h b/src/dynarec/la64/dynarec_la64_pass2.h index 6410790d..38c16466 100644 --- a/src/dynarec/la64/dynarec_la64_pass2.h +++ b/src/dynarec/la64/dynarec_la64_pass2.h @@ -5,7 +5,7 @@ dyn->insts_size += 1 + ((dyn->insts[ninst].x64.size > (dyn->insts[ninst].size / 4)) ? dyn->insts[ninst].x64.size : (dyn->insts[ninst].size / 4)) / 15; \ } -#define MESSAGE(A, ...) +#define MESSAGE(A, ...) do {} while (0) #define EMIT(A) \ do { \ dyn->insts[ninst].size += 4; \ diff --git a/src/dynarec/la64/la64_emitter.h b/src/dynarec/la64/la64_emitter.h index 5d872d9c..25d800fb 100644 --- a/src/dynarec/la64/la64_emitter.h +++ b/src/dynarec/la64/la64_emitter.h @@ -482,19 +482,19 @@ f24-f31 fs0-fs7 Static registers Callee // bstr32[msbw:lsbw] = GR[rj][msbw-lsbw:0] // bstr32[lsbw-1:0] = GR[rd][lsbw-1:0] // GR[rd] = SignExtend(bstr32[31:0], GRLEN) -#define BSTRINS_W(rd, rj, msbw5, lsbw5) EMIT(type_2RI12(0b0000000001, 0b100000000000 | (msbw5 & 0x1F) << 6 | (lsbw5 & 0x1F), rj, rd)) +#define BSTRINS_W(rd, rj, msbw5, lsbw5) EMIT(type_2RI12(0b0000000001, 0b100000000000 | ((msbw5) & 0x1F) << 6 | ((lsbw5) & 0x1F), rj, rd)) // GR[rd][63:msbd+1] = GR[rd][63:msbd+1] // GR[rd][msbd:lsbd] = GR[rj][msbd-lsbd:0] // GR[rd][lsbd-1:0] = GR[rd][lsbd-1:0] -#define BSTRINS_D(rd, rj, msbd6, lsbd6) EMIT(type_2RI12(0b0000000010, (msbd6 & 0x3F) << 6 | (lsbd6 & 0x3F), rj, rd)) +#define BSTRINS_D(rd, rj, msbd6, lsbd6) EMIT(type_2RI12(0b0000000010, ((msbd6) & 0x3F) << 6 | ((lsbd6) & 0x3F), rj, rd)) // bstr32[31:0] = ZeroExtend(GR[rj][msbw:lsbw], 32) // GR[rd] = SignExtend(bstr32[31:0], GRLEN) -#define BSTRPICK_W(rd, rj, msbw5, lsbw5) EMIT(type_2RI12(0b0000000001, 0b100000100000 | (msbw5 & 0x1F) << 6 | (lsbw5 & 0x1F), rj, rd)) +#define BSTRPICK_W(rd, rj, msbw5, lsbw5) EMIT(type_2RI12(0b0000000001, 0b100000100000 | ((msbw5) & 0x1F) << 6 | ((lsbw5) & 0x1F), rj, rd)) // GR[rd] = ZeroExtend(GR[rj][msbd:lsbd], 64) -#define BSTRPICK_D(rd, rj, msbd6, lsbd6) EMIT(type_2RI12(0b0000000011, (msbd6 & 0x3F) << 6 | (lsbd6 & 0x3F), rj, rd)) +#define BSTRPICK_D(rd, rj, msbd6, lsbd6) EMIT(type_2RI12(0b0000000011, ((msbd6) & 0x3F) << 6 | ((lsbd6) & 0x3F), rj, rd)) // ZERO the upper part #define ZEROUP(rd) BSTRINS_D(rd, xZR, 63, 32); diff --git a/src/dynarec/la64/la64_printer.c b/src/dynarec/la64/la64_printer.c index aae90869..ba9264fb 100644 --- a/src/dynarec/la64/la64_printer.c +++ b/src/dynarec/la64/la64_printer.c @@ -12,7 +12,7 @@ static const char* Vt[] = { "vra0", "vra1", "vra2", "vra3", "vra4", "vra5", "vra typedef struct la64_print_s { int d, j, k, a; - int i, u; + uint64_t i, u; } la64_print_t; int isMask(uint32_t opcode, const char* mask, la64_print_t *a) @@ -44,7 +44,7 @@ int isMask(uint32_t opcode, const char* mask, la64_print_t *a) return 1; } -int64_t signExtend(uint32_t val, int sz) +int64_t signExtend(uint64_t val, int sz) { int64_t ret = val; if((val>>(sz-1))&1) @@ -80,39 +80,39 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "0000001010iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "ADDI.W", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "ADDI.W", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0000001011iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "ADDI.D", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "ADDI.D", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "000100iiiiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "ADDU16I.D", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "ADDU16I.D", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "000000000000010iikkkkkjjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %s, %d", "ALSL.W", Xt[Rd], Xt[Rj], Xt[Rk], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %s, %lu", "ALSL.W", Xt[Rd], Xt[Rj], Xt[Rk], imm); return buff; } if (isMask(opcode, "000000000000011iikkkkkjjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %s, %d", "ALSL.WU", Xt[Rd], Xt[Rj], Xt[Rk], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %s, %lu", "ALSL.WU", Xt[Rd], Xt[Rj], Xt[Rk], imm); return buff; } if (isMask(opcode, "000000000010110iikkkkkjjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %s, %d", "ALSL.D", Xt[Rd], Xt[Rj], Xt[Rk], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %s, %lu", "ALSL.D", Xt[Rd], Xt[Rj], Xt[Rk], imm); return buff; } if (isMask(opcode, "0001010iiiiiiiiiiiiiiiiiiiiddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, 0x%x", "LU12I.W", Xt[Rd], imm); + snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "LU12I.W", Xt[Rd], imm); return buff; } if (isMask(opcode, "0001011iiiiiiiiiiiiiiiiiiiiddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "LU32I.D", Xt[Rd], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "LU32I.D", Xt[Rd], imm); return buff; } if (isMask(opcode, "0000001100iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LU52I.D", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu", "LU52I.D", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000000100100kkkkkjjjjjddddd", &a)) { @@ -124,47 +124,47 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "0000001000iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "SLTI", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "SLTI", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0000001001iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u", "SLTI", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "SLTI", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0001100iiiiiiiiiiiiiiiiiiiiddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "PCADDI", Xt[Rd], signExtend(imm << 2, 22)); + snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "PCADDI", Xt[Rd], (uint64_t)signExtend(imm << 2, 22)); return buff; } if (isMask(opcode, "0001101iiiiiiiiiiiiiiiiiiiiddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "PCALAU12I", Xt[Rd], signExtend(imm << 12, 32)); + snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "PCALAU12I", Xt[Rd], (uint64_t)signExtend(imm << 12, 32)); return buff; } if (isMask(opcode, "0001110iiiiiiiiiiiiiiiiiiiiddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "PCADDU12I", Xt[Rd], signExtend(imm << 12, 32)); + snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "PCADDU12I", Xt[Rd], (uint64_t)signExtend(imm << 12, 32)); return buff; } if (isMask(opcode, "0001111iiiiiiiiiiiiiiiiiiiiddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "PCADDU18I", Xt[Rd], signExtend(imm << 18, 38)); + snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "PCADDU18I", Xt[Rd], (uint64_t)signExtend(imm << 18, 38)); return buff; } if (isMask(opcode, "00100000iiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LL.W", Xt[Rd], Xt[Rj], signExtend(imm << 2, 16)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "LL.W", Xt[Rd], Xt[Rj], signExtend(imm << 2, 16)); return buff; } if (isMask(opcode, "00100001iiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "SC.W", Xt[Rd], Xt[Rj], signExtend(imm << 2, 16)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "SC.W", Xt[Rd], Xt[Rj], signExtend(imm << 2, 16)); return buff; } if (isMask(opcode, "00100010iiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LL.D", Xt[Rd], Xt[Rj], signExtend(imm << 2, 16)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "LL.D", Xt[Rd], Xt[Rj], signExtend(imm << 2, 16)); return buff; } if (isMask(opcode, "00100011iiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "SC.D", Xt[Rd], Xt[Rj], signExtend(imm << 2, 16)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "SC.D", Xt[Rd], Xt[Rj], signExtend(imm << 2, 16)); return buff; } if (isMask(opcode, "00111000011100100iiiiiiiiiiiiiii", &a)) { - snprintf(buff, sizeof(buff), "%-15s %d", "DBAR", imm); + snprintf(buff, sizeof(buff), "%-15s %lu", "DBAR", imm); return buff; } if (isMask(opcode, "00000000000101001kkkkkjjjjjddddd", &a)) { @@ -196,15 +196,15 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "0000001101iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "ANDI", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "ANDI", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "0000001110iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "ORI", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "ORI", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "0000001111iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "XORI", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "XORI", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000000101110kkkkkjjjjjddddd", &a)) { @@ -240,35 +240,35 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "0000000001000001iiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u", "SLLI.D", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu", "SLLI.D", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001000101iiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u", "SRLI.D", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu", "SRLI.D", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001001001iiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u", "SRAI.D", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu", "SRAI.D", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001001101iiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u", "ROTRI.D", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu", "ROTRI.D", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010000001iiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u", "SLLI.W", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu", "SLLI.W", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010001001iiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u", "SRLI.W", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu", "SRLI.W", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010010001iiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u", "SRAI.W", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu", "SRAI.W", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010011001iiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u", "ROTRI.W", Xt[Rd], Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu", "ROTRI.W", Xt[Rd], Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000000111000kkkkkjjjjjddddd", &a)) { @@ -336,19 +336,19 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "00000000011uuuuu0iiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u, %u", "BSTRINS.W", Xt[Rd], Xt[Rj], imm_up, imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu, %lu", "BSTRINS.W", Xt[Rd], Xt[Rj], imm_up, imm); return buff; } if (isMask(opcode, "0000000010uuuuuuiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u, %u", "BSTRINS.D", Xt[Rd], Xt[Rj], imm_up, imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu, %lu", "BSTRINS.D", Xt[Rd], Xt[Rj], imm_up, imm); return buff; } if (isMask(opcode, "00000000011uuuuu1iiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u, %u", "BSTRPICK.W", Xt[Rd], Xt[Rj], imm_up, imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu, %lu", "BSTRPICK.W", Xt[Rd], Xt[Rj], imm_up, imm); return buff; } if (isMask(opcode, "0000000011uuuuuuiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %u, %u", "BSTRPICK.D", Xt[Rd], Xt[Rj], imm_up, imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %lu, %lu", "BSTRPICK.D", Xt[Rd], Xt[Rj], imm_up, imm); return buff; } if (isMask(opcode, "0000000000000000000100jjjjjddddd", &a)) { @@ -432,35 +432,35 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "010110iiiiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "BEQ", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "BEQ", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); return buff; } if (isMask(opcode, "010111iiiiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "BNE", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "BNE", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); return buff; } if (isMask(opcode, "011000iiiiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "BLT", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "BLT", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); return buff; } if (isMask(opcode, "011001iiiiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "BGE", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "BGE", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); return buff; } if (isMask(opcode, "011010iiiiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "BLTU", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "BLTU", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); return buff; } if (isMask(opcode, "011011iiiiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "BGEU", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "BGEU", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); return buff; } if (isMask(opcode, "010000iiiiiiiiiiiiiiiijjjjjuuuuu", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "BEQZ", Xt[Rj], signExtend(imm + (imm_up << 16) << 2, 23)); + snprintf(buff, sizeof(buff), "%-15s %s, %ld", "BEQZ", Xt[Rj], signExtend((imm + (imm_up << 16)) << 2, 23)); return buff; } if (isMask(opcode, "010001iiiiiiiiiiiiiiiijjjjjuuuuu", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "BNEZ", Xt[Rj], signExtend(imm + (imm_up << 16) << 2, 23)); + snprintf(buff, sizeof(buff), "%-15s %s, %ld", "BNEZ", Xt[Rj], signExtend((imm + (imm_up << 16)) << 2, 23)); return buff; } if (isMask(opcode, "0100110000000000000000jjjjj00000", &a)) { @@ -468,55 +468,55 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "010011iiiiiiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "JIRL", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "JIRL", Xt[Rd], Xt[Rj], signExtend(imm << 2, 18)); return buff; } if (isMask(opcode, "010100iiiiiiiiiiiiiiiiiiiiiiiiii", &a)) { - snprintf(buff, sizeof(buff), "%-15s 0x%x", "B", (((imm & 0x3FF) << 16) | ((uint32_t)imm >> 10)) << 6 >> 4); + snprintf(buff, sizeof(buff), "%-15s 0x%lx", "B", (((imm & 0x3FF) << 16) | (imm >> 10)) << 6 >> 4); return buff; } if (isMask(opcode, "0010100000iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LD.B", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "LD.B", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010100001iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LD.H", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "LD.H", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010100010iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LD.W", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "LD.W", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010100011iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LD.D", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "LD.D", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010101000iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LD.BU", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "LD.BU", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010101001iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LD.HU", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "LD.HU", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010101010iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "LD.WU", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "LD.WU", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010100100iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "ST.B", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "ST.B", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010100101iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "ST.H", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "ST.H", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010100110iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "ST.W", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "ST.W", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010100111iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "ST.D", Xt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "ST.D", Xt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "00111000000000000kkkkkjjjjjddddd", &a)) { @@ -564,19 +564,19 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "0010101110iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "FLD.D", Ft[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "FLD.D", Ft[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010101100iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "FLD.S", Ft[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "FLD.S", Ft[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010101111iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "FST.D", Ft[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "FST.D", Ft[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010101101iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "FST.S", Ft[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "FST.S", Ft[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "00000001000000001kkkkkjjjjjddddd", &a)) { @@ -2124,44 +2124,44 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "01110011100100iiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "VSHUF4I.B", Vt[Rd], Vt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "VSHUF4I.B", Vt[Rd], Vt[Rj], imm); return buff; } if (isMask(opcode, "01110011100101iiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "VSHUF4I.H", Vt[Rd], Vt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "VSHUF4I.H", Vt[Rd], Vt[Rj], imm); return buff; } if (isMask(opcode, "01110011100110iiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "VSHUF4I.W", Vt[Rd], Vt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "VSHUF4I.W", Vt[Rd], Vt[Rj], imm); return buff; } if (isMask(opcode, "01110011100111iiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "VSHUF4I.D", Vt[Rd], Vt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "VSHUF4I.D", Vt[Rd], Vt[Rj], imm); return buff; } if (isMask(opcode, "01110011100000iiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "VEXTRINS.D", Vt[Rd], Vt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "VEXTRINS.D", Vt[Rd], Vt[Rj], imm); return buff; } if (isMask(opcode, "01110011100001iiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "VEXTRINS.W", Vt[Rd], Vt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "VEXTRINS.W", Vt[Rd], Vt[Rj], imm); return buff; } if (isMask(opcode, "01110011100010iiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "VEXTRINS.H", Vt[Rd], Vt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "VEXTRINS.H", Vt[Rd], Vt[Rj], imm); return buff; } if (isMask(opcode, "01110011100011iiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%x", "VEXTRINS.B", Vt[Rd], Vt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %s, 0x%lx", "VEXTRINS.B", Vt[Rd], Vt[Rj], imm); return buff; } if (isMask(opcode, "0010110000iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "VLD", Vt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "VLD", Vt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "0010110001iiiiiiiiiiiijjjjjddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %s, %d", "VST", Vt[Rd], Xt[Rj], signExtend(imm, 12)); + snprintf(buff, sizeof(buff), "%-15s %s, %s, %ld", "VST", Vt[Rd], Xt[Rj], signExtend(imm, 12)); return buff; } if (isMask(opcode, "00000000000000001000000000101000", &a)) { @@ -2181,7 +2181,7 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "000000000000000001110000iii00000", &a)) { - snprintf(buff, sizeof(buff), "%-15s %d", "X64SETTOP", imm); + snprintf(buff, sizeof(buff), "%-15s %lu", "X64SETTOP", imm); return buff; } if (isMask(opcode, "000000000000000001110100000ddddd", &a)) { @@ -2189,15 +2189,15 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "00000000010111iiiiiiii00000ddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, 0x%x", "X64GETEFLAGS", Xt[Rd], imm); + snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "X64GETEFLAGS", Xt[Rd], imm); return buff; } if (isMask(opcode, "00000000010111iiiiiiii00001ddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, 0x%x", "X64SETEFLAGS", Xt[Rd], imm); + snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "X64SETEFLAGS", Xt[Rd], imm); return buff; } if (isMask(opcode, "000000000011011010iiii00000ddddd", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, 0x%x", "X64SETJ", Xt[Rd], imm); + snprintf(buff, sizeof(buff), "%-15s %s, 0x%lx", "X64SETJ", Xt[Rd], imm); return buff; } if (isMask(opcode, "0000000000000000100000jjjjj00000", &a)) { @@ -2505,118 +2505,118 @@ const char* la64_print(uint32_t opcode, uintptr_t addr) return buff; } if (isMask(opcode, "0000000001010100001iiijjjjj00000", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SLLI.B", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SLLI.B", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010100001iiijjjjj00100", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SRLI.B", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SRLI.B", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010100001iiijjjjj01000", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SRAI.B", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SRAI.B", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010100001iiijjjjj01100", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64ROTRI.B", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64ROTRI.B", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010100001iiijjjjj10000", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64RCRI.B", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64RCRI.B", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010100001iiijjjjj10100", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64ROTLI.B", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64ROTLI.B", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010100001iiijjjjj11000", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64RCLI.B", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64RCLI.B", Xt[Rj], imm); return buff; } if (isMask(opcode, "000000000101010001iiiijjjjj00001", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SLLI.H", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SLLI.H", Xt[Rj], imm); return buff; } if (isMask(opcode, "000000000101010001iiiijjjjj00101", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SRLI.H", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SRLI.H", Xt[Rj], imm); return buff; } if (isMask(opcode, "000000000101010001iiiijjjjj01001", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SRAI.H", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SRAI.H", Xt[Rj], imm); return buff; } if (isMask(opcode, "000000000101010001iiiijjjjj01101", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64ROTRI.H", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64ROTRI.H", Xt[Rj], imm); return buff; } if (isMask(opcode, "000000000101010001iiiijjjjj10001", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64RCRI.H", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64RCRI.H", Xt[Rj], imm); return buff; } if (isMask(opcode, "000000000101010001iiiijjjjj10101", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64ROTLI.H", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64ROTLI.H", Xt[Rj], imm); return buff; } if (isMask(opcode, "000000000101010001iiiijjjjj11001", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64RCLI.H", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64RCLI.H", Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010101001iiiiijjjjj00010", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SLLI.W", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SLLI.W", Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010101001iiiiijjjjj00110", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SRLI.W", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SRLI.W", Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010101001iiiiijjjjj01010", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SRAI.W", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SRAI.W", Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010101001iiiiijjjjj01110", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64ROTRI.W", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64ROTRI.W", Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010101001iiiiijjjjj10010", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64RCRI.W", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64RCRI.W", Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010101001iiiiijjjjj10110", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64ROTLI.W", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64ROTLI.W", Xt[Rj], imm); return buff; } if (isMask(opcode, "00000000010101001iiiiijjjjj11010", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64RCLI.W", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64RCLI.W", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010101iiiiiijjjjj00011", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SLLI.D", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SLLI.D", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010101iiiiiijjjjj00111", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SRLI.D", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SRLI.D", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010101iiiiiijjjjj01011", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64SRAI.D", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64SRAI.D", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010101iiiiiijjjjj01111", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64ROTRI.D", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64ROTRI.D", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010101iiiiiijjjjj10011", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64RCRI.D", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64RCRI.D", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010101iiiiiijjjjj10111", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64ROTLI.D", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64ROTLI.D", Xt[Rj], imm); return buff; } if (isMask(opcode, "0000000001010101iiiiiijjjjj11011", &a)) { - snprintf(buff, sizeof(buff), "%-15s %s, %d", "X64RCLI.D", Xt[Rj], imm); + snprintf(buff, sizeof(buff), "%-15s %s, %lu", "X64RCLI.D", Xt[Rj], imm); return buff; } snprintf(buff, sizeof(buff), "%08X ???", __builtin_bswap32(opcode)); return buff; -} \ No newline at end of file +} diff --git a/src/dynarec/rv64/dynarec_rv64_660f.c b/src/dynarec/rv64/dynarec_rv64_660f.c index e72cb10d..c5cc9781 100644 --- a/src/dynarec/rv64/dynarec_rv64_660f.c +++ b/src/dynarec/rv64/dynarec_rv64_660f.c @@ -1273,7 +1273,7 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int GETGX(); GETED(1); u8 = F8; - SB(ed, gback, gdoffset + u8 & 0xF); + SB(ed, gback, gdoffset + (u8 & 0xF)); break; case 0x21: INST_NAME("INSERTPS GX, EX, Ib"); diff --git a/src/dynarec/rv64/dynarec_rv64_helper.c b/src/dynarec/rv64/dynarec_rv64_helper.c index d11e9b04..c51f50eb 100644 --- a/src/dynarec/rv64/dynarec_rv64_helper.c +++ b/src/dynarec/rv64/dynarec_rv64_helper.c @@ -954,7 +954,7 @@ void x87_do_push_empty(dynarec_rv64_t* dyn, int ninst, int s1) if(s1) x87_stackcount(dyn, ninst, s1); } -void static internal_x87_dopop(dynarec_rv64_t* dyn) +static void internal_x87_dopop(dynarec_rv64_t* dyn) { for(int i=0; i<8; ++i) if(dyn->e.x87cache[i]!=-1) { @@ -965,7 +965,7 @@ void static internal_x87_dopop(dynarec_rv64_t* dyn) } } } -int static internal_x87_dofree(dynarec_rv64_t* dyn) +static int internal_x87_dofree(dynarec_rv64_t* dyn) { if(dyn->e.tags&0b11) { MESSAGE(LOG_DUMP, "\t--------x87 FREED ST0, poping 1 more\n"); @@ -2361,8 +2361,8 @@ void rv64_move32(dynarec_rv64_t* dyn, int ninst, int reg, int32_t val, int zerou src = reg; } if (lo12 || !hi20) ADDIW(reg, src, lo12); - if((zeroup && ((hi20&0x80000) || (!hi20 && (lo12&0x800))) - || (!zeroup && !(val&0x80000000) && ((hi20&0x80000) || (!hi20 && (lo12&0x800)))))) { + if((zeroup && ((hi20&0x80000) || (!hi20 && (lo12&0x800)))) + || (!zeroup && !(val&0x80000000) && ((hi20&0x80000) || (!hi20 && (lo12&0x800))))) { ZEROUP(reg); } } diff --git a/src/dynarec/rv64/dynarec_rv64_helper.h b/src/dynarec/rv64/dynarec_rv64_helper.h index 529b47df..9e9d14f5 100644 --- a/src/dynarec/rv64/dynarec_rv64_helper.h +++ b/src/dynarec/rv64/dynarec_rv64_helper.h @@ -392,7 +392,7 @@ ANDI(gd, gb1, 0xff); // Write gb (gd) back to original register / memory, using s1 as scratch -#define GBBACK(s1) \ +#define GBBACK(s1) do { \ if (gb2) { \ MOV64x(s1, 0xffffffffffff00ffLL); \ AND(gb1, gb1, s1); \ @@ -401,7 +401,7 @@ } else { \ ANDI(gb1, gb1, ~0xff); \ OR(gb1, gb1, gd); \ - } + } } while (0) // Write eb (ed) back to original register / memory, using s1 as scratch #define EBBACK(s1, c) \ @@ -876,7 +876,7 @@ ANDI(scratch1, scratch2, 0x80); \ } else { \ SRLI(scratch1, scratch2, (width)-1); \ - if (width != 64) ANDI(scratch1, scratch1, 1); \ + if ((width) != 64) ANDI(scratch1, scratch1, 1); \ } \ BEQZ(scratch1, 8); \ ORI(xFlags, xFlags, 1 << F_CF); \ @@ -940,7 +940,7 @@ #endif #ifndef MAYSETFLAGS -#define MAYSETFLAGS() +#define MAYSETFLAGS() do {} while (0) #endif #ifndef READFLAGS diff --git a/src/dynarec/rv64/dynarec_rv64_pass0.h b/src/dynarec/rv64/dynarec_rv64_pass0.h index 3ee1685f..684d3bbf 100644 --- a/src/dynarec/rv64/dynarec_rv64_pass0.h +++ b/src/dynarec/rv64/dynarec_rv64_pass0.h @@ -5,7 +5,7 @@ dyn->insts[ninst].x64.addr = addr; \ if(ninst) dyn->insts[ninst-1].x64.size = dyn->insts[ninst].x64.addr - dyn->insts[ninst-1].x64.addr -#define MESSAGE(A, ...) +#define MESSAGE(A, ...) do {} while (0) #define MAYSETFLAGS() dyn->insts[ninst].x64.may_set = 1 #define READFLAGS(A) \ dyn->insts[ninst].x64.use_flags = A; dyn->f.dfnone = 1;\ diff --git a/src/dynarec/rv64/dynarec_rv64_pass1.h b/src/dynarec/rv64/dynarec_rv64_pass1.h index 34d0a468..b76d7e97 100644 --- a/src/dynarec/rv64/dynarec_rv64_pass1.h +++ b/src/dynarec/rv64/dynarec_rv64_pass1.h @@ -1,7 +1,7 @@ #define INIT #define FINI -#define MESSAGE(A, ...) -#define EMIT(A) +#define MESSAGE(A, ...) do {} while (0) +#define EMIT(A) do {} while (0) #define NEW_INST \ dyn->insts[ninst].f_entry = dyn->f; \ dyn->e.combined1 = dyn->e.combined2 = 0;\ diff --git a/src/dynarec/rv64/dynarec_rv64_pass2.h b/src/dynarec/rv64/dynarec_rv64_pass2.h index f29cf267..6761a454 100644 --- a/src/dynarec/rv64/dynarec_rv64_pass2.h +++ b/src/dynarec/rv64/dynarec_rv64_pass2.h @@ -5,7 +5,7 @@ dyn->insts_size += 1+((dyn->insts[ninst].x64.size>(dyn->insts[ninst].size/4))?dyn->insts[ninst].x64.size:(dyn->insts[ninst].size/4))/15; \ } -#define MESSAGE(A, ...) +#define MESSAGE(A, ...) do {} while (0) #define EMIT(A) do {dyn->insts[ninst].size+=4; dyn->native_size+=4;}while(0) #define NEW_INST \ if(ninst) { \ @@ -16,4 +16,4 @@ #define INST_EPILOG dyn->insts[ninst].epilog = dyn->native_size; #define INST_NAME(name) #define TABLE64(A, V) {Table64(dyn, (V), 2); EMIT(0); EMIT(0);} -#define FTABLE64(A, V) {mmx87_regs_t v = {.d = V}; Table64(dyn, v.q, 2); EMIT(0); EMIT(0);} \ No newline at end of file +#define FTABLE64(A, V) {mmx87_regs_t v = {.d = V}; Table64(dyn, v.q, 2); EMIT(0); EMIT(0);} diff --git a/src/dynarec/rv64/rv64_emitter.h b/src/dynarec/rv64/rv64_emitter.h index ceb1917b..e0fe4403 100644 --- a/src/dynarec/rv64/rv64_emitter.h +++ b/src/dynarec/rv64/rv64_emitter.h @@ -112,18 +112,18 @@ f28–31 ft8–11 FP temporaries Caller // MOV64x/MOV32w is quite complex, so use a function for this #define MOV64x(A, B) rv64_move64(dyn, ninst, A, B) #define MOV32w(A, B) rv64_move32(dyn, ninst, A, B, 1) -#define MOV64xw(A, B) \ +#define MOV64xw(A, B) do { \ if (rex.w) { \ MOV64x(A, B); \ } else { \ MOV32w(A, B); \ - } -#define MOV64z(A, B) \ + } } while (0) +#define MOV64z(A, B) do { \ if (rex.is32bits) { \ MOV32w(A, B); \ } else { \ MOV64x(A, B); \ - } + } } while (0) // ZERO the upper part #define ZEROUP(r) AND(r, r, xMASK) @@ -225,19 +225,19 @@ f28–31 ft8–11 FP temporaries Caller // rd = rs1 (pseudo instruction) #define MV(rd, rs1) ADDI(rd, rs1, 0) // rd = rs1 (pseudo instruction) -#define MVxw(rd, rs1) \ +#define MVxw(rd, rs1) do { \ if (rex.w) { \ MV(rd, rs1); \ } else { \ AND(rd, rs1, xMASK); \ - } + } } while (0) // rd = rs1 (pseudo instruction) -#define MVz(rd, rs1) \ +#define MVz(rd, rs1) do { \ if (rex.is32bits) { \ AND(rd, rs1, xMASK); \ } else { \ MV(rd, rs1); \ - } + } } while (0) // rd = !rs1 #define NOT(rd, rs1) XORI(rd, rs1, -1) // rd = -rs1 @@ -344,10 +344,10 @@ f28–31 ft8–11 FP temporaries Caller // 4-bytes[rs1+imm12] = rs2 #define SW(rs2, rs1, imm12) EMIT(S_type(imm12, rs2, rs1, 0b010, 0b0100011)) -#define PUSH1(reg) \ - do { \ - SD(reg, xRSP, -8); \ - SUBI(xRSP, xRSP, 8); \ +#define PUSH1(reg) \ + do { \ + SD(reg, xRSP, 0xFF8); \ + SUBI(xRSP, xRSP, 8); \ } while (0) #define POP1(reg) \ do { \ @@ -356,7 +356,7 @@ f28–31 ft8–11 FP temporaries Caller } while (0) #define PUSH1_32(reg) \ do { \ - SW(reg, xRSP, -4); \ + SW(reg, xRSP, 0xFFC); \ SUBIW(xRSP, xRSP, 4); \ } while (0) #define POP1_32(reg) \ @@ -378,10 +378,10 @@ f28–31 ft8–11 FP temporaries Caller PUSH1(reg); \ } -#define PUSH1_16(reg) \ - do { \ - SH(reg, xRSP, -2); \ - SUBI(xRSP, xRSP, 2); \ +#define PUSH1_16(reg) \ + do { \ + SH(reg, xRSP, 0xFFE); \ + SUBI(xRSP, xRSP, 2); \ } while (0) #define POP1_16(reg) \ @@ -452,60 +452,60 @@ f28–31 ft8–11 FP temporaries Caller // rd = rs1>>rs2 arithmetic #define SRAW(rd, rs1, rs2) EMIT(R_type(0b0100000, rs2, rs1, 0b101, rd, 0b0111011)) -#define SLLxw(rd, rs1, rs2) \ - if (rex.w) { \ - SLL(rd, rs1, rs2); \ - } else { \ - SLLW(rd, rs1, rs2); \ - ZEROUP(rd); \ - } - -#define SRLxw(rd, rs1, rs2) \ - if (rex.w) { \ - SRL(rd, rs1, rs2); \ - } else { \ - SRLW(rd, rs1, rs2); \ - ZEROUP(rd); \ - } - -#define SRAxw(rd, rs1, rs2) \ - if (rex.w) { \ - SRA(rd, rs1, rs2); \ - } else { \ - SRAW(rd, rs1, rs2); \ - ZEROUP(rd); \ - } +#define SLLxw(rd, rs1, rs2) do { \ + if (rex.w) { \ + SLL(rd, rs1, rs2); \ + } else { \ + SLLW(rd, rs1, rs2); \ + ZEROUP(rd); \ + } } while (0) + +#define SRLxw(rd, rs1, rs2) do { \ + if (rex.w) { \ + SRL(rd, rs1, rs2); \ + } else { \ + SRLW(rd, rs1, rs2); \ + ZEROUP(rd); \ + } } while (0) + +#define SRAxw(rd, rs1, rs2) do { \ + if (rex.w) { \ + SRA(rd, rs1, rs2); \ + } else { \ + SRAW(rd, rs1, rs2); \ + ZEROUP(rd); \ + } } while (0) // Shift Left Immediate, 32-bit, sign-extended #define SLLIW(rd, rs1, imm5) EMIT(I_type(imm5, rs1, 0b001, rd, 0b0011011)) // Shift Left Immediate -#define SLLIxw(rd, rs1, imm) \ - if (rex.w) { \ - SLLI(rd, rs1, imm); \ - } else { \ - SLLIW(rd, rs1, imm); \ - ZEROUP(rd); \ - } +#define SLLIxw(rd, rs1, imm) do { \ + if (rex.w) { \ + SLLI(rd, rs1, imm); \ + } else { \ + SLLIW(rd, rs1, imm); \ + ZEROUP(rd); \ + } } while (0) // Shift Right Logical Immediate, 32-bit, sign-extended #define SRLIW(rd, rs1, imm5) EMIT(I_type(imm5, rs1, 0b101, rd, 0b0011011)) // Shift Right Logical Immediate -#define SRLIxw(rd, rs1, imm) \ +#define SRLIxw(rd, rs1, imm) do { \ if (rex.w) { \ SRLI(rd, rs1, imm); \ } else { \ SRLIW(rd, rs1, imm); \ if ((imm) == 0) ZEROUP(rd); \ - } + } } while (0) // Shift Right Arithmetic Immediate, 32-bit, sign-extended #define SRAIW(rd, rs1, imm5) EMIT(I_type((imm5) | (0b0100000 << 5), rs1, 0b101, rd, 0b0011011)) // Shift Right Arithmetic Immediate -#define SRAIxw(rd, rs1, imm) \ - if (rex.w) { \ - SRAI(rd, rs1, imm); \ - } else { \ - SRAIW(rd, rs1, imm); \ - ZEROUP(rd); \ - } +#define SRAIxw(rd, rs1, imm) do { \ + if (rex.w) { \ + SRAI(rd, rs1, imm); \ + } else { \ + SRAIW(rd, rs1, imm); \ + ZEROUP(rd); \ + } } while (0) #define CSRRW(rd, rs1, csr) EMIT(I_type(csr, rs1, 0b001, rd, 0b1110011)) #define CSRRS(rd, rs1, csr) EMIT(I_type(csr, rs1, 0b010, rd, 0b1110011)) @@ -1243,58 +1243,58 @@ f28–31 ft8–11 FP temporaries Caller #define VLM_V(vd, rs1) EMIT(I_type(0b000000101011, rs1, 0b000, vd, 0b0000111)) // 000000101011.....000.....0000111 #define VSM_V(vs3, rs1) EMIT(I_type(0b000000101011, rs1, 0b000, vs3, 0b0100111)) // 000000101011.....000.....0100111 -#define VLE8_V(vd, rs1, vm, nf) EMIT(I_type((nf << 9) | (vm << 5), rs1, 0b000, vd, 0b0000111)) // ...000.00000.....000.....0000111 -#define VLE16_V(vd, rs1, vm, nf) EMIT(I_type((nf << 9) | (vm << 5), rs1, 0b101, vd, 0b0000111)) // ...000.00000.....101.....0000111 -#define VLE32_V(vd, rs1, vm, nf) EMIT(I_type((nf << 9) | (vm << 5), rs1, 0b110, vd, 0b0000111)) // ...000.00000.....110.....0000111 -#define VLE64_V(vd, rs1, vm, nf) EMIT(I_type((nf << 9) | (vm << 5), rs1, 0b111, vd, 0b0000111)) // ...000.00000.....111.....0000111 -#define VSE8_V(vs3, rs1, vm, nf) EMIT(I_type((nf << 9) | (vm << 5), rs1, 0b000, vs3, 0b0100111)) // ...000.00000.....000.....0100111 -#define VSE16_V(vs3, rs1, vm, nf) EMIT(I_type((nf << 9) | (vm << 5), rs1, 0b101, vs3, 0b0100111)) // ...000.00000.....101.....0100111 -#define VSE32_V(vs3, rs1, vm, nf) EMIT(I_type((nf << 9) | (vm << 5), rs1, 0b110, vs3, 0b0100111)) // ...000.00000.....110.....0100111 -#define VSE64_V(vs3, rs1, vm, nf) EMIT(I_type((nf << 9) | (vm << 5), rs1, 0b111, vs3, 0b0100111)) // ...000.00000.....111.....0100111 +#define VLE8_V(vd, rs1, vm, nf) EMIT(I_type(((nf) << 9) | (vm << 5), rs1, 0b000, vd, 0b0000111)) // ...000.00000.....000.....0000111 +#define VLE16_V(vd, rs1, vm, nf) EMIT(I_type(((nf) << 9) | (vm << 5), rs1, 0b101, vd, 0b0000111)) // ...000.00000.....101.....0000111 +#define VLE32_V(vd, rs1, vm, nf) EMIT(I_type(((nf) << 9) | (vm << 5), rs1, 0b110, vd, 0b0000111)) // ...000.00000.....110.....0000111 +#define VLE64_V(vd, rs1, vm, nf) EMIT(I_type(((nf) << 9) | (vm << 5), rs1, 0b111, vd, 0b0000111)) // ...000.00000.....111.....0000111 +#define VSE8_V(vs3, rs1, vm, nf) EMIT(I_type(((nf) << 9) | (vm << 5), rs1, 0b000, vs3, 0b0100111)) // ...000.00000.....000.....0100111 +#define VSE16_V(vs3, rs1, vm, nf) EMIT(I_type(((nf) << 9) | (vm << 5), rs1, 0b101, vs3, 0b0100111)) // ...000.00000.....101.....0100111 +#define VSE32_V(vs3, rs1, vm, nf) EMIT(I_type(((nf) << 9) | (vm << 5), rs1, 0b110, vs3, 0b0100111)) // ...000.00000.....110.....0100111 +#define VSE64_V(vs3, rs1, vm, nf) EMIT(I_type(((nf) << 9) | (vm << 5), rs1, 0b111, vs3, 0b0100111)) // ...000.00000.....111.....0100111 // Vector Indexed-Unordered Instructions (including segment part) // https://github.com/riscv/riscv-v-spec/blob/master/v-spec.adoc#76-vector-indexed-instructions -#define VLUXEI8_V(vd, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0010, vs2, rs1, 0b000, vd, 0b0000111)) // ...001...........000.....0000111 -#define VLUXEI16_V(vd, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0010, vs2, rs1, 0b101, vd, 0b0000111)) // ...001...........101.....0000111 -#define VLUXEI32_V(vd, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0010, vs2, rs1, 0b110, vd, 0b0000111)) // ...001...........110.....0000111 -#define VLUXEI64_V(vd, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0010, vs2, rs1, 0b111, vd, 0b0000111)) // ...001...........111.....0000111 -#define VSUXEI8_V(vs3, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0010, vs2, rs1, 0b000, vs3, 0b0100111)) // ...001...........000.....0100111 -#define VSUXEI16_V(vs3, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0010, vs2, rs1, 0b101, vs3, 0b0100111)) // ...001...........101.....0100111 -#define VSUXEI32_V(vs3, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0010, vs2, rs1, 0b110, vs3, 0b0100111)) // ...001...........110.....0100111 -#define VSUXEI64_V(vs3, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0010, vs2, rs1, 0b111, vs3, 0b0100111)) // ...001...........111.....0100111 +#define VLUXEI8_V(vd, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0010, vs2, rs1, 0b000, vd, 0b0000111)) // ...001...........000.....0000111 +#define VLUXEI16_V(vd, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0010, vs2, rs1, 0b101, vd, 0b0000111)) // ...001...........101.....0000111 +#define VLUXEI32_V(vd, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0010, vs2, rs1, 0b110, vd, 0b0000111)) // ...001...........110.....0000111 +#define VLUXEI64_V(vd, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0010, vs2, rs1, 0b111, vd, 0b0000111)) // ...001...........111.....0000111 +#define VSUXEI8_V(vs3, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0010, vs2, rs1, 0b000, vs3, 0b0100111)) // ...001...........000.....0100111 +#define VSUXEI16_V(vs3, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0010, vs2, rs1, 0b101, vs3, 0b0100111)) // ...001...........101.....0100111 +#define VSUXEI32_V(vs3, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0010, vs2, rs1, 0b110, vs3, 0b0100111)) // ...001...........110.....0100111 +#define VSUXEI64_V(vs3, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0010, vs2, rs1, 0b111, vs3, 0b0100111)) // ...001...........111.....0100111 // Vector Strided Instructions (including segment part) // https://github.com/riscv/riscv-v-spec/blob/master/v-spec.adoc#75-vector-strided-instructions -#define VLSE8_V(vd, rs1, rs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0100, rs2, rs1, 0b000, vd, 0b0000111)) // ...010...........000.....0000111 -#define VLSE16_V(vd, rs1, rs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0100, rs2, rs1, 0b101, vd, 0b0000111)) // ...010...........101.....0000111 -#define VLSE32_V(vd, rs1, rs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0100, rs2, rs1, 0b110, vd, 0b0000111)) // ...010...........110.....0000111 -#define VLSE64_V(vd, rs1, rs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0100, rs2, rs1, 0b111, vd, 0b0000111)) // ...010...........111.....0000111 -#define VSSE8_V(vs3, rs1, rs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0100, rs2, rs1, 0b000, vs3, 0b0100111)) // ...010...........000.....0100111 -#define VSSE16_V(vs3, rs1, rs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0100, rs2, rs1, 0b101, vs3, 0b0100111)) // ...010...........101.....0100111 -#define VSSE32_V(vs3, rs1, rs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0100, rs2, rs1, 0b110, vs3, 0b0100111)) // ...010...........110.....0100111 -#define VSSE64_V(vs3, rs1, rs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0100, rs2, rs1, 0b111, vs3, 0b0100111)) // ...010...........111.....0100111 +#define VLSE8_V(vd, rs1, rs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0100, rs2, rs1, 0b000, vd, 0b0000111)) // ...010...........000.....0000111 +#define VLSE16_V(vd, rs1, rs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0100, rs2, rs1, 0b101, vd, 0b0000111)) // ...010...........101.....0000111 +#define VLSE32_V(vd, rs1, rs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0100, rs2, rs1, 0b110, vd, 0b0000111)) // ...010...........110.....0000111 +#define VLSE64_V(vd, rs1, rs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0100, rs2, rs1, 0b111, vd, 0b0000111)) // ...010...........111.....0000111 +#define VSSE8_V(vs3, rs1, rs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0100, rs2, rs1, 0b000, vs3, 0b0100111)) // ...010...........000.....0100111 +#define VSSE16_V(vs3, rs1, rs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0100, rs2, rs1, 0b101, vs3, 0b0100111)) // ...010...........101.....0100111 +#define VSSE32_V(vs3, rs1, rs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0100, rs2, rs1, 0b110, vs3, 0b0100111)) // ...010...........110.....0100111 +#define VSSE64_V(vs3, rs1, rs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0100, rs2, rs1, 0b111, vs3, 0b0100111)) // ...010...........111.....0100111 // Vector Indexed-Ordered Instructions (including segment part) // https://github.com/riscv/riscv-v-spec/blob/master/v-spec.adoc#76-vector-indexed-instructions -#define VLOXEI8_V(vd, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0110, vs2, rs1, 0b000, vd, 0b0000111)) // ...011...........000.....0000111 -#define VLOXEI16_V(vd, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0110, vs2, rs1, 0b101, vd, 0b0000111)) // ...011...........101.....0000111 -#define VLOXEI32_V(vd, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0110, vs2, rs1, 0b110, vd, 0b0000111)) // ...011...........110.....0000111 -#define VLOXEI64_V(vd, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0110, vs2, rs1, 0b111, vd, 0b0000111)) // ...011...........111.....0000111 -#define VSOXEI8_V(vs3, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0110, vs2, rs1, 0b000, vs3, 0b0100111)) // ...011...........000.....0100111 -#define VSOXEI16_V(vs3, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0110, vs2, rs1, 0b101, vs3, 0b0100111)) // ...011...........101.....0100111 -#define VSOXEI32_V(vs3, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0110, vs2, rs1, 0b110, vs3, 0b0100111)) // ...011...........110.....0100111 -#define VSOXEI64_V(vs3, rs1, vs2, vm, nf) EMIT(R_type((nf << 4) | (vm) | 0b0110, vs2, rs1, 0b111, vs3, 0b0100111)) // ...011...........111.....0100111 +#define VLOXEI8_V(vd, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0110, vs2, rs1, 0b000, vd, 0b0000111)) // ...011...........000.....0000111 +#define VLOXEI16_V(vd, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0110, vs2, rs1, 0b101, vd, 0b0000111)) // ...011...........101.....0000111 +#define VLOXEI32_V(vd, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0110, vs2, rs1, 0b110, vd, 0b0000111)) // ...011...........110.....0000111 +#define VLOXEI64_V(vd, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0110, vs2, rs1, 0b111, vd, 0b0000111)) // ...011...........111.....0000111 +#define VSOXEI8_V(vs3, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0110, vs2, rs1, 0b000, vs3, 0b0100111)) // ...011...........000.....0100111 +#define VSOXEI16_V(vs3, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0110, vs2, rs1, 0b101, vs3, 0b0100111)) // ...011...........101.....0100111 +#define VSOXEI32_V(vs3, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0110, vs2, rs1, 0b110, vs3, 0b0100111)) // ...011...........110.....0100111 +#define VSOXEI64_V(vs3, rs1, vs2, vm, nf) EMIT(R_type(((nf) << 4) | (vm) | 0b0110, vs2, rs1, 0b111, vs3, 0b0100111)) // ...011...........111.....0100111 // Unit-stride F31..29=0ault-Only-First Loads // https://github.com/riscv/riscv-v-spec/blob/master/v-spec.adoc#77-unit-stride-fault-only-first-loads -#define VLE8FF_V(vd, rs1, vm, nf) EMIT(R_type((nf << 4) | (vm), 0b10000, rs1, 0b000, vd, 0b0000111)) // ...000.10000.....000.....0000111 -#define VLE16FF_V(vd, rs1, vm, nf) EMIT(R_type((nf << 4) | (vm), 0b10000, rs1, 0b101, vd, 0b0000111)) // ...000.10000.....101.....0000111 -#define VLE32FF_V(vd, rs1, vm, nf) EMIT(R_type((nf << 4) | (vm), 0b10000, rs1, 0b110, vd, 0b0000111)) // ...000.10000.....110.....0000111 -#define VLE64FF_V(vd, rs1, vm, nf) EMIT(R_type((nf << 4) | (vm), 0b10000, rs1, 0b111, vd, 0b0000111)) // ...000.10000.....111.....0000111 +#define VLE8FF_V(vd, rs1, vm, nf) EMIT(R_type(((nf) << 4) | (vm), 0b10000, rs1, 0b000, vd, 0b0000111)) // ...000.10000.....000.....0000111 +#define VLE16FF_V(vd, rs1, vm, nf) EMIT(R_type(((nf) << 4) | (vm), 0b10000, rs1, 0b101, vd, 0b0000111)) // ...000.10000.....101.....0000111 +#define VLE32FF_V(vd, rs1, vm, nf) EMIT(R_type(((nf) << 4) | (vm), 0b10000, rs1, 0b110, vd, 0b0000111)) // ...000.10000.....110.....0000111 +#define VLE64FF_V(vd, rs1, vm, nf) EMIT(R_type(((nf) << 4) | (vm), 0b10000, rs1, 0b111, vd, 0b0000111)) // ...000.10000.....111.....0000111 // Vector Load/Store Whole Registers // https://github.com/riscv/riscv-v-spec/blob/master/v-spec.adoc#79-vector-loadstore-whole-register-instructions diff --git a/src/elfs/elfhash.c b/src/elfs/elfhash.c index c0a62b51..fefb0e7f 100644 --- a/src/elfs/elfhash.c +++ b/src/elfs/elfhash.c @@ -325,7 +325,7 @@ Elf64_Sym* ElfSymTabLookup(elfheader_t* h, const char* symname) { if(!h->SymTab) return 0; - for(int i=0; i<h->numSymTab; ++i) { + for(size_t i=0; i<h->numSymTab; ++i) { Elf64_Sym* sym = &h->SymTab[i]; int type = ELF64_ST_TYPE(sym->st_info); if(type==STT_FUNC || type==STT_TLS || type==STT_OBJECT) { @@ -341,7 +341,7 @@ Elf64_Sym* ElfDynSymLookup(elfheader_t* h, const char* symname) { if(!h->DynSym) return 0; - for(int i=0; i<h->numDynSym; ++i) { + for(size_t i=0; i<h->numDynSym; ++i) { Elf64_Sym* sym = &h->DynSym[i]; int type = ELF64_ST_TYPE(sym->st_info); if(type==STT_FUNC || type==STT_TLS || type==STT_OBJECT) { diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index fab47ad6..016ae50b 100644 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -296,7 +296,7 @@ int AllocLoadElfMemory(box64context_t* context, elfheader_t* head, int mainbin) ssize_t new_size = asize + (paddr-new_addr); // so need new_size to compensate while(getProtection(new_addr) && (new_size>0)) {// but then, there might be some overlap uintptr_t diff = ALIGN(new_addr+1) - new_addr; // next page - if(diff<new_size) + if(diff<(size_t)new_size) new_size -= diff; else new_size = 0; @@ -941,7 +941,7 @@ uintptr_t GetLastByte(elfheader_t* h) } #ifndef STB_GNU_UNIQUE -#define STB_GNU_UNIQUE 10 +#define STB_GNU_UNIQUE 10 #endif void checkHookedSymbols(elfheader_t* h); // in mallochook.c diff --git a/src/elfs/elfparser.c b/src/elfs/elfparser.c index 545503c9..49fea7aa 100644 --- a/src/elfs/elfparser.c +++ b/src/elfs/elfparser.c @@ -14,7 +14,7 @@ #define PN_XNUM (0xffff) #endif #ifndef DT_GNU_HASH -#define DT_GNU_HASH 0x6ffffef5 +#define DT_GNU_HASH 0x6ffffef5 #endif int LoadSH(FILE *f, Elf64_Shdr *s, void** SH, const char* name, uint32_t type) @@ -405,4 +405,4 @@ const char* BindSym(int bind) static char tmp[50]; sprintf(tmp, "??? 0x%x", bind); return tmp; -} \ No newline at end of file +} diff --git a/src/emu/x64emu.c b/src/emu/x64emu.c index 227afb55..f0865299 100644 --- a/src/emu/x64emu.c +++ b/src/emu/x64emu.c @@ -38,14 +38,14 @@ typedef struct cleanup_s { static uint32_t x86emu_parity_tab[8] = { - 0x96696996, - 0x69969669, - 0x69969669, - 0x96696996, - 0x69969669, - 0x96696996, - 0x96696996, - 0x69969669, + 0x96696996, + 0x69969669, + 0x69969669, + 0x96696996, + 0x69969669, + 0x96696996, + 0x96696996, + 0x69969669, }; static void internalX64Setup(x64emu_t* emu, box64context_t *context, uintptr_t start, uintptr_t stack, int stacksize, int ownstack) @@ -219,20 +219,20 @@ void FreeX64EmuFromStack(x64emu_t **emu) void CloneEmu(x64emu_t *newemu, const x64emu_t* emu) { - memcpy(newemu->regs, emu->regs, sizeof(emu->regs)); + memcpy(newemu->regs, emu->regs, sizeof(emu->regs)); memcpy(&newemu->ip, &emu->ip, sizeof(emu->ip)); - memcpy(&newemu->eflags, &emu->eflags, sizeof(emu->eflags)); + memcpy(&newemu->eflags, &emu->eflags, sizeof(emu->eflags)); newemu->old_ip = emu->old_ip; memcpy(newemu->segs, emu->segs, sizeof(emu->segs)); memset(newemu->segs_serial, 0, sizeof(newemu->segs_serial)); - memcpy(newemu->x87, emu->x87, sizeof(emu->x87)); - memcpy(newemu->mmx, emu->mmx, sizeof(emu->mmx)); + memcpy(newemu->x87, emu->x87, sizeof(emu->x87)); + memcpy(newemu->mmx, emu->mmx, sizeof(emu->mmx)); memcpy(newemu->fpu_ld, emu->fpu_ld, sizeof(emu->fpu_ld)); memcpy(newemu->fpu_ll, emu->fpu_ll, sizeof(emu->fpu_ll)); newemu->fpu_tags = emu->fpu_tags; - newemu->cw = emu->cw; - newemu->sw = emu->sw; - newemu->top = emu->top; + newemu->cw = emu->cw; + newemu->sw = emu->sw; + newemu->top = emu->top; newemu->fpu_stack = emu->fpu_stack; memcpy(newemu->xmm, emu->xmm, sizeof(emu->xmm)); memcpy(newemu->ymm, emu->ymm, sizeof(emu->ymm)); @@ -254,23 +254,23 @@ void CloneEmu(x64emu_t *newemu, const x64emu_t* emu) void CopyEmu(x64emu_t *newemu, const x64emu_t* emu) { - memcpy(newemu->regs, emu->regs, sizeof(emu->regs)); + memcpy(newemu->regs, emu->regs, sizeof(emu->regs)); memcpy(&newemu->ip, &emu->ip, sizeof(emu->ip)); - memcpy(&newemu->eflags, &emu->eflags, sizeof(emu->eflags)); + memcpy(&newemu->eflags, &emu->eflags, sizeof(emu->eflags)); newemu->old_ip = emu->old_ip; memcpy(newemu->segs, emu->segs, sizeof(emu->segs)); memcpy(newemu->segs_serial, emu->segs_serial, sizeof(emu->segs_serial)); memcpy(newemu->segs_offs, emu->segs_offs, sizeof(emu->segs_offs)); - memcpy(newemu->x87, emu->x87, sizeof(emu->x87)); - memcpy(newemu->mmx, emu->mmx, sizeof(emu->mmx)); + memcpy(newemu->x87, emu->x87, sizeof(emu->x87)); + memcpy(newemu->mmx, emu->mmx, sizeof(emu->mmx)); memcpy(newemu->xmm, emu->xmm, sizeof(emu->xmm)); memcpy(newemu->ymm, emu->ymm, sizeof(emu->ymm)); memcpy(newemu->fpu_ld, emu->fpu_ld, sizeof(emu->fpu_ld)); memcpy(newemu->fpu_ll, emu->fpu_ll, sizeof(emu->fpu_ll)); newemu->fpu_tags = emu->fpu_tags; - newemu->cw = emu->cw; - newemu->sw = emu->sw; - newemu->top = emu->top; + newemu->cw = emu->cw; + newemu->sw = emu->sw; + newemu->top = emu->top; newemu->fpu_stack = emu->fpu_stack; newemu->df = emu->df; newemu->df_sav = emu->df_sav; @@ -623,10 +623,9 @@ static inline uint64_t readCycleCounter() static inline uint64_t readFreq() { static size_t val = -1; - if (val != -1) return val; val = readBinarySizeFromFile("/sys/firmware/devicetree/base/cpus/timebase-frequency"); - if (val != -1) return val; + if (val != (size_t)-1) return val; // fallback to rdtime + sleep struct timespec ts; diff --git a/src/emu/x64emu_private.h b/src/emu/x64emu_private.h index 1d8352fd..bef4a9a4 100644 --- a/src/emu/x64emu_private.h +++ b/src/emu/x64emu_private.h @@ -58,19 +58,19 @@ typedef struct emu_flags_s { typedef struct x64emu_s { // cpu - reg64_t regs[16]; - x64flags_t eflags; + reg64_t regs[16]; + x64flags_t eflags; reg64_t ip; // sse sse_regs_t xmm[16]; sse_regs_t ymm[16]; // fpu / mmx - mmx87_regs_t x87[8]; - mmx87_regs_t mmx[8]; - x87flags_t sw; - uint32_t top; // top is part of sw, but it's faster to have it separately + mmx87_regs_t x87[8]; + mmx87_regs_t mmx[8]; + x87flags_t sw; + uint32_t top; // top is part of sw, but it's faster to have it separately int fpu_stack; - x87control_t cw; + x87control_t cw; uint16_t dummy_cw; // align... mmxcontrol_t mxcsr; #ifdef RV64 // it would be better to use a dedicated register for this like arm64 xSavedSP, but we're running of of free registers. diff --git a/src/emu/x64run.c b/src/emu/x64run.c index 015f2ad1..01eda2a8 100644 --- a/src/emu/x64run.c +++ b/src/emu/x64run.c @@ -65,10 +65,10 @@ int Run(x64emu_t *emu, int step) //ref opcode: http://ref.x64asm.net/geek32.html#xA1 printf_log(LOG_DEBUG, "Run X86 (%p), RIP=%p, Stack=%p is32bits=%d\n", emu, (void*)addr, (void*)R_RSP, is32bits); -x64emurun: #ifdef TEST_INTERPRETER test->memsize = 0; #else +x64emurun: while(1) #endif { @@ -275,7 +275,7 @@ x64emurun: goto fini; } break; - case 0x2E: /* segments are ignored */ + case 0x2E: /* segments are ignored */ case 0x26: case 0x36: /* SS: (ignored) */ break; diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index aacf2768..84ed4e25 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -26,23 +26,23 @@ static uint8_t ff_mult(uint8_t a, uint8_t b) { - int retval = 0; + int retval = 0; - for(int i = 0; i < 8; i++) { - if((b & 1) == 1) - retval ^= a; + for(int i = 0; i < 8; i++) { + if((b & 1) == 1) + retval ^= a; - if((a & 0x80)) { - a <<= 1; - a ^= 0x1b; - } else { - a <<= 1; - } + if((a & 0x80)) { + a <<= 1; + a ^= 0x1b; + } else { + a <<= 1; + } - b >>= 1; - } + b >>= 1; + } - return retval; + return retval; } #ifdef TEST_INTERPRETER @@ -816,7 +816,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) nextop = F8; GETED(0); GETGD; - CHECK_FLAGS(emu); + CHECK_FLAGS(emu); if(rex.w) { if (ACCESS_FLAG(F_CF)) { tmp64u = 1 + (GD->q[0] & 0xFFFFFFFF) + (ED->q[0] & 0xFFFFFFFF); @@ -834,7 +834,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) GD->q[0] = 1LL + GD->dword[0] + ED->dword[0]; else GD->q[0] = (uint64_t)GD->dword[0] + ED->dword[0]; - CONDITIONAL_SET_FLAG(GD->q[0] & 0x100000000LL, F_CF); + CONDITIONAL_SET_FLAG(GD->q[0] & 0x100000000LL, F_CF); } break; default: diff --git a/src/emu/x64run66f0.c b/src/emu/x64run66f0.c index 9c29bd30..7e6fc5db 100644 --- a/src/emu/x64run66f0.c +++ b/src/emu/x64run66f0.c @@ -139,6 +139,7 @@ uintptr_t Run66F0(x64emu_t *emu, rex_t rex, uintptr_t addr) GETEW(0); \ GETGW; \ GW->word[0] = OP##16(emu, GW->word[0], EW->word[0]); \ + break; \ case B+5: \ R_AX = OP##16(emu, R_AX, F16); \ break; diff --git a/src/emu/x64run_private.c b/src/emu/x64run_private.c index 195fb275..74df225c 100644 --- a/src/emu/x64run_private.c +++ b/src/emu/x64run_private.c @@ -26,7 +26,7 @@ #include "bridge.h" #define PARITY(x) (((emu->x64emu_parity_tab[(x) / 32] >> ((x) % 32)) & 1) == 0) -#define XOR2(x) (((x) ^ ((x)>>1)) & 0x1) +#define XOR2(x) (((x) ^ ((x)>>1)) & 0x1) #ifdef ANDROID void EXPORT my___libc_init(x64emu_t* emu, void* raw_args , void (*onexit)(void) , int (*main)(int, char**, char**), void const * const structors ) @@ -865,29 +865,29 @@ void UpdateFlags(x64emu_t *emu) CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); break; case d_cmp32: - CONDITIONAL_SET_FLAG(emu->res.u32 & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(!emu->res.u32, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(emu->res.u32 & 0xff), F_PF); - bc = (emu->res.u32 & (~emu->op1.u32 | emu->op2.u32)) | (~emu->op1.u32 & emu->op2.u32); - CONDITIONAL_SET_FLAG(bc & 0x80000000, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 30), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); + CONDITIONAL_SET_FLAG(emu->res.u32 & 0x80000000, F_SF); + CONDITIONAL_SET_FLAG(!emu->res.u32, F_ZF); + CONDITIONAL_SET_FLAG(PARITY(emu->res.u32 & 0xff), F_PF); + bc = (emu->res.u32 & (~emu->op1.u32 | emu->op2.u32)) | (~emu->op1.u32 & emu->op2.u32); + CONDITIONAL_SET_FLAG(bc & 0x80000000, F_CF); + CONDITIONAL_SET_FLAG(XOR2(bc >> 30), F_OF); + CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); break; case d_cmp64: - CONDITIONAL_SET_FLAG(emu->res.u64 & 0x8000000000000000LL, F_SF); - CONDITIONAL_SET_FLAG(!emu->res.u64, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(emu->res.u64 & 0xff), F_PF); - bc = (emu->res.u64 & (~emu->op1.u64 | emu->op2.u64)) | (~emu->op1.u64 & emu->op2.u64); - CONDITIONAL_SET_FLAG(bc & 0x8000000000000000LL, F_CF); - CONDITIONAL_SET_FLAG(XOR2(bc >> 62), F_OF); - CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); + CONDITIONAL_SET_FLAG(emu->res.u64 & 0x8000000000000000LL, F_SF); + CONDITIONAL_SET_FLAG(!emu->res.u64, F_ZF); + CONDITIONAL_SET_FLAG(PARITY(emu->res.u64 & 0xff), F_PF); + bc = (emu->res.u64 & (~emu->op1.u64 | emu->op2.u64)) | (~emu->op1.u64 & emu->op2.u64); + CONDITIONAL_SET_FLAG(bc & 0x8000000000000000LL, F_CF); + CONDITIONAL_SET_FLAG(XOR2(bc >> 62), F_OF); + CONDITIONAL_SET_FLAG(bc & 0x8, F_AF); break; case d_tst8: - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(emu->res.u8 & 0x80, F_SF); - CONDITIONAL_SET_FLAG(emu->res.u8 == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(emu->res.u8 & 0xff), F_PF); - CLEAR_FLAG(F_CF); + CLEAR_FLAG(F_OF); + CONDITIONAL_SET_FLAG(emu->res.u8 & 0x80, F_SF); + CONDITIONAL_SET_FLAG(emu->res.u8 == 0, F_ZF); + CONDITIONAL_SET_FLAG(PARITY(emu->res.u8 & 0xff), F_PF); + CLEAR_FLAG(F_CF); break; case d_tst16: CLEAR_FLAG(F_OF); @@ -897,18 +897,18 @@ void UpdateFlags(x64emu_t *emu) CLEAR_FLAG(F_CF); break; case d_tst32: - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(emu->res.u32 & 0x80000000, F_SF); - CONDITIONAL_SET_FLAG(emu->res.u32 == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(emu->res.u32 & 0xff), F_PF); - CLEAR_FLAG(F_CF); + CLEAR_FLAG(F_OF); + CONDITIONAL_SET_FLAG(emu->res.u32 & 0x80000000, F_SF); + CONDITIONAL_SET_FLAG(emu->res.u32 == 0, F_ZF); + CONDITIONAL_SET_FLAG(PARITY(emu->res.u32 & 0xff), F_PF); + CLEAR_FLAG(F_CF); break; case d_tst64: - CLEAR_FLAG(F_OF); - CONDITIONAL_SET_FLAG(emu->res.u64 & 0x8000000000000000LL, F_SF); - CONDITIONAL_SET_FLAG(emu->res.u64 == 0, F_ZF); - CONDITIONAL_SET_FLAG(PARITY(emu->res.u64 & 0xff), F_PF); - CLEAR_FLAG(F_CF); + CLEAR_FLAG(F_OF); + CONDITIONAL_SET_FLAG(emu->res.u64 & 0x8000000000000000LL, F_SF); + CONDITIONAL_SET_FLAG(emu->res.u64 == 0, F_ZF); + CONDITIONAL_SET_FLAG(PARITY(emu->res.u64 & 0xff), F_PF); + CLEAR_FLAG(F_CF); break; case d_adc8: CONDITIONAL_SET_FLAG(emu->res.u16 & 0x100, F_CF); @@ -1007,25 +1007,25 @@ void UpdateFlags(x64emu_t *emu) if(emu->op2.u8 == 1) { CONDITIONAL_SET_FLAG((emu->res.u8 + (emu->res.u8 >> 7)) & 1, F_OF); } - CONDITIONAL_SET_FLAG(emu->res.u8 & 0x1, F_CF); + CONDITIONAL_SET_FLAG(emu->res.u8 & 0x1, F_CF); break; case d_rol16: if(emu->op2.u16 == 1) { CONDITIONAL_SET_FLAG((emu->res.u16 + (emu->res.u16 >> 15)) & 1, F_OF); } - CONDITIONAL_SET_FLAG(emu->res.u16 & 0x1, F_CF); + CONDITIONAL_SET_FLAG(emu->res.u16 & 0x1, F_CF); break; case d_rol32: if(emu->op2.u32 == 1) { CONDITIONAL_SET_FLAG((emu->res.u32 + (emu->res.u32 >> 31)) & 1, F_OF); } - CONDITIONAL_SET_FLAG(emu->res.u32 & 0x1, F_CF); + CONDITIONAL_SET_FLAG(emu->res.u32 & 0x1, F_CF); break; case d_rol64: if(emu->op2.u64 == 1) { CONDITIONAL_SET_FLAG((emu->res.u64 + (emu->res.u64 >> 63)) & 1, F_OF); } - CONDITIONAL_SET_FLAG(emu->res.u64 & 0x1, F_CF); + CONDITIONAL_SET_FLAG(emu->res.u64 & 0x1, F_CF); break; case d_ror8: if(emu->op2.u8 == 1) { diff --git a/src/emu/x64runavx0f38.c b/src/emu/x64runavx0f38.c index 995c57f7..11e324c9 100644 --- a/src/emu/x64runavx0f38.c +++ b/src/emu/x64runavx0f38.c @@ -145,11 +145,11 @@ uintptr_t RunAVX_0F38(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) tmp32u = VD->byte[0]; // start if(rex.w) { GD->q[0] = ED->q[0]; - if(tmp32u<64) GD->q[0] &= ~((-1LL<<tmp32u)); + if(tmp32u<64) GD->q[0] &= ~((((uint64_t)-1)<<tmp32u)); CONDITIONAL_SET_FLAG((tmp32u>63), F_CF); } else { GD->q[0] = ED->dword[0]; - if(tmp32u<32) GD->dword[0] &= ~((-1<<tmp32u)); + if(tmp32u<32) GD->dword[0] &= ~((((uint64_t)-1)<<tmp32u)); CONDITIONAL_SET_FLAG((tmp32u>31), F_CF); } CONDITIONAL_SET_FLAG(rex.w?(GD->q[0]==0):(GD->dword[0]==0), F_ZF); diff --git a/src/emu/x64runavx660f.c b/src/emu/x64runavx660f.c index 1844e1f3..071547eb 100644 --- a/src/emu/x64runavx660f.c +++ b/src/emu/x64runavx660f.c @@ -963,7 +963,7 @@ uintptr_t RunAVX_660F(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) switch((nextop>>3)&7) { case 2: /* VPSRLQ Vx, Ex, Ib */ tmp8u = F8; - if(tmp8u>63) VX->u128; + if(tmp8u>63) VX->u128 = 0; else {VX->q[0] = EX->q[0] >> tmp8u; VX->q[1] = EX->q[1] >> tmp8u;} if(vex.l) { diff --git a/src/emu/x64runavx660f38.c b/src/emu/x64runavx660f38.c index 5ececcb4..084a3234 100644 --- a/src/emu/x64runavx660f38.c +++ b/src/emu/x64runavx660f38.c @@ -32,23 +32,23 @@ static uint8_t ff_mult(uint8_t a, uint8_t b) { - int retval = 0; + int retval = 0; - for(int i = 0; i < 8; i++) { - if((b & 1) == 1) - retval ^= a; + for(int i = 0; i < 8; i++) { + if((b & 1) == 1) + retval ^= a; - if((a & 0x80)) { - a <<= 1; - a ^= 0x1b; - } else { - a <<= 1; - } + if((a & 0x80)) { + a <<= 1; + a ^= 0x1b; + } else { + a <<= 1; + } - b >>= 1; - } + b >>= 1; + } - return retval; + return retval; } #ifdef TEST_INTERPRETER diff --git a/src/emu/x64runavx660f3a.c b/src/emu/x64runavx660f3a.c index a8f213d6..4a5ea456 100644 --- a/src/emu/x64runavx660f3a.c +++ b/src/emu/x64runavx660f3a.c @@ -527,7 +527,7 @@ uintptr_t RunAVX_660F3A(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) tmp8u = F8; if(tmp8u&1) { GY->u128 = EX->u128; - if(GX!=VX); + if(GX!=VX) GX->u128 = VX->u128; } else { GX->u128 = EX->u128; @@ -625,7 +625,7 @@ uintptr_t RunAVX_660F3A(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) tmp8u = F8; if(tmp8u&1) { GY->u128 = EX->u128; - if(GX!=VX); + if(GX!=VX) GX->u128 = VX->u128; } else { GX->u128 = EX->u128; diff --git a/src/emu/x64runavxf30f38.c b/src/emu/x64runavxf30f38.c index 62d8513c..a2ed5225 100644 --- a/src/emu/x64runavxf30f38.c +++ b/src/emu/x64runavxf30f38.c @@ -70,14 +70,14 @@ uintptr_t RunAVX_F30F38(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) for(int i=0; i<64; ++i) if(ED->q[0]&(1LL<<i)) tmp64u |= ((VD->q[0]>>i)&1LL)<<(u8++); - GD->q[0] = tmp64u; + GD->q[0] = tmp64u; } else { tmp32u = 0; u8 = 0; for(int i=0; i<32; ++i) if(ED->dword[0]&(1<<i)) tmp32u |= ((VD->dword[0]>>i)&1)<<(u8++); - GD->q[0] = tmp32u; + GD->q[0] = tmp32u; } break; case 0xF7: /* SARX Gd, Ed, Vd */ diff --git a/src/emu/x64runf0.c b/src/emu/x64runf0.c index c44100c5..0f6c9297 100644 --- a/src/emu/x64runf0.c +++ b/src/emu/x64runf0.c @@ -963,8 +963,8 @@ uintptr_t RunF0(x64emu_t *emu, rex_t rex, uintptr_t addr) case 0: if(((uintptr_t)ED)&3) { // unaligned case do { tmp32u2 = native_lock_read_b(ED); tmp32u2=ED->dword[0]; tmp32u2 = add32(emu, tmp32u2, tmp64u);} while(native_lock_write_b(ED, tmp32u2)); ED->dword[0]=tmp32u2; break; - } else - do { tmp32u2 = native_lock_read_d(ED); tmp32u2 = add32(emu, tmp32u2, tmp64u);} while(native_lock_write_d(ED, tmp32u2)); break; + } else { + do { tmp32u2 = native_lock_read_d(ED); tmp32u2 = add32(emu, tmp32u2, tmp64u);} while(native_lock_write_d(ED, tmp32u2)); break; } case 1: do { tmp32u2 = native_lock_read_d(ED); tmp32u2 = or32(emu, tmp32u2, tmp64u);} while(native_lock_write_d(ED, tmp32u2)); break; case 2: do { tmp32u2 = native_lock_read_d(ED); tmp32u2 = adc32(emu, tmp32u2, tmp64u);} while(native_lock_write_d(ED, tmp32u2)); break; case 3: do { tmp32u2 = native_lock_read_d(ED); tmp32u2 = sbb32(emu, tmp32u2, tmp64u);} while(native_lock_write_d(ED, tmp32u2)); break; @@ -972,8 +972,8 @@ uintptr_t RunF0(x64emu_t *emu, rex_t rex, uintptr_t addr) case 5: if(((uintptr_t)ED)&3) { // unaligned case do { tmp32u2 = native_lock_read_b(ED); tmp32u2=ED->dword[0]; tmp32u2 = sub32(emu, tmp32u2, tmp64u);} while(native_lock_write_b(ED, tmp32u2)); ED->dword[0]=tmp32u2; break; - } else - do { tmp32u2 = native_lock_read_d(ED); tmp32u2 = sub32(emu, tmp32u2, tmp64u);} while(native_lock_write_d(ED, tmp32u2)); break; + } else { + do { tmp32u2 = native_lock_read_d(ED); tmp32u2 = sub32(emu, tmp32u2, tmp64u);} while(native_lock_write_d(ED, tmp32u2)); break; } case 6: do { tmp32u2 = native_lock_read_d(ED); tmp32u2 = xor32(emu, tmp32u2, tmp64u);} while(native_lock_write_d(ED, tmp32u2)); break; case 7: cmp32(emu, ED->dword[0], tmp64u); break; } diff --git a/src/emu/x64syscall.c b/src/emu/x64syscall.c index 5875c40f..9e30045e 100644 --- a/src/emu/x64syscall.c +++ b/src/emu/x64syscall.c @@ -367,23 +367,23 @@ typedef struct old_utsname_s { } old_utsname_t; //struct x86_pt_regs { -// long ebx; -// long ecx; -// long edx; -// long esi; -// long edi; -// long ebp; -// long eax; -// int xds; -// int xes; -// int xfs; -// int xgs; -// long orig_eax; -// long eip; -// int xcs; -// long eflags; -// long esp; -// int xss; +// long ebx; +// long ecx; +// long edx; +// long esi; +// long edi; +// long ebp; +// long eax; +// int xds; +// int xes; +// int xfs; +// int xgs; +// long orig_eax; +// long eip; +// int xcs; +// long eflags; +// long esp; +// int xss; //}; static int clone_fn(void* arg) @@ -657,11 +657,11 @@ void EXPORT x64Syscall(x64emu_t *emu) break; #endif #ifndef __NR_rename - case 82: // sys_rename - S_RAX = rename((void*)R_RDI, (void*)R_RSI); + case 82: // sys_rename + S_RAX = rename((void*)R_RDI, (void*)R_RSI); if(S_RAX==-1) S_RAX = -errno; - break; + break; #endif #ifndef __NR_mkdir case 83: // sys_mkdir diff --git a/src/emu/x64test.c b/src/emu/x64test.c index 49bd09cf..95021ca4 100644 --- a/src/emu/x64test.c +++ b/src/emu/x64test.c @@ -55,7 +55,7 @@ void x64test_check(x64emu_t* ref, uintptr_t ip) printf_log(LOG_NONE, "RIP: %016zx | %016zx\n", ip, emu->ip.q[0]); } // flags are volatile, so don't test them - //memcpy(&ref->eflags, &emu->eflags, sizeof(emu->eflags)); + //memcpy(&ref->eflags, &emu->eflags, sizeof(emu->eflags)); if(memcmp(ref->segs, emu->segs, sizeof(emu->segs))) { static const char* segname[] = {"ES", "CS", "SS", "DS", "FS", "GS"}; BANNER; @@ -73,7 +73,7 @@ void x64test_check(x64emu_t* ref, uintptr_t ip) BANNER; printf_log(LOG_NONE, "X87 STACK: %d | %d\n", ref->fpu_stack, emu->fpu_stack); } - if(ref->fpu_stack && memcmp(ref->x87, emu->x87, sizeof(emu->x87))) { + if(ref->fpu_stack && memcmp(ref->x87, emu->x87, sizeof(emu->x87))) { // need to check each regs, unused one might have different left over value for(int i=0; i<ref->fpu_stack; ++i) { if(ref->x87[(ref->top+i)&7].d != emu->x87[(emu->top+i)&7].d) { @@ -84,19 +84,19 @@ void x64test_check(x64emu_t* ref, uintptr_t ip) } //memcpy(ref->fpu_ld, emu->fpu_ld, sizeof(emu->fpu_ld)); //memcpy(ref->fpu_ll, emu->fpu_ll, sizeof(emu->fpu_ll)); - if(ref->fpu_tags != emu->fpu_tags) { + if(ref->fpu_tags != emu->fpu_tags) { BANNER; printf_log(LOG_NONE, "X87 TAGS: %x | %x\n", ref->fpu_tags, emu->fpu_tags); } - if(ref->cw.x16 != emu->cw.x16) { + if(ref->cw.x16 != emu->cw.x16) { BANNER; printf_log(LOG_NONE, "X87 CW: %x | %x\n", ref->cw.x16, emu->cw.x16); } - if(ref->sw.x16 != emu->sw.x16) { + if(ref->sw.x16 != emu->sw.x16) { BANNER; printf_log(LOG_NONE, "X87 SW: %x | %x\n", ref->sw.x16, emu->sw.x16); } - if(memcmp(ref->mmx, emu->mmx, sizeof(emu->mmx))) { + if(memcmp(ref->mmx, emu->mmx, sizeof(emu->mmx))) { BANNER; for(int i=0; i<8; ++i) { if(ref->mmx[i].q!=emu->mmx[i].q) { @@ -183,4 +183,4 @@ void x64test_init() pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK); pthread_mutex_init(&mutex_global_test, &attr); pthread_mutexattr_destroy(&attr); -} \ No newline at end of file +} diff --git a/src/emu/x64tls.c b/src/emu/x64tls.c index ead82248..78f83c74 100644 --- a/src/emu/x64tls.c +++ b/src/emu/x64tls.c @@ -146,17 +146,17 @@ int my_arch_prctl(x64emu_t *emu, int code, void* addr) { printf_log(LOG_DEBUG, "%04d| arch_prctl(%s, %p) (RSP=%p, FS=0x%x, GS=0x%x)\n", GetTID(), arch_prctl_param(code), addr,(void*)R_RSP, emu->segs[_FS], emu->segs[_GS]); - #define ARCH_SET_GS 0x1001 - #define ARCH_SET_FS 0x1002 - #define ARCH_GET_FS 0x1003 - #define ARCH_GET_GS 0x1004 - #define ARCH_GET_CPUID 0x1011 - #define ARCH_SET_CPUID 0x1012 - #define ARCH_GET_XCOMP_SUPP 0x1021 - #define ARCH_GET_XCOMP_PERM 0x1022 - #define ARCH_REQ_XCOMP_PERM 0x1023 - #define ARCH_GET_XCOMP_GUEST_PERM 0x1024 - #define ARCH_REQ_XCOMP_GUEST_PERM 0x1025 + #define ARCH_SET_GS 0x1001 + #define ARCH_SET_FS 0x1002 + #define ARCH_GET_FS 0x1003 + #define ARCH_GET_GS 0x1004 + #define ARCH_GET_CPUID 0x1011 + #define ARCH_SET_CPUID 0x1012 + #define ARCH_GET_XCOMP_SUPP 0x1021 + #define ARCH_GET_XCOMP_PERM 0x1022 + #define ARCH_REQ_XCOMP_PERM 0x1023 + #define ARCH_GET_XCOMP_GUEST_PERM 0x1024 + #define ARCH_REQ_XCOMP_GUEST_PERM 0x1025 int seg = 0; int idx = 0; errno = 0; diff --git a/src/emu/x86syscall.c b/src/emu/x86syscall.c index b3f7287f..1d28a989 100755 --- a/src/emu/x86syscall.c +++ b/src/emu/x86syscall.c @@ -182,23 +182,23 @@ struct mmap_arg_struct { #undef st_mtime struct x64_pt_regs { - long ebx; - long ecx; - long edx; - long esi; - long edi; - long ebp; - long eax; - int xds; - int xes; - int xfs; - int xgs; - long orig_eax; - long eip; - int xcs; - long eflags; - long esp; - int xss; + long ebx; + long ecx; + long edx; + long esi; + long edi; + long ebp; + long eax; + int xds; + int xes; + int xfs; + int xgs; + long orig_eax; + long eip; + int xcs; + long eflags; + long esp; + int xss; }; #ifndef __NR_olduname diff --git a/src/emu/x87emu_private.c b/src/emu/x87emu_private.c index 9164ea30..c54f80d5 100644 --- a/src/emu/x87emu_private.c +++ b/src/emu/x87emu_private.c @@ -85,22 +85,22 @@ void LD2D(void* ld, void* d) *(uint64_t*)d = *(uint64_t*)ld; return; } - FPU_t result; + FPU_t result; #pragma pack(push, 1) - struct { - FPU_t f; - int16_t b; - } val; + struct { + FPU_t f; + int16_t b; + } val; #pragma pack(pop) #if 1 memcpy(&val, ld, 10); #else - val.f.ud[0] = *(uint32_t*)ld; + val.f.ud[0] = *(uint32_t*)ld; val.f.ud[1] = *(uint32_t*)(char*)(ld+4); - val.b = *(int16_t*)((char*)ld+8); + val.b = *(int16_t*)((char*)ld+8); #endif - int32_t exp64 = (((uint32_t)(val.b&0x7fff) - BIAS80) + BIAS64); - int32_t exp64final = exp64&0x7ff; + int32_t exp64 = (((uint32_t)(val.b&0x7fff) - BIAS80) + BIAS64); + int32_t exp64final = exp64&0x7ff; // do specific value first (0, infinite...) // bit 63 is "integer part" // bit 62 is sign @@ -157,12 +157,12 @@ void LD2D(void* ld, void* d) return; } - uint64_t mant64 = (val.f.q >> 11) & 0xfffffffffffffL; - uint32_t sign = (val.b&0x8000)?1:0; + uint64_t mant64 = (val.f.q >> 11) & 0xfffffffffffffL; + uint32_t sign = (val.b&0x8000)?1:0; result.q = mant64; - result.ud[1] |= (sign <<31)|((exp64final&0x7ff) << 20); + result.ud[1] |= (sign <<31)|((exp64final&0x7ff) << 20); - *(uint64_t*)d = result.q; + *(uint64_t*)d = result.q; } // double (64bits) -> long double (80bits) @@ -173,10 +173,10 @@ void D2LD(void* d, void* ld) return; } #pragma pack(push, 1) - struct { - FPU_t f; - int16_t b; - } val; + struct { + FPU_t f; + int16_t b; + } val; #pragma pack(pop) FPU_t s; s.q = *(uint64_t*)d; // use memcpy to avoid risk of Bus Error? @@ -192,11 +192,11 @@ void D2LD(void* d, void* ld) return; } - int32_t sign80 = (s.ud[1]&0x80000000)?1:0; - int32_t exp80 = s.ud[1]&0x7ff00000; - int32_t exp80final = (exp80>>20); - uint64_t mant80 = s.q&0x000fffffffffffffL; - uint64_t mant80final = (mant80 << 11); + int32_t sign80 = (s.ud[1]&0x80000000)?1:0; + int32_t exp80 = s.ud[1]&0x7ff00000; + int32_t exp80final = (exp80>>20); + uint64_t mant80 = s.q&0x000fffffffffffffL; + uint64_t mant80final = (mant80 << 11); if(exp80final==0x7ff) { // NaN and Infinite exp80final = 0x7fff; @@ -216,8 +216,8 @@ void D2LD(void* d, void* ld) mant80final<<=one; } } - val.b = ((int16_t)(sign80)<<15)| (int16_t)(exp80final); - val.f.q = mant80final; + val.b = ((int16_t)(sign80)<<15)| (int16_t)(exp80final); + val.f.q = mant80final; memcpy(ld, &val, 10); /*memcpy(ld, &f.ll, 8); memcpy((char*)ld + 8, &val.b, 2);*/ diff --git a/src/emu/x87emu_private.h b/src/emu/x87emu_private.h index b77e416b..74758acf 100644 --- a/src/emu/x87emu_private.h +++ b/src/emu/x87emu_private.h @@ -9,11 +9,11 @@ #include "debug.h" typedef struct x64emu_s x64emu_t; -#define PI 3.14159265358979323846 -#define L2E 1.4426950408889634 -#define L2T 3.3219280948873623 -#define LN2 0.69314718055994531 -#define LG2 0.3010299956639812 +#define PI 3.14159265358979323846 +#define L2E 1.4426950408889634 +#define L2T 3.3219280948873623 +#define LN2 0.69314718055994531 +#define LG2 0.3010299956639812 #define TAGS_EMPTY 0b1111111111111111 diff --git a/src/libtools/myalign.c b/src/libtools/myalign.c index dfa4c0ca..123aa651 100644 --- a/src/libtools/myalign.c +++ b/src/libtools/myalign.c @@ -516,7 +516,7 @@ void UnalignStat64(const void* source, void* dest) struct stat *st = (struct stat*) source; x64st->__pad0 = 0; - memset(x64st->__glibc_reserved, 0, sizeof(x64st->__glibc_reserved)); + memset(x64st->__glibc_reserved, 0, sizeof(x64st->__glibc_reserved)); x64st->st_dev = st->st_dev; x64st->st_ino = st->st_ino; x64st->st_mode = st->st_mode; diff --git a/src/libtools/obstack.c b/src/libtools/obstack.c index b3f2fc57..08719adb 100644 --- a/src/libtools/obstack.c +++ b/src/libtools/obstack.c @@ -110,11 +110,11 @@ static void* reverse_freefunFct(library_t* lib, void* fct) #if 0 struct i386_obstack { - long chunk_size; + long chunk_size; struct _obstack_chunk *chunk; - char *object_base; - char *next_free; - char *chunk_limit; + char *object_base; + char *next_free; + char *chunk_limit; union { uintptr_t tempint; diff --git a/src/libtools/signals.c b/src/libtools/signals.c index 1f86f0f8..3bb2bc0c 100644 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -532,7 +532,7 @@ void adjustregs(x64emu_t* emu) { } ++idx; } - dynarec_log(LOG_INFO, "Checking opcode: rex=%02hhx is32bits=%d, is66=%d %02hhX %02hhX %02hhX %02hhX\n", rex.rex, rex.is32bits, is66, mem[idx+0], mem[idx+1], mem[idx+2], mem[idx+3]); + dynarec_log(LOG_INFO, "Checking opcode: rex=%02hhx is32bits=%d, rep=%d is66=%d %02hhX %02hhX %02hhX %02hhX\n", rex.rex, rex.is32bits, rep, is66, mem[idx+0], mem[idx+1], mem[idx+2], mem[idx+3]); #ifdef DYNAREC #ifdef ARM64 if(mem[idx+0]==0xA4) { diff --git a/src/libtools/static_libc.h b/src/libtools/static_libc.h index c5dd8a59..802d8dc3 100644 --- a/src/libtools/static_libc.h +++ b/src/libtools/static_libc.h @@ -278,12 +278,12 @@ extern size_t __strtoul_internal(void*, void*, int, int); extern uint64_t __strtoull_internal(void*, void*, int, int); extern size_t __strtoull_l(void*, void*, int, void*); extern size_t __strxfrm_l(void*, void*, size_t, size_t); -//extern void svc_exit(void); -//extern void svc_getreq(int); -//extern void svc_getreq_common(int); -//extern void svc_getreq_poll(struct pollfd *, int); -//extern void svc_run(void); -//extern void svc_unregister(u_long, u_long); +//extern void svc_exit(void); +//extern void svc_getreq(int); +//extern void svc_getreq_common(int); +//extern void svc_getreq_poll(struct pollfd *, int); +//extern void svc_run(void); +//extern void svc_unregister(u_long, u_long); //extern int __sysctl(void*, int, void*, void*, void*, size_t); //extern int sysctl(void*, int, void*, void*, void*, size_t); extern void thrd_exit(void*); @@ -316,4 +316,4 @@ extern char *__xpg_basename(char *__path); //extern int xdr_void(); void* dummy_pFLp(size_t a, void* b) {} void* dummy_pFpLLp(void* a, size_t b, size_t c, void* d) {} -void* dummy__ZnwmSt11align_val_tRKSt9nothrow_t(size_t a, size_t b, void* c) {} \ No newline at end of file +void* dummy__ZnwmSt11align_val_tRKSt9nothrow_t(size_t a, size_t b, void* c) {} diff --git a/src/tools/bridge.c b/src/tools/bridge.c index 1c935cd1..1c5bde99 100644 --- a/src/tools/bridge.c +++ b/src/tools/bridge.c @@ -99,7 +99,7 @@ uintptr_t AddBridge(bridge_t* bridge, wrapper_t w, void* fnc, int N, const char* mutex_lock(&my_context->mutex_bridge); b = bridge->last; - if(b->sz == NBRICK) { + if(b->sz == (int)NBRICK) { b->next = NewBrick(b->b); b = b->next; bridge->last = b; @@ -202,7 +202,7 @@ uintptr_t AddVSyscall(bridge_t* bridge, int num) int sz = -1; mutex_lock(&my_context->mutex_bridge); b = bridge->last; - if(b->sz == NBRICK) { + if(b->sz == (int)NBRICK) { b->next = NewBrick(b->b); b = b->next; bridge->last = b; diff --git a/src/tools/my_cpuid.c b/src/tools/my_cpuid.c index 65a21a1a..48a163aa 100644 --- a/src/tools/my_cpuid.c +++ b/src/tools/my_cpuid.c @@ -11,7 +11,7 @@ int get_cpuMhz() { - int MHz = 0; + int MHz = 0; char *p = NULL; if((p=getenv("BOX64_CPUMHZ"))) { MHz = atoi(p); @@ -69,11 +69,11 @@ int get_cpuMhz() } } #endif - if(!MHz) - MHz = 1000; // default to 1Ghz... + if(!MHz) + MHz = 1000; // default to 1Ghz... sprintf(cpumhz, "%d", MHz); setenv("BOX64_CPUMHZ", cpumhz, 1); // set actual value - return MHz; + return MHz; } static int nCPU = 0; static double bogoMips = 100.; diff --git a/src/wrapped/wrappedfaudio.c b/src/wrapped/wrappedfaudio.c index c5007302..5f3246fb 100644 --- a/src/wrapped/wrappedfaudio.c +++ b/src/wrapped/wrappedfaudio.c @@ -166,9 +166,9 @@ static void* find_OnProcessingPassStartFunc_Fct(void* fct) } typedef struct my_FAudioEngineCallback_s { - void* OnCriticalError; - void* OnProcessingPassEnd; - void* OnProcessingPassStart; + void* OnCriticalError; + void* OnProcessingPassEnd; + void* OnProcessingPassStart; } my_FAudioEngineCallback_t; // OnBufferEndFunc ... #define GO(A) \ @@ -326,13 +326,13 @@ static void* find_OnVoiceProcessingPassStartFunc_Fct(void* fct) } typedef struct my_FAudioVoiceCallback_s { - void* OnBufferEnd; - void* OnBufferStart; - void* OnLoopEnd; - void* OnStreamEnd; - void* OnVoiceError; - void* OnVoiceProcessingPassEnd; - void* OnVoiceProcessingPassStart; + void* OnBufferEnd; + void* OnBufferStart; + void* OnLoopEnd; + void* OnStreamEnd; + void* OnVoiceError; + void* OnVoiceProcessingPassEnd; + void* OnVoiceProcessingPassStart; } my_FAudioVoiceCallback_t; // FAudioEngineCallEXT ... #define GO(A) \ diff --git a/src/wrapped/wrappedfreetype.c b/src/wrapped/wrappedfreetype.c index f1bec4f9..7e02db0b 100644 --- a/src/wrapped/wrappedfreetype.c +++ b/src/wrapped/wrappedfreetype.c @@ -20,7 +20,7 @@ const char* freetypeName = #ifdef ANDROID - "libfreetype.so" + "libfreetype.so" #else "libfreetype.so.6" #endif diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 7a3964b8..b27e931b 100644 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -2798,7 +2798,7 @@ EXPORT int my_readlinkat(x64emu_t* emu, int fd, void* path, void* buf, size_t bu return readlinkat(fd, path, buf, bufsize); } #ifndef MAP_FIXED_NOREPLACE -#define MAP_FIXED_NOREPLACE 0x200000 +#define MAP_FIXED_NOREPLACE 0x200000 #endif #ifndef MAP_32BIT #define MAP_32BIT 0x40 @@ -3174,9 +3174,9 @@ EXPORT int my_setrlimit(x64emu_t* emu, int ressource, const struct rlimit *rlim) #if 0 #ifdef PANDORA -#define RENAME_NOREPLACE (1 << 0) -#define RENAME_EXCHANGE (1 << 1) -#define RENAME_WHITEOUT (1 << 2) +#define RENAME_NOREPLACE (1 << 0) +#define RENAME_EXCHANGE (1 << 1) +#define RENAME_WHITEOUT (1 << 2) EXPORT int my_renameat2(int olddirfd, void* oldpath, int newdirfd, void* newpath, uint32_t flags) { // simulate that function, but @@ -3209,8 +3209,8 @@ EXPORT int my_renameat2(int olddirfd, void* oldpath, int newdirfd, void* newpath #endif #ifndef __NR_memfd_create -#define MFD_CLOEXEC 0x0001U -#define MFD_ALLOW_SEALING 0x0002U +#define MFD_CLOEXEC 0x0001U +#define MFD_ALLOW_SEALING 0x0002U EXPORT int my_memfd_create(x64emu_t* emu, void* name, uint32_t flags) { // try to simulate that function @@ -3225,7 +3225,7 @@ EXPORT int my_memfd_create(x64emu_t* emu, void* name, uint32_t flags) #endif #ifndef GRND_RANDOM -#define GRND_RANDOM 0x0002 +#define GRND_RANDOM 0x0002 #endif EXPORT int my_getentropy(x64emu_t* emu, void* buffer, size_t length) { diff --git a/src/wrapped/wrappedlibsm.c b/src/wrapped/wrappedlibsm.c index aaf84234..c4c80ac2 100644 --- a/src/wrapped/wrappedlibsm.c +++ b/src/wrapped/wrappedlibsm.c @@ -27,29 +27,29 @@ const char* libsmName = "libSM.so.6"; typedef struct my_SmcCallbacks_s { struct { - void* callback; - void* client_data; + void* callback; + void* client_data; } save_yourself; struct { - void* callback; - void* client_data; + void* callback; + void* client_data; } die; struct { - void* callback; - void* client_data; + void* callback; + void* client_data; } save_complete; struct { - void* callback; - void* client_data; + void* callback; + void* client_data; } shutdown_cancelled; } my_SmcCallbacks_t; -#define SmcSaveYourselfProcMask (1L << 0) -#define SmcDieProcMask (1L << 1) -#define SmcSaveCompleteProcMask (1L << 2) -#define SmcShutdownCancelledProcMask (1L << 3) +#define SmcSaveYourselfProcMask (1L << 0) +#define SmcDieProcMask (1L << 1) +#define SmcSaveCompleteProcMask (1L << 2) +#define SmcShutdownCancelledProcMask (1L << 3) static uintptr_t my_save_yourself_fct = 0; static void my_save_yourself(void* smcConn, void* clientData, int saveType, int shutdown, int interactStyle, int fast) diff --git a/src/wrapped/wrappedlibx11_private.h b/src/wrapped/wrappedlibx11_private.h index a382161f..9cf69529 100644 --- a/src/wrapped/wrappedlibx11_private.h +++ b/src/wrapped/wrappedlibx11_private.h @@ -944,7 +944,7 @@ GO(XSetIconName, iFppp) GO(XSetIconSizes, iFpLpi) GOM(XSetICValues, pFEpV) // use vaarg //GO(_XSetImage, -GOM(XSetIMValues, pFEpV) // use vaarg +GOM(XSetIMValues, pFEpV) // use vaarg GO(XSetInputFocus, iFpLiL) GOM(XSetIOErrorHandler, pFEp) GO(_XSetLastRequestRead, uFpp) diff --git a/src/wrapped/wrappedlzma.c b/src/wrapped/wrappedlzma.c index 387208f0..19f9ad9f 100644 --- a/src/wrapped/wrappedlzma.c +++ b/src/wrapped/wrappedlzma.c @@ -26,30 +26,30 @@ const char* lzmaName = "liblzma.so.5"; #include "wrappercallback.h" typedef struct lzma_allocator_s { - void *(*alloc)(void *opaque, size_t nmemb, size_t size); - void (*free)(void *opaque, void *ptr); - void *opaque; + void *(*alloc)(void *opaque, size_t nmemb, size_t size); + void (*free)(void *opaque, void *ptr); + void *opaque; } lzma_allocator_t; typedef struct lzma_stream_s { - const uint8_t *next_in; - size_t avail_in; - uint64_t total_in; - uint8_t *next_out; - size_t avail_out; - uint64_t total_out; - lzma_allocator_t *allocator; - void* internal; - void *reserved_ptr1; - void *reserved_ptr2; - void *reserved_ptr3; - void *reserved_ptr4; - uint64_t reserved_int1; - uint64_t reserved_int2; - size_t reserved_int3; - size_t reserved_int4; - int reserved_enum1; - int reserved_enum2; + const uint8_t *next_in; + size_t avail_in; + uint64_t total_in; + uint8_t *next_out; + size_t avail_out; + uint64_t total_out; + lzma_allocator_t *allocator; + void* internal; + void *reserved_ptr1; + void *reserved_ptr2; + void *reserved_ptr3; + void *reserved_ptr4; + uint64_t reserved_int1; + uint64_t reserved_int2; + size_t reserved_int3; + size_t reserved_int4; + int reserved_enum1; + int reserved_enum2; } lzma_stream_t; #define SUPER() \ diff --git a/src/wrapped/wrappedpulse_private.h b/src/wrapped/wrappedpulse_private.h index d9e55623..fed2e1aa 100644 --- a/src/wrapped/wrappedpulse_private.h +++ b/src/wrapped/wrappedpulse_private.h @@ -293,7 +293,7 @@ GO(pa_xrealloc, pFpL) GO(pa_xstrdup, pFp) GO(pa_xstrndup, pFpL) -GO(pa_stream_begin_write, iFppp) // 0.9.16+ +GO(pa_stream_begin_write, iFppp) // 0.9.16+ GO(pa_stream_cancel_write, iFp) // 0.9.16+ GO(dummy_io_new, pFpiipp) // dumy function to create Wrapper diff --git a/src/wrapped/wrappedsdl2.c b/src/wrapped/wrappedsdl2.c index 299237f2..33cbfab6 100644 --- a/src/wrapped/wrappedsdl2.c +++ b/src/wrapped/wrappedsdl2.c @@ -661,19 +661,19 @@ EXPORT void* my2_SDL_GL_GetProcAddress(x64emu_t* emu, void* name) return getGLProcAddress(emu, (glprocaddress_t)my->SDL_GL_GetProcAddress, rname); } -#define nb_once 16 +#define nb_once 16 typedef void(*sdl2_tls_dtor)(void*); static uintptr_t dtor_emu[nb_once] = {0}; static void tls_dtor_callback(int n, void* a) { - if(dtor_emu[n]) { + if(dtor_emu[n]) { RunFunctionFmt(dtor_emu[n], "p", a); - } + } } #define GO(N) \ void tls_dtor_callback_##N(void* a) \ { \ - tls_dtor_callback(N, a); \ + tls_dtor_callback(N, a); \ } GO(0) @@ -694,26 +694,26 @@ GO(14) GO(15) #undef GO static const sdl2_tls_dtor dtor_cb[nb_once] = { - tls_dtor_callback_0, tls_dtor_callback_1, tls_dtor_callback_2, tls_dtor_callback_3 - ,tls_dtor_callback_4, tls_dtor_callback_5, tls_dtor_callback_6, tls_dtor_callback_7 - ,tls_dtor_callback_8, tls_dtor_callback_9, tls_dtor_callback_10,tls_dtor_callback_11 - ,tls_dtor_callback_12,tls_dtor_callback_13,tls_dtor_callback_14,tls_dtor_callback_15 + tls_dtor_callback_0, tls_dtor_callback_1, tls_dtor_callback_2, tls_dtor_callback_3 + ,tls_dtor_callback_4, tls_dtor_callback_5, tls_dtor_callback_6, tls_dtor_callback_7 + ,tls_dtor_callback_8, tls_dtor_callback_9, tls_dtor_callback_10,tls_dtor_callback_11 + ,tls_dtor_callback_12,tls_dtor_callback_13,tls_dtor_callback_14,tls_dtor_callback_15 }; EXPORT int64_t my2_SDL_TLSSet(x64emu_t* emu, uint64_t id, void* value, void* dtor) { - if(!dtor) - return my->SDL_TLSSet(id, value, NULL); - int n = 0; - while (n<nb_once) { - if(!dtor_emu[n] || (dtor_emu[n])==((uintptr_t)dtor)) { - dtor_emu[n] = (uintptr_t)dtor; - return my->SDL_TLSSet(id, value, dtor_cb[n]); - } - ++n; - } - printf_log(LOG_NONE, "Error: SDL2 SDL_TLSSet with destructor: no more slot!\n"); - //emu->quit = 1; - return -1; + if(!dtor) + return my->SDL_TLSSet(id, value, NULL); + int n = 0; + while (n<nb_once) { + if(!dtor_emu[n] || (dtor_emu[n])==((uintptr_t)dtor)) { + dtor_emu[n] = (uintptr_t)dtor; + return my->SDL_TLSSet(id, value, dtor_cb[n]); + } + ++n; + } + printf_log(LOG_NONE, "Error: SDL2 SDL_TLSSet with destructor: no more slot!\n"); + //emu->quit = 1; + return -1; } EXPORT void my2_SDL_AddEventWatch(x64emu_t* emu, void* p, void* userdata) diff --git a/src/wrapped/wrappedwaylandclient.c b/src/wrapped/wrappedwaylandclient.c index 416dbf4c..4fe3b8f6 100644 --- a/src/wrapped/wrappedwaylandclient.c +++ b/src/wrapped/wrappedwaylandclient.c @@ -41,11 +41,11 @@ typedef struct my_wl_registry_listener_s { } my_wl_registry_listener_t; #define GO(A) \ static my_wl_registry_listener_t* ref_wl_registry_listener_##A = NULL; \ -static void* my_wl_registry_listener_global_##A(void* a, void* b, uint32_t c, void* d, uint32_t e) \ +static void my_wl_registry_listener_global_##A(void* a, void* b, uint32_t c, void* d, uint32_t e) \ { \ RunFunctionFmt(ref_wl_registry_listener_##A->global, "ppupu", a, b, c, d, e); \ } \ -static void* my_wl_registry_listener_global_remove_##A(void* a, void* b, uint32_t c) \ +static void my_wl_registry_listener_global_remove_##A(void* a, void* b, uint32_t c) \ { \ RunFunctionFmt(ref_wl_registry_listener_##A->global_remove, "ppu", a, b, c); \ } \ @@ -74,11 +74,11 @@ typedef struct my_xdg_surface_listener_s { } my_xdg_surface_listener_t; #define GO(A) \ static my_xdg_surface_listener_t* ref_xdg_surface_listener_##A = NULL; \ -static void* my_xdg_surface_listener_configure_##A(void* a, void* b, int c, int d, void* e, uint32_t f) \ +static void my_xdg_surface_listener_configure_##A(void* a, void* b, int c, int d, void* e, uint32_t f) \ { \ RunFunctionFmt(ref_xdg_surface_listener_##A->configure, "ppiipu", a, b, c, d, e, f); \ } \ -static void* my_xdg_surface_listener_close_##A(void* a, void* b) \ +static void my_xdg_surface_listener_close_##A(void* a, void* b) \ { \ RunFunctionFmt(ref_xdg_surface_listener_##A->close, "pp", a, b); \ } \ @@ -106,18 +106,18 @@ typedef struct my_xdg_toplevel_listener_s { uintptr_t close; //vFpp } my_xdg_toplevel_listener_t; #define GO(A) \ -static my_xdg_toplevel_listener_t* ref_xdg_toplevel_listener_##A = NULL; \ -static void* my_xdg_toplevel_listener_configure_##A(void* a, void* b, int c, int d, void* e) \ -{ \ - RunFunctionFmt(ref_xdg_toplevel_listener_##A->configure, "ppiip", a, b, c, d, e); \ -} \ -static void* my_xdg_toplevel_listener_close_##A(void* a, void* b) \ -{ \ - RunFunctionFmt(ref_xdg_toplevel_listener_##A->close, "pp", a, b); \ -} \ -static my_xdg_toplevel_listener_t my_xdg_toplevel_listener_fct_##A = { \ - (uintptr_t)my_xdg_toplevel_listener_configure_##A, \ - (uintptr_t)my_xdg_toplevel_listener_close_##A \ +static my_xdg_toplevel_listener_t* ref_xdg_toplevel_listener_##A = NULL; \ +static void my_xdg_toplevel_listener_configure_##A(void* a, void* b, int c, int d, void* e) \ +{ \ + RunFunctionFmt(ref_xdg_toplevel_listener_##A->configure, "ppiip", a, b, c, d, e); \ +} \ +static void my_xdg_toplevel_listener_close_##A(void* a, void* b) \ +{ \ + RunFunctionFmt(ref_xdg_toplevel_listener_##A->close, "pp", a, b); \ +} \ +static my_xdg_toplevel_listener_t my_xdg_toplevel_listener_fct_##A = { \ + (uintptr_t)my_xdg_toplevel_listener_configure_##A, \ + (uintptr_t)my_xdg_toplevel_listener_close_##A \ }; SUPER() #undef GO @@ -138,13 +138,13 @@ typedef struct my_xdg_wm_base_listener_s { uintptr_t ping; //vFppu } my_xdg_wm_base_listener_t; #define GO(A) \ -static my_xdg_wm_base_listener_t* ref_xdg_wm_base_listener_##A = NULL; \ -static void* my_xdg_wm_base_listener_ping_##A(void* a, void* b, uint32_t c) \ -{ \ - RunFunctionFmt(ref_xdg_wm_base_listener_##A->ping, "ppu", a, b, c); \ -} \ -static my_xdg_wm_base_listener_t my_xdg_wm_base_listener_fct_##A = { \ - (uintptr_t)my_xdg_wm_base_listener_ping_##A, \ +static my_xdg_wm_base_listener_t* ref_xdg_wm_base_listener_##A = NULL; \ +static void my_xdg_wm_base_listener_ping_##A(void* a, void* b, uint32_t c) \ +{ \ + RunFunctionFmt(ref_xdg_wm_base_listener_##A->ping, "ppu", a, b, c); \ +} \ +static my_xdg_wm_base_listener_t my_xdg_wm_base_listener_fct_##A = { \ + (uintptr_t)my_xdg_wm_base_listener_ping_##A, \ }; SUPER() #undef GO @@ -165,13 +165,13 @@ typedef struct my_wl_shm_listener_s { uintptr_t format; //vFppu } my_wl_shm_listener_t; #define GO(A) \ -static my_wl_shm_listener_t* ref_wl_shm_listener_##A = NULL; \ -static void* my_wl_shm_listener_format_##A(void* a, void* b, uint32_t c) \ -{ \ - RunFunctionFmt(ref_wl_shm_listener_##A->format, "ppu", a, b, c); \ -} \ -static my_wl_shm_listener_t my_wl_shm_listener_fct_##A = { \ - (uintptr_t)my_wl_shm_listener_format_##A, \ +static my_wl_shm_listener_t* ref_wl_shm_listener_##A = NULL; \ +static void my_wl_shm_listener_format_##A(void* a, void* b, uint32_t c) \ +{ \ + RunFunctionFmt(ref_wl_shm_listener_##A->format, "ppu", a, b, c); \ +} \ +static my_wl_shm_listener_t my_wl_shm_listener_fct_##A = { \ + (uintptr_t)my_wl_shm_listener_format_##A, \ }; SUPER() #undef GO @@ -197,38 +197,38 @@ typedef struct my_wl_output_listener_s { uintptr_t description; //vFppp } my_wl_output_listener_t; #define GO(A) \ -static my_wl_output_listener_t* ref_wl_output_listener_##A = NULL; \ -static void* my_wl_output_listener_geometry_##A(void* a, void* b, int c, int d, int e, int f, int g, void* h, void* i, int j)\ -{ \ - RunFunctionFmt(ref_wl_output_listener_##A->geometry, "ppiiiiippi", a, b, c, d, e, f, g, h, i, j); \ -} \ -static void* my_wl_output_listener_mode_##A(void* a, void* b, uint32_t c, int d, int e, int f) \ -{ \ - RunFunctionFmt(ref_wl_output_listener_##A->mode, "ppuiii", a, b, c, d, e, f); \ -} \ -static void* my_wl_output_listener_done_##A(void* a, void* b) \ -{ \ - RunFunctionFmt(ref_wl_output_listener_##A->done, "pp", a, b); \ -} \ -static void* my_wl_output_listener_scale_##A(void* a, void* b, int c) \ -{ \ - RunFunctionFmt(ref_wl_output_listener_##A->scale, "ppi", a, b, c); \ -} \ -static void* my_wl_output_listener_name_##A(void* a, void* b, void* c) \ -{ \ - RunFunctionFmt(ref_wl_output_listener_##A->name, "ppp", a, b, c); \ -} \ -static void* my_wl_output_listener_description_##A(void* a, void* b, void* c) \ -{ \ - RunFunctionFmt(ref_wl_output_listener_##A->description, "ppp", a, b, c); \ -} \ -static my_wl_output_listener_t my_wl_output_listener_fct_##A = { \ - (uintptr_t)my_wl_output_listener_geometry_##A, \ - (uintptr_t)my_wl_output_listener_mode_##A, \ - (uintptr_t)my_wl_output_listener_done_##A, \ - (uintptr_t)my_wl_output_listener_scale_##A, \ - (uintptr_t)my_wl_output_listener_name_##A, \ - (uintptr_t)my_wl_output_listener_description_##A \ +static my_wl_output_listener_t* ref_wl_output_listener_##A = NULL; \ +static void my_wl_output_listener_geometry_##A(void* a, void* b, int c, int d, int e, int f, int g, void* h, void* i, int j) \ +{ \ + RunFunctionFmt(ref_wl_output_listener_##A->geometry, "ppiiiiippi", a, b, c, d, e, f, g, h, i, j); \ +} \ +static void my_wl_output_listener_mode_##A(void* a, void* b, uint32_t c, int d, int e, int f) \ +{ \ + RunFunctionFmt(ref_wl_output_listener_##A->mode, "ppuiii", a, b, c, d, e, f); \ +} \ +static void my_wl_output_listener_done_##A(void* a, void* b) \ +{ \ + RunFunctionFmt(ref_wl_output_listener_##A->done, "pp", a, b); \ +} \ +static void my_wl_output_listener_scale_##A(void* a, void* b, int c) \ +{ \ + RunFunctionFmt(ref_wl_output_listener_##A->scale, "ppi", a, b, c); \ +} \ +static void my_wl_output_listener_name_##A(void* a, void* b, void* c) \ +{ \ + RunFunctionFmt(ref_wl_output_listener_##A->name, "ppp", a, b, c); \ +} \ +static void my_wl_output_listener_description_##A(void* a, void* b, void* c) \ +{ \ + RunFunctionFmt(ref_wl_output_listener_##A->description, "ppp", a, b, c); \ +} \ +static my_wl_output_listener_t my_wl_output_listener_fct_##A = { \ + (uintptr_t)my_wl_output_listener_geometry_##A, \ + (uintptr_t)my_wl_output_listener_mode_##A, \ + (uintptr_t)my_wl_output_listener_done_##A, \ + (uintptr_t)my_wl_output_listener_scale_##A, \ + (uintptr_t)my_wl_output_listener_name_##A, \ + (uintptr_t)my_wl_output_listener_description_##A \ }; SUPER() #undef GO @@ -250,18 +250,18 @@ typedef struct my_wl_seat_listener_s { uintptr_t name; //vFppp } my_wl_seat_listener_t; #define GO(A) \ -static my_wl_seat_listener_t* ref_wl_seat_listener_##A = NULL; \ -static void* my_wl_seat_listener_capabilities_##A(void* a, void* b, uint32_t c) \ -{ \ - RunFunctionFmt(ref_wl_seat_listener_##A->capabilities, "ppu", a, b, c); \ -} \ -static void* my_wl_seat_listener_name_##A(void* a, void* b, void* c) \ -{ \ - RunFunctionFmt(ref_wl_seat_listener_##A->name, "ppp", a, b, c); \ -} \ -static my_wl_seat_listener_t my_wl_seat_listener_fct_##A = { \ - (uintptr_t)my_wl_seat_listener_capabilities_##A, \ - (uintptr_t)my_wl_seat_listener_name_##A \ +static my_wl_seat_listener_t* ref_wl_seat_listener_##A = NULL; \ +static void my_wl_seat_listener_capabilities_##A(void* a, void* b, uint32_t c) \ +{ \ + RunFunctionFmt(ref_wl_seat_listener_##A->capabilities, "ppu", a, b, c); \ +} \ +static void my_wl_seat_listener_name_##A(void* a, void* b, void* c) \ +{ \ + RunFunctionFmt(ref_wl_seat_listener_##A->name, "ppp", a, b, c); \ +} \ +static my_wl_seat_listener_t my_wl_seat_listener_fct_##A = { \ + (uintptr_t)my_wl_seat_listener_capabilities_##A, \ + (uintptr_t)my_wl_seat_listener_name_##A \ }; SUPER() #undef GO @@ -292,63 +292,63 @@ typedef struct my_wl_pointer_listener_s { uintptr_t axis_relative_direction; //vFppuu } my_wl_pointer_listener_t; #define GO(A) \ -static my_wl_pointer_listener_t* ref_wl_pointer_listener_##A = NULL; \ -static void* my_wl_pointer_listener_enter_##A(void* a, void* b, uint32_t c, void* d, int e, int f) \ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->enter, "ppupii", a, b, c, d, e, f); \ -} \ -static void* my_wl_pointer_listener_leave_##A(void* a, void* b, uint32_t c, void* d) \ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->leave, "ppup", a, b, c, d); \ -} \ -static void* my_wl_pointer_listener_motion_##A(void* a, void* b, uint32_t c, int d, int e) \ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->motion, "ppuii", a, b, c, d, e); \ -} \ -static void* my_wl_pointer_listener_button_##A(void* a, void* b, uint32_t c, uint32_t d, uint32_t e, uint32_t f)\ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->button, "ppuuuu", a, b, c, d, e, f); \ -} \ -static void* my_wl_pointer_listener_axis_##A(void* a, void* b, uint32_t c, uint32_t d, int e) \ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->axis, "ppuui", a, b, c, d, e); \ -} \ -static void* my_wl_pointer_listener_frame_##A(void* a, void* b) \ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->frame, "pp", a, b); \ -} \ -static void* my_wl_pointer_listener_axis_source_##A(void* a, void* b, uint32_t c) \ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->axis_source, "ppu", a, b, c); \ -} \ -static void* my_wl_pointer_listener_axis_stop_##A(void* a, void* b, uint32_t c, uint32_t d) \ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->axis_stop, "ppuu", a, b, c, d); \ -} \ -static void* my_wl_pointer_listener_axis_discrete_##A(void* a, void* b, uint32_t c, int d) \ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->axis_discrete, "ppui", a, b, c, d); \ -} \ -static void* my_wl_pointer_listener_axis_value120_##A(void* a, void* b, uint32_t c, int d) \ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->axis_value120, "ppui", a, b, c, d); \ -} \ -static void* my_wl_pointer_listener_axis_relative_direction_##A(void* a, void* b, uint32_t c, uint32_t d)\ -{ \ - RunFunctionFmt(ref_wl_pointer_listener_##A->axis_relative_direction, "ppuu", a, b, c, d); \ -} \ -static my_wl_pointer_listener_t my_wl_pointer_listener_fct_##A = { \ - (uintptr_t)my_wl_pointer_listener_enter_##A, \ - (uintptr_t)my_wl_pointer_listener_leave_##A, \ - (uintptr_t)my_wl_pointer_listener_motion_##A, \ - (uintptr_t)my_wl_pointer_listener_button_##A, \ - (uintptr_t)my_wl_pointer_listener_axis_##A, \ - (uintptr_t)my_wl_pointer_listener_frame_##A, \ - (uintptr_t)my_wl_pointer_listener_axis_source_##A, \ - (uintptr_t)my_wl_pointer_listener_axis_stop_##A, \ - (uintptr_t)my_wl_pointer_listener_axis_discrete_##A, \ - (uintptr_t)my_wl_pointer_listener_axis_value120_##A, \ - (uintptr_t)my_wl_pointer_listener_axis_relative_direction_##A \ +static my_wl_pointer_listener_t* ref_wl_pointer_listener_##A = NULL; \ +static void my_wl_pointer_listener_enter_##A(void* a, void* b, uint32_t c, void* d, int e, int f) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->enter, "ppupii", a, b, c, d, e, f); \ +} \ +static void my_wl_pointer_listener_leave_##A(void* a, void* b, uint32_t c, void* d) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->leave, "ppup", a, b, c, d); \ +} \ +static void my_wl_pointer_listener_motion_##A(void* a, void* b, uint32_t c, int d, int e) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->motion, "ppuii", a, b, c, d, e); \ +} \ +static void my_wl_pointer_listener_button_##A(void* a, void* b, uint32_t c, uint32_t d, uint32_t e, uint32_t f) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->button, "ppuuuu", a, b, c, d, e, f); \ +} \ +static void my_wl_pointer_listener_axis_##A(void* a, void* b, uint32_t c, uint32_t d, int e) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->axis, "ppuui", a, b, c, d, e); \ +} \ +static void my_wl_pointer_listener_frame_##A(void* a, void* b) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->frame, "pp", a, b); \ +} \ +static void my_wl_pointer_listener_axis_source_##A(void* a, void* b, uint32_t c) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->axis_source, "ppu", a, b, c); \ +} \ +static void my_wl_pointer_listener_axis_stop_##A(void* a, void* b, uint32_t c, uint32_t d) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->axis_stop, "ppuu", a, b, c, d); \ +} \ +static void my_wl_pointer_listener_axis_discrete_##A(void* a, void* b, uint32_t c, int d) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->axis_discrete, "ppui", a, b, c, d); \ +} \ +static void my_wl_pointer_listener_axis_value120_##A(void* a, void* b, uint32_t c, int d) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->axis_value120, "ppui", a, b, c, d); \ +} \ +static void my_wl_pointer_listener_axis_relative_direction_##A(void* a, void* b, uint32_t c, uint32_t d) \ +{ \ + RunFunctionFmt(ref_wl_pointer_listener_##A->axis_relative_direction, "ppuu", a, b, c, d); \ +} \ +static my_wl_pointer_listener_t my_wl_pointer_listener_fct_##A = { \ + (uintptr_t)my_wl_pointer_listener_enter_##A, \ + (uintptr_t)my_wl_pointer_listener_leave_##A, \ + (uintptr_t)my_wl_pointer_listener_motion_##A, \ + (uintptr_t)my_wl_pointer_listener_button_##A, \ + (uintptr_t)my_wl_pointer_listener_axis_##A, \ + (uintptr_t)my_wl_pointer_listener_frame_##A, \ + (uintptr_t)my_wl_pointer_listener_axis_source_##A, \ + (uintptr_t)my_wl_pointer_listener_axis_stop_##A, \ + (uintptr_t)my_wl_pointer_listener_axis_discrete_##A, \ + (uintptr_t)my_wl_pointer_listener_axis_value120_##A, \ + (uintptr_t)my_wl_pointer_listener_axis_relative_direction_##A \ }; SUPER() #undef GO @@ -374,38 +374,38 @@ typedef struct my_wl_keyboard_listener_s { uintptr_t repeat_info; //vFppii } my_wl_keyboard_listener_t; #define GO(A) \ -static my_wl_keyboard_listener_t* ref_wl_keyboard_listener_##A = NULL; \ -static void* my_wl_keyboard_listener_keymap_##A(void* a, void* b, uint32_t c, int d, uint32_t e) \ -{ \ - RunFunctionFmt(ref_wl_keyboard_listener_##A->keymap, "ppuiu", a, b, c, d, e); \ -} \ -static void* my_wl_keyboard_listener_enter_##A(void* a, void* b, uint32_t c, void* d) \ -{ \ - RunFunctionFmt(ref_wl_keyboard_listener_##A->enter, "ppup", a, b, c, d); \ -} \ -static void* my_wl_keyboard_listener_leave_##A(void* a, void* b, uint32_t c, void* d) \ -{ \ - RunFunctionFmt(ref_wl_keyboard_listener_##A->leave, "ppup", a, b, c, d); \ -} \ -static void* my_wl_keyboard_listener_key_##A(void* a, void* b, uint32_t c, uint32_t d, uint32_t e, uint32_t f, uint32_t g)\ -{ \ - RunFunctionFmt(ref_wl_keyboard_listener_##A->key, "ppuuuuu", a, b, c, d, e, f, g); \ -} \ -static void* my_wl_keyboard_listener_modifiers_##A(void* a, void* b, uint32_t c, uint32_t d, uint32_t e, uint32_t f, uint32_t g)\ -{ \ - RunFunctionFmt(ref_wl_keyboard_listener_##A->modifiers, "ppuuuuu", a, b, c, d, e, f, g); \ -} \ -static void* my_wl_keyboard_listener_repeat_info_##A(void* a, void* b, int c, int d) \ -{ \ - RunFunctionFmt(ref_wl_keyboard_listener_##A->repeat_info, "ppii", a, b, c, d); \ -} \ -static my_wl_keyboard_listener_t my_wl_keyboard_listener_fct_##A = { \ - (uintptr_t)my_wl_keyboard_listener_keymap_##A, \ - (uintptr_t)my_wl_keyboard_listener_enter_##A, \ - (uintptr_t)my_wl_keyboard_listener_leave_##A, \ - (uintptr_t)my_wl_keyboard_listener_key_##A, \ - (uintptr_t)my_wl_keyboard_listener_modifiers_##A, \ - (uintptr_t)my_wl_keyboard_listener_repeat_info_##A \ +static my_wl_keyboard_listener_t* ref_wl_keyboard_listener_##A = NULL; \ +static void my_wl_keyboard_listener_keymap_##A(void* a, void* b, uint32_t c, int d, uint32_t e) \ +{ \ + RunFunctionFmt(ref_wl_keyboard_listener_##A->keymap, "ppuiu", a, b, c, d, e); \ +} \ +static void my_wl_keyboard_listener_enter_##A(void* a, void* b, uint32_t c, void* d) \ +{ \ + RunFunctionFmt(ref_wl_keyboard_listener_##A->enter, "ppup", a, b, c, d); \ +} \ +static void my_wl_keyboard_listener_leave_##A(void* a, void* b, uint32_t c, void* d) \ +{ \ + RunFunctionFmt(ref_wl_keyboard_listener_##A->leave, "ppup", a, b, c, d); \ +} \ +static void my_wl_keyboard_listener_key_##A(void* a, void* b, uint32_t c, uint32_t d, uint32_t e, uint32_t f, uint32_t g) \ +{ \ + RunFunctionFmt(ref_wl_keyboard_listener_##A->key, "ppuuuuu", a, b, c, d, e, f, g); \ +} \ +static void my_wl_keyboard_listener_modifiers_##A(void* a, void* b, uint32_t c, uint32_t d, uint32_t e, uint32_t f, uint32_t g) \ +{ \ + RunFunctionFmt(ref_wl_keyboard_listener_##A->modifiers, "ppuuuuu", a, b, c, d, e, f, g); \ +} \ +static void my_wl_keyboard_listener_repeat_info_##A(void* a, void* b, int c, int d) \ +{ \ + RunFunctionFmt(ref_wl_keyboard_listener_##A->repeat_info, "ppii", a, b, c, d); \ +} \ +static my_wl_keyboard_listener_t my_wl_keyboard_listener_fct_##A = { \ + (uintptr_t)my_wl_keyboard_listener_keymap_##A, \ + (uintptr_t)my_wl_keyboard_listener_enter_##A, \ + (uintptr_t)my_wl_keyboard_listener_leave_##A, \ + (uintptr_t)my_wl_keyboard_listener_key_##A, \ + (uintptr_t)my_wl_keyboard_listener_modifiers_##A, \ + (uintptr_t)my_wl_keyboard_listener_repeat_info_##A \ }; SUPER() #undef GO @@ -426,13 +426,13 @@ typedef struct my_wl_buffer_listener_s { uintptr_t release; //vFpp } my_wl_buffer_listener_t; #define GO(A) \ -static my_wl_buffer_listener_t* ref_wl_buffer_listener_##A = NULL; \ -static void* my_wl_buffer_listener_release_##A(void* a, void* b) \ -{ \ - RunFunctionFmt(ref_wl_buffer_listener_##A->release, "pp", a, b); \ -} \ -static my_wl_buffer_listener_t my_wl_buffer_listener_fct_##A = { \ - (uintptr_t)my_wl_buffer_listener_release_##A, \ +static my_wl_buffer_listener_t* ref_wl_buffer_listener_##A = NULL; \ +static void my_wl_buffer_listener_release_##A(void* a, void* b) \ +{ \ + RunFunctionFmt(ref_wl_buffer_listener_##A->release, "pp", a, b); \ +} \ +static my_wl_buffer_listener_t my_wl_buffer_listener_fct_##A = { \ + (uintptr_t)my_wl_buffer_listener_release_##A, \ }; SUPER() #undef GO @@ -454,7 +454,7 @@ typedef struct my_zwp_relative_pointer_v1_listener_s { } my_zwp_relative_pointer_v1_listener_t; #define GO(A) \ static my_zwp_relative_pointer_v1_listener_t* ref_zwp_relative_pointer_v1_listener_##A = NULL; \ -static void* my_zwp_relative_pointer_v1_listener_relative_motion_##A(void* a, void* b, uint32_t c, uint32_t d, int e, int f, int g, int h) \ +static void my_zwp_relative_pointer_v1_listener_relative_motion_##A(void* a, void* b, uint32_t c, uint32_t d, int e, int f, int g, int h) \ { \ RunFunctionFmt(ref_zwp_relative_pointer_v1_listener_##A->relative_motion, "ppuuiiii", a, b, c, d, e, f, g, h); \ } \ @@ -484,33 +484,33 @@ typedef struct my_zxdg_output_v1_listener_s { uintptr_t description; //vFppp } my_zxdg_output_v1_listener_t; #define GO(A) \ -static my_zxdg_output_v1_listener_t* ref_zxdg_output_v1_listener_##A = NULL; \ -static void* my_zxdg_output_v1_listener_logical_position_##A(void* a, void* b, int32_t c, int32_t d) \ -{ \ - RunFunctionFmt(ref_zxdg_output_v1_listener_##A->logical_position, "ppii", a, b, c, d); \ -} \ -static void* my_zxdg_output_v1_listener_logical_size_##A(void* a, void* b, int32_t c, int32_t d) \ -{ \ - RunFunctionFmt(ref_zxdg_output_v1_listener_##A->logical_size, "ppii", a, b, c, d); \ -} \ -static void* my_zxdg_output_v1_listener_done_##A(void* a, void* b) \ -{ \ - RunFunctionFmt(ref_zxdg_output_v1_listener_##A->done, "pp", a, b); \ -} \ -static void* my_zxdg_output_v1_listener_name_##A(void* a, void* b, void* c) \ -{ \ - RunFunctionFmt(ref_zxdg_output_v1_listener_##A->name, "ppp", a, b, c); \ -} \ -static void* my_zxdg_output_v1_listener_description_##A(void* a, void* b, void* c) \ -{ \ - RunFunctionFmt(ref_zxdg_output_v1_listener_##A->description, "ppp", a, b, c); \ -} \ -static my_zxdg_output_v1_listener_t my_zxdg_output_v1_listener_fct_##A = { \ - (uintptr_t)my_zxdg_output_v1_listener_logical_position_##A, \ - (uintptr_t)my_zxdg_output_v1_listener_logical_size_##A, \ - (uintptr_t)my_zxdg_output_v1_listener_done_##A, \ - (uintptr_t)my_zxdg_output_v1_listener_name_##A, \ - (uintptr_t)my_zxdg_output_v1_listener_description_##A, \ +static my_zxdg_output_v1_listener_t* ref_zxdg_output_v1_listener_##A = NULL; \ +static void my_zxdg_output_v1_listener_logical_position_##A(void* a, void* b, int32_t c, int32_t d) \ +{ \ + RunFunctionFmt(ref_zxdg_output_v1_listener_##A->logical_position, "ppii", a, b, c, d); \ +} \ +static void my_zxdg_output_v1_listener_logical_size_##A(void* a, void* b, int32_t c, int32_t d) \ +{ \ + RunFunctionFmt(ref_zxdg_output_v1_listener_##A->logical_size, "ppii", a, b, c, d); \ +} \ +static void my_zxdg_output_v1_listener_done_##A(void* a, void* b) \ +{ \ + RunFunctionFmt(ref_zxdg_output_v1_listener_##A->done, "pp", a, b); \ +} \ +static void my_zxdg_output_v1_listener_name_##A(void* a, void* b, void* c) \ +{ \ + RunFunctionFmt(ref_zxdg_output_v1_listener_##A->name, "ppp", a, b, c); \ +} \ +static void my_zxdg_output_v1_listener_description_##A(void* a, void* b, void* c) \ +{ \ + RunFunctionFmt(ref_zxdg_output_v1_listener_##A->description, "ppp", a, b, c); \ +} \ +static my_zxdg_output_v1_listener_t my_zxdg_output_v1_listener_fct_##A = { \ + (uintptr_t)my_zxdg_output_v1_listener_logical_position_##A, \ + (uintptr_t)my_zxdg_output_v1_listener_logical_size_##A, \ + (uintptr_t)my_zxdg_output_v1_listener_done_##A, \ + (uintptr_t)my_zxdg_output_v1_listener_name_##A, \ + (uintptr_t)my_zxdg_output_v1_listener_description_##A, \ }; SUPER() #undef GO @@ -562,4 +562,3 @@ EXPORT int my_wl_proxy_add_listener(x64emu_t* emu, void* proxy, void** l, void* } #include "wrappedlib_init.h" - |