Use size mask in both operands of effective address comparison.
This is the expected as the size of EPN field in MAS2 depends on page
size.

Definition of EPN field from e500v2 RM:
EPN Effective page number: Depending on page size, only the bits
associated with a page boundary are valid. Bits that represent offsets
within a page are ignored and should be cleared.

There is a similar (but more complicated) definition in PowerISA V2.06.

Signed-off-by: Fabien Chouteau <chout...@adacore.com>
---
 target-ppc/helper.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target-ppc/helper.c b/target-ppc/helper.c
index e97e496..adb96a0 100644
--- a/target-ppc/helper.c
+++ b/target-ppc/helper.c
@@ -1320,7 +1320,7 @@ int ppcmas_tlb_check(CPUPPCState *env, ppcmas_tlb_t *tlb,
     }
 
     /* Check effective address */
-    if ((address & mask) != (tlb->mas2 & MAS2_EPN_MASK)) {
+    if ((address & mask) != (tlb->mas2 & MAS2_EPN_MASK & mask)) {
         return -1;
     }
 
-- 
1.7.9.5


Reply via email to