On 4/2/21 11:35 AM, Peter Maydell wrote:
On Fri, 2 Apr 2021 at 06:42, Richard Henderson
<[email protected]> wrote:
We were incorrectly assuming that only the first byte of an MTE access
is checked against the tags. But per the ARM, unaligned accesses are
pre-decomposed into single-byte accesses. So by the time we reach the
actual MTE check in the ARM pseudocode, all accesses are aligned.
Therefore, drop mte_check1, since we cannot know a priori that an
access is aligned. Rename mte_checkN to mte_check, which now handles
all accesses. Rename mte_probe1 to mte_probe, and use a common helper.
Drop the computation of the faulting nth element, since all accesses
can be considered to devolve to bytes, and simply compute the faulting
address.
Buglink: https://bugs.launchpad.net/bugs/1921948
Signed-off-by: Richard Henderson <[email protected]>
This is a pretty chunky patch for this point in the release cycle.
I don't suppose there's a way to make it more digestible for review?
Hmm. I guess I could split it into more pieces...
I had thought one of the intermediary steps was larger than the result, simply
because one of the interfaces was adjusted instead of simply being removed.
I'll see what I can come up with.
r~