tcg/ppc: Improve unaligned load/store handling on 64-bit backend
commit68d45bb61c5bbfb3999486f78cf026c1e79eb301
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 21 Jul 2015 05:19:38 +0000 (21 15:19 +1000)
committerRichard Henderson <rth@twiddle.net>
Mon, 24 Aug 2015 18:10:54 +0000 (24 11:10 -0700)
tree92d3035743e62c45d4824fa4c652178b473c132f
parent8cc580f6a0d8c0e2f590c1472cf5cd8e51761760
tcg/ppc: Improve unaligned load/store handling on 64-bit backend

Currently, we get to the slow path for any unaligned access in the
backend, because we effectively preserve the bottom address bits
below the alignment requirement when comparing with the TLB entry,
so any non-0 bit there will cause the compare to fail.

For the same number of instructions, we can instead add the access
size - 1 to the address and stick to clearing all the bottom bits.

That means that normal unaligned accesses will not fallback (the HW
will handle them fine). Only when crossing a page boundary well we
end up having a mismatch because we'll end up pointing to the next
page which cannot possibly be in that same TLB entry.

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Message-Id: <1437455978.5809.2.camel@kernel.crashing.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg/ppc/tcg-target.c