> Matheus Tavares Bernardino <[email protected]> wrote: > > diff --git a/target/hexagon/macros.h b/target/hexagon/macros.h > index 5451b061ee..efb8013912 100644 > --- a/target/hexagon/macros.h > +++ b/target/hexagon/macros.h > @@ -173,14 +173,20 @@ > #define MEM_STORE8(VA, DATA, SLOT) \ > MEM_STORE8_FUNC(DATA)(cpu_env, VA, DATA, SLOT) > #else > -#define MEM_LOAD1s(VA) ((int8_t)mem_load1(env, pkt_has_store_s1, slot, VA)) > -#define MEM_LOAD1u(VA) ((uint8_t)mem_load1(env, pkt_has_store_s1, slot, VA)) > -#define MEM_LOAD2s(VA) ((int16_t)mem_load2(env, pkt_has_store_s1, slot, VA)) > -#define MEM_LOAD2u(VA) ((uint16_t)mem_load2(env, pkt_has_store_s1, slot, VA)) > -#define MEM_LOAD4s(VA) ((int32_t)mem_load4(env, pkt_has_store_s1, slot, VA)) > -#define MEM_LOAD4u(VA) ((uint32_t)mem_load4(env, pkt_has_store_s1, slot, VA)) > -#define MEM_LOAD8s(VA) ((int64_t)mem_load8(env, pkt_has_store_s1, slot, VA)) > -#define MEM_LOAD8u(VA) ((uint64_t)mem_load8(env, pkt_has_store_s1, slot, VA)) > + > +#define MEM_LOADn(SIZE, VA) ({ \ > + check_noshuf(env, pkt_has_store_s1, slot, VA, SIZE); \ > + cpu_ldub_data_ra(env, VA, GETPC()); \ > +}) > + > +#define MEM_LOAD1s(VA) ((int8_t)MEM_LOADn(1, VA)) > +#define MEM_LOAD1u(VA) ((uint8_t)MEM_LOADn(1, VA)) > +#define MEM_LOAD2s(VA) ((int16_t)MEM_LOADn(2, VA)) > +#define MEM_LOAD2u(VA) ((uint16_t)MEM_LOADn(2, VA)) > +#define MEM_LOAD4s(VA) ((int32_t)MEM_LOADn(4, VA)) > +#define MEM_LOAD4u(VA) ((uint32_t)MEM_LOADn(4, VA)) > +#define MEM_LOAD8s(VA) ((int64_t)MEM_LOADn(8, VA)) > +#define MEM_LOAD8u(VA) ((uint64_t)MEM_LOADn(8, VA))
Oops, an oversight from my side: this simplification is not correct since the mem_load*() functions all call different variants of cpu_ld*_data_ra(). I'll send a v2 correcting that.
