diff --git a/qemu/target-arm/neon_helper.c b/qemu/target-arm/neon_helper.c index 72acdf13..6838e7cc 100644 --- a/qemu/target-arm/neon_helper.c +++ b/qemu/target-arm/neon_helper.c @@ -608,7 +608,7 @@ NEON_POP(pmax_u16, neon_u16, 2) #undef NEON_FN #define NEON_FN(dest, src1, src2) \ - dest = (src1 > src2) ? (src1 - src2) : (src2 - src1) + dest = (src1 > src2) ? ((int64_t)src1 - (int64_t)src2) : ((int64_t)src2 - (int64_t)src1) NEON_VOP(abd_s8, neon_s8, 4) NEON_VOP(abd_u8, neon_u8, 4) NEON_VOP(abd_s16, neon_s16, 2) @@ -1052,7 +1052,7 @@ uint64_t HELPER(neon_qrshl_u64)(CPUARMState *env, uint64_t val, uint64_t shiftop if (tmp >= (ssize_t)sizeof(src1) * 8) { \ if (src1) { \ SET_QC(); \ - dest = (1 << (sizeof(src1) * 8 - 1)); \ + dest = (uint32_t)(1U << (sizeof(src1) * 8 - 1)); \ if (src1 > 0) { \ dest--; \ } \ @@ -1067,7 +1067,7 @@ uint64_t HELPER(neon_qrshl_u64)(CPUARMState *env, uint64_t val, uint64_t shiftop dest = ((uint64_t)src1) << tmp; \ if ((dest >> tmp) != src1) { \ SET_QC(); \ - dest = (uint32_t)(1 << (sizeof(src1) * 8 - 1)); \ + dest = (uint32_t)(1U << (sizeof(src1) * 8 - 1)); \ if (src1 > 0) { \ dest--; \ } \ @@ -1133,7 +1133,7 @@ uint64_t HELPER(neon_qrshl_s64)(CPUARMState *env, uint64_t valop, uint64_t shift } } else { int64_t tmp = val; - val <<= shift; + val = (uint64_t)val << (shift & 0x3f); if ((val >> shift) != tmp) { SET_QC(); val = (tmp >> 63) ^ ~SIGNBIT64; diff --git a/qemu/target-arm/translate.c b/qemu/target-arm/translate.c index b4800710..f172b333 100644 --- a/qemu/target-arm/translate.c +++ b/qemu/target-arm/translate.c @@ -6144,7 +6144,7 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) val = 0; for (n = 0; n < 4; n++) { if (imm & (1 << (n + (pass & 1) * 4))) - val |= 0xff << (n * 8); + val |= 0xffU << (n * 8); } tcg_gen_movi_i32(tcg_ctx, tmp, val); } else { @@ -11127,7 +11127,7 @@ static void disas_thumb_insn(CPUARMState *env, DisasContext *s) // qq /* jump to the offset */ val = (uint32_t)s->pc + 2; offset = ((int32_t)((uint32_t)insn << 24)) >> 24; - val += offset << 1; + val += (int32_t)((uint32_t)offset << 1); gen_jmp(s, val); break; @@ -11140,7 +11140,7 @@ static void disas_thumb_insn(CPUARMState *env, DisasContext *s) // qq /* unconditional branch */ val = (uint32_t)s->pc; offset = ((int32_t)((uint32_t)insn << 21)) >> 21; - val += (offset << 1) + 2; + val += (int32_t)((uint32_t)offset << 1) + 2; gen_jmp(s, val); break; diff --git a/qemu/target-i386/ops_sse.h b/qemu/target-i386/ops_sse.h index 0f628515..9a682deb 100644 --- a/qemu/target-i386/ops_sse.h +++ b/qemu/target-i386/ops_sse.h @@ -1471,7 +1471,7 @@ void glue(helper_phsubd, SUFFIX)(CPUX86State *env, Reg *d, Reg *s) { d->L(0) = (int32_t)((int64_t)d->L(0) - (int64_t)d->L(1)); XMM_ONLY(d->L(1) = (int32_t)((int64_t)d->L(2) - (int64_t)d->L(3))); - d->L((1 << SHIFT) + 0) = (uint32_t)((int32_t)s->L(0) - (int32_t)s->L(1)); + d->L((1 << SHIFT) + 0) = (uint32_t)((int64_t)s->L(0) - (int64_t)s->L(1)); XMM_ONLY(d->L(3) = (int32_t)s->L(2) - (int32_t)s->L(3)); } diff --git a/qemu/target-m68k/op_helper.c b/qemu/target-m68k/op_helper.c index 1b8c5d4a..2686e980 100644 --- a/qemu/target-m68k/op_helper.c +++ b/qemu/target-m68k/op_helper.c @@ -210,8 +210,8 @@ void HELPER(divs)(CPUM68KState *env, uint32_t word) if (den == 0) { raise_exception(env, EXCP_DIV0); } - quot = num / den; - rem = num % den; + quot = (int64_t)num / den; + rem = (int64_t)num % den; flags = 0; if (word && quot != (int16_t)quot) flags |= CCF_V; diff --git a/qemu/target-m68k/translate.c b/qemu/target-m68k/translate.c index 2f4ad1da..7ada763c 100644 --- a/qemu/target-m68k/translate.c +++ b/qemu/target-m68k/translate.c @@ -1170,7 +1170,7 @@ DISAS_INSN(bitop_im) bitnum &= 7; else bitnum &= 31; - mask = 1 << bitnum; + mask = 1U << bitnum; tmp = tcg_temp_new(tcg_ctx); assert (CCF_Z == (1 << 2)); diff --git a/qemu/target-mips/translate.c b/qemu/target-mips/translate.c index 656a67b6..9a3ac9e8 100644 --- a/qemu/target-mips/translate.c +++ b/qemu/target-mips/translate.c @@ -3394,7 +3394,7 @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt) { TCGv t2 = tcg_temp_new(tcg_ctx); TCGv t3 = tcg_temp_new(tcg_ctx); - tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1LL << 63); + tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1ULL << 63); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL); tcg_gen_and_tl(tcg_ctx, t2, t2, t3); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0); @@ -3411,7 +3411,7 @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt) { TCGv t2 = tcg_temp_new(tcg_ctx); TCGv t3 = tcg_temp_new(tcg_ctx); - tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1LL << 63); + tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1ULL << 63); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL); tcg_gen_and_tl(tcg_ctx, t2, t2, t3); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0); @@ -3574,7 +3574,7 @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc, { TCGv t2 = tcg_temp_new(tcg_ctx); TCGv t3 = tcg_temp_new(tcg_ctx); - tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1LL << 63); + tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t2, t0, -1ULL << 63); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, -1LL); tcg_gen_and_tl(tcg_ctx, t2, t2, t3); tcg_gen_setcondi_tl(tcg_ctx, TCG_COND_EQ, t3, t1, 0); @@ -3983,7 +3983,7 @@ static void gen_loongson_integer(DisasContext *ctx, uint32_t opc, tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0); tcg_gen_br(tcg_ctx, l3); gen_set_label(tcg_ctx, l1); - tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1LL << 63, l2); + tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1ULL << 63, l2); tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2); tcg_gen_mov_tl(tcg_ctx, *cpu_gpr[rd], t0); tcg_gen_br(tcg_ctx, l3); @@ -4014,7 +4014,7 @@ static void gen_loongson_integer(DisasContext *ctx, uint32_t opc, int l2 = gen_new_label(tcg_ctx); int l3 = gen_new_label(tcg_ctx); tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_EQ, t1, 0, l1); - tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1LL << 63, l2); + tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t0, -1ULL << 63, l2); tcg_gen_brcondi_tl(tcg_ctx, TCG_COND_NE, t1, -1LL, l2); gen_set_label(tcg_ctx, l1); tcg_gen_movi_tl(tcg_ctx, *cpu_gpr[rd], 0); diff --git a/qemu/util/cutils.c b/qemu/util/cutils.c index 0272f467..9a6cbdb6 100644 --- a/qemu/util/cutils.c +++ b/qemu/util/cutils.c @@ -132,7 +132,7 @@ int64_t strtosz_suffix_unit(const char *nptr, char **end, if (mul == 1 && mul_required) { goto fail; } - if ((val * mul >= INT64_MAX) || val < 0) { + if ((val * mul >= (double)INT64_MAX) || val < 0) { retval = -ERANGE; goto fail; }