UChar* p = place_to_unchain;
vassert(((HWord)p & 1) == 0);
vassert(is_addr48_to_ireg_EXACTLY_18B(p, 5 /*x5/t0*/,
- (ULong)place_to_jump_to_EXPECTED));
+ (ULong)(HWord)place_to_jump_to_EXPECTED));
vassert(p[18] == 0x82 && p[19] == 0x82);
/* And what we want to change it to is:
The replacement has the same length as the original.
*/
- (void)addr48_to_ireg_EXACTLY_18B(p, 5 /*x5/t0*/, (ULong)disp_cp_chain_me);
+ (void)addr48_to_ireg_EXACTLY_18B(p, 5 /*x5/t0*/, (ULong)(HWord)disp_cp_chain_me);
p[18] = 0x82;
p[19] = 0x89;
vassert(p[18] == 0x83 && p[19] == 0x32 && p[20] == 0x03 && p[21] == 0x00);
vassert(p[22] == 0x85 && p[23] == 0x02);
vassert(p[24] == 0x23 && p[25] == 0x30 && p[26] == 0x53 && p[27] == 0x00);
- (void)addr48_to_ireg_EXACTLY_18B(p, 6 /*x6/t1*/, (ULong)location_of_counter);
+ (void)addr48_to_ireg_EXACTLY_18B(p, 6 /*x6/t1*/, (ULong)(HWord)location_of_counter);
VexInvalRange vir = {(HWord)p, 28};
return vir;
}
The same applies to nextFArgReg which records a number of used
floating-point registers f10/fa0 .. f17/fa7.
*/
- addInstr(env, RISCV64Instr_Call(*retloc, (Addr64)cee->addr, cond, nextArgReg,
+ addInstr(env, RISCV64Instr_Call(*retloc, (Addr64)(HWord)cee->addr, cond, nextArgReg,
nextFArgReg));
return True;