|
From: | Richard Henderson |
Subject: | Re: [PATCH v3 13/14] tcg/arm: Reserve a register for guest_base |
Date: | Fri, 20 Aug 2021 08:47:08 -1000 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
On 8/20/21 2:03 AM, Peter Maydell wrote:
- } else if (datalo != addend) { + } else if (scratch_addend) { tcg_out_ld32_rwb(s, COND_AL, datalo, addend, addrlo); tcg_out_ld32_12(s, COND_AL, datahi, addend, 4); } else {I don't understand this change. Yes, we can trash the addend register, but if it's the same as 'datalo' then the second load is not going to DTRT... Shouldn't this be if (scratch_addend && datalo != addend) ?
Previously, addend was *always* a scratch register, TCG_REG_TMP or such. Afterward, addend may be TCG_REG_GUEST_BASE, which should not be modified. At no point is there overlap between addend and data{hi,lo}. r~
[Prev in Thread] | Current Thread | [Next in Thread] |