-static inline void store_cpu_offset(TCGv_i32 var, int offset)
+static inline void store_cpu_offset(TCGv_i32 var, int offset, bool is_temp)
{
tcg_gen_st_i32(var, cpu_env, offset);
- tcg_temp_free_i32(var);
+ if (is_temp) {
+ tcg_temp_free_i32(var);
+ }
}
#define store_cpu_field(var, name) \
- store_cpu_offset(var, offsetof(CPUARMState, name))
+ store_cpu_offset(var, offsetof(CPUARMState, name), true)
+
+#define store_cpu_field_constant(val, name) \
+ store_cpu_offset(tcg_const_i32(val), offsetof(CPUARMState, name), false)