Hi Luc,

On 10/7/26 09:23, Luc Michel wrote:
Since 36a9529e60e0 the TCGv returned by compute_ldst_addr_type{a,b} for
the address can be a target register or a constant. However
do_{load,store} might modify it in the case of a reversed load/store.

Register are modifiable, aren't they? IIUC compute_ldst_addr_typeb()
is not used by the reversed opcodes and the only issue is the 0 constant
in compute_ldst_addr_typea(). Is that analysis correct?

Fix this by factoring out the reversed access logic and copying the
address in a new TCGv_i32 if it needs to be modified.

Fixes: 36a9529e60e0 (target/microblaze: Simplify compute_ldst_addr_type{a,b})
Signed-off-by: Luc Michel <[email protected]>
---
  target/microblaze/translate.c | 56 ++++++++++++++++++++---------------
  1 file changed, 32 insertions(+), 24 deletions(-)


Reply via email to