typedef struct {
target_ulong va;
- uint8_t width;
+ uint32_t width;
uint32_t data32;
uint64_t data64;
} MemLog;
}
#endif
-void gen_store32(TCGv vaddr, TCGv src, int width, uint32_t slot)
+void gen_store32(TCGv vaddr, TCGv src, uint32_t width, uint32_t slot)
{
tcg_gen_mov_tl(hex_store_addr[slot], vaddr);
- tcg_gen_movi_tl(hex_store_width[slot], width);
+ tcg_gen_movi_i32(hex_store_width[slot], width);
tcg_gen_mov_tl(hex_store_val32[slot], src);
}
void gen_store8(TCGv_env tcg_env, TCGv vaddr, TCGv_i64 src, uint32_t slot)
{
tcg_gen_mov_tl(hex_store_addr[slot], vaddr);
- tcg_gen_movi_tl(hex_store_width[slot], 8);
+ tcg_gen_movi_i32(hex_store_width[slot], 8);
tcg_gen_mov_i64(hex_store_val64[slot], src);
}
extern const SemanticInsn opcode_genptr[];
-void gen_store32(TCGv vaddr, TCGv src, int width, uint32_t slot);
+void gen_store32(TCGv vaddr, TCGv src, uint32_t width, uint32_t slot);
void gen_store1(TCGv_env cpu_env, TCGv vaddr, TCGv src, uint32_t slot);
void gen_store2(TCGv_env cpu_env, TCGv vaddr, TCGv src, uint32_t slot);
void gen_store4(TCGv_env cpu_env, TCGv vaddr, TCGv src, uint32_t slot);
}
void log_store32(CPUHexagonState *env, target_ulong addr,
- target_ulong val, int width, int slot)
+ target_ulong val, uint32_t width, int slot)
{
env->mem_log_stores[slot].va = addr;
env->mem_log_stores[slot].width = width;
}
void log_store64(CPUHexagonState *env, target_ulong addr,
- int64_t val, int width, int slot)
+ int64_t val, uint32_t width, int slot)
{
env->mem_log_stores[slot].va = addr;
env->mem_log_stores[slot].width = width;
static void commit_store(CPUHexagonState *env, int slot_num, uintptr_t ra)
{
- uint8_t width = env->mem_log_stores[slot_num].width;
+ uint32_t width = env->mem_log_stores[slot_num].width;
target_ulong va = env->mem_log_stores[slot_num].va;
switch (width) {
bool is_predicated, uintptr_t retaddr)
{
if (!is_predicated || !(env->slot_cancelled & (1 << slot))) {
- size1u_t width = env->mem_log_stores[slot].width;
+ uint32_t width = env->mem_log_stores[slot].width;
target_ulong va = env->mem_log_stores[slot].va;
probe_write(env, va, width, mmu_idx, retaddr);
}
/* Misc functions */
void log_store64(CPUHexagonState *env, target_ulong addr,
- int64_t val, int width, int slot);
+ int64_t val, uint32_t width, int slot);
void log_store32(CPUHexagonState *env, target_ulong addr,
- target_ulong val, int width, int slot);
+ target_ulong val, uint32_t width, int slot);
#endif
TCGv hex_slot_cancelled;
TCGv hex_new_value_usr;
TCGv hex_store_addr[STORES_MAX];
-TCGv hex_store_width[STORES_MAX];
+TCGv_i32 hex_store_width[STORES_MAX];
TCGv hex_store_val32[STORES_MAX];
TCGv_i64 hex_store_val64[STORES_MAX];
TCGv hex_llsc_addr;
store_addr_names[i]);
snprintf(store_width_names[i], NAME_LEN, "store_width_%d", i);
- hex_store_width[i] = tcg_global_mem_new(tcg_env,
+ hex_store_width[i] = tcg_global_mem_new_i32(tcg_env,
offsetof(CPUHexagonState, mem_log_stores[i].width),
store_width_names[i]);
extern TCGv hex_slot_cancelled;
extern TCGv hex_new_value_usr;
extern TCGv hex_store_addr[STORES_MAX];
-extern TCGv hex_store_width[STORES_MAX];
+extern TCGv_i32 hex_store_width[STORES_MAX];
extern TCGv hex_store_val32[STORES_MAX];
extern TCGv_i64 hex_store_val64[STORES_MAX];
extern TCGv hex_llsc_addr;