From 3edc95eea50ef5520b6e399b1b9409555204933d Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Thu, 20 Aug 2020 18:14:16 +1000 Subject: [PATCH] tests/mmu: Update to use correct MSR values The tests were using MSR values that did not have MSR_SF or MSR_LE set. Fix this so that the test still works when 32-bit and BE modes are implemented. Signed-off-by: Paul Mackerras --- tests/mmu/mmu.c | 47 +++++++++++++++++++++++++++------------------ tests/test_mmu.bin | Bin 20504 -> 24600 bytes 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/tests/mmu/mmu.c b/tests/mmu/mmu.c index b91a852..ef00824 100644 --- a/tests/mmu/mmu.c +++ b/tests/mmu/mmu.c @@ -4,8 +4,10 @@ #include "console.h" +#define MSR_LE 0x1 #define MSR_DR 0x10 #define MSR_IR 0x20 +#define MSR_SF 0x8000000000000000ul extern int test_read(long *addr, long *ret, long init); extern int test_write(long *addr, long val); @@ -445,10 +447,11 @@ int mmu_test_11(void) unsigned long ptr = 0x523000; /* this should fail */ - if (test_exec(0, ptr, MSR_IR)) + if (test_exec(0, ptr, MSR_SF | MSR_IR | MSR_LE)) return 1; /* SRR0 and SRR1 should be set correctly */ - if (mfspr(SRR0) != (long) ptr || mfspr(SRR1) != 0x40000020) + if (mfspr(SRR0) != (long) ptr || + mfspr(SRR1) != (MSR_SF | 0x40000000 | MSR_IR | MSR_LE)) return 2; return 0; } @@ -462,12 +465,12 @@ int mmu_test_12(void) /* create PTE */ map((void *)ptr, (void *)mem, PERM_EX | REF); /* this should succeed and be a cache miss */ - if (!test_exec(0, ptr, MSR_IR)) + if (!test_exec(0, ptr, MSR_SF | MSR_IR | MSR_LE)) return 1; /* create a second PTE */ map((void *)ptr2, (void *)mem, PERM_EX | REF); /* this should succeed and be a cache hit */ - if (!test_exec(0, ptr2, MSR_IR)) + if (!test_exec(0, ptr2, MSR_SF | MSR_IR | MSR_LE)) return 2; return 0; } @@ -481,17 +484,18 @@ int mmu_test_13(void) /* create a PTE */ map((void *)ptr, (void *)mem, PERM_EX | REF); /* this should succeed */ - if (!test_exec(1, ptr, MSR_IR)) + if (!test_exec(1, ptr, MSR_SF | MSR_IR | MSR_LE)) return 1; /* invalidate the PTE */ unmap((void *)ptr); /* install a second PTE */ map((void *)ptr2, (void *)mem, PERM_EX | REF); /* this should fail */ - if (test_exec(1, ptr, MSR_IR)) + if (test_exec(1, ptr, MSR_SF | MSR_IR | MSR_LE)) return 2; /* SRR0 and SRR1 should be set correctly */ - if (mfspr(SRR0) != (long) ptr || mfspr(SRR1) != 0x40000020) + if (mfspr(SRR0) != (long) ptr || + mfspr(SRR1) != (MSR_SF | 0x40000000 | MSR_IR | MSR_LE)) return 3; return 0; } @@ -506,15 +510,16 @@ int mmu_test_14(void) /* create a PTE */ map((void *)ptr, (void *)mem, PERM_EX | REF); /* this should fail due to second page not being mapped */ - if (test_exec(2, ptr, MSR_IR)) + if (test_exec(2, ptr, MSR_SF | MSR_IR | MSR_LE)) return 1; /* SRR0 and SRR1 should be set correctly */ - if (mfspr(SRR0) != ptr2 || mfspr(SRR1) != 0x40000020) + if (mfspr(SRR0) != ptr2 || + mfspr(SRR1) != (MSR_SF | 0x40000000 | MSR_IR | MSR_LE)) return 2; /* create a PTE for the second page */ map((void *)ptr2, (void *)mem2, PERM_EX | REF); /* this should succeed */ - if (!test_exec(2, ptr, MSR_IR)) + if (!test_exec(2, ptr, MSR_SF | MSR_IR | MSR_LE)) return 3; return 0; } @@ -527,10 +532,11 @@ int mmu_test_15(void) /* create a PTE without execute permission */ map((void *)ptr, (void *)mem, DFLT_PERM); /* this should fail */ - if (test_exec(0, ptr, MSR_IR)) + if (test_exec(0, ptr, MSR_SF | MSR_IR | MSR_LE)) return 1; /* SRR0 and SRR1 should be set correctly */ - if (mfspr(SRR0) != ptr || mfspr(SRR1) != 0x10000020) + if (mfspr(SRR0) != ptr || + mfspr(SRR1) != (MSR_SF | 0x10000000 | MSR_IR | MSR_LE)) return 2; return 0; } @@ -547,15 +553,16 @@ int mmu_test_16(void) /* create a PTE for the second page without execute permission */ map((void *)ptr2, (void *)mem2, PERM_RD | REF); /* this should fail due to second page being no-execute */ - if (test_exec(2, ptr, MSR_IR)) + if (test_exec(2, ptr, MSR_SF | MSR_IR | MSR_LE)) return 1; /* SRR0 and SRR1 should be set correctly */ - if (mfspr(SRR0) != ptr2 || mfspr(SRR1) != 0x10000020) + if (mfspr(SRR0) != ptr2 || + mfspr(SRR1) != (MSR_SF | 0x10000000 | MSR_IR | MSR_LE)) return 2; /* create a PTE for the second page with execute permission */ map((void *)ptr2, (void *)mem2, PERM_RD | PERM_EX | REF); /* this should succeed */ - if (!test_exec(2, ptr, MSR_IR)) + if (!test_exec(2, ptr, MSR_SF | MSR_IR | MSR_LE)) return 3; return 0; } @@ -568,20 +575,22 @@ int mmu_test_17(void) /* create a PTE without the ref bit set */ map((void *)ptr, (void *)mem, PERM_EX); /* this should fail */ - if (test_exec(2, ptr, MSR_IR)) + if (test_exec(2, ptr, MSR_SF | MSR_IR | MSR_LE)) return 1; /* SRR0 and SRR1 should be set correctly */ - if (mfspr(SRR0) != (long) ptr || mfspr(SRR1) != 0x00040020) + if (mfspr(SRR0) != (long) ptr || + mfspr(SRR1) != (MSR_SF | 0x00040000 | MSR_IR | MSR_LE)) return 2; /* create a PTE without ref or execute permission */ unmap((void *)ptr); map((void *)ptr, (void *)mem, 0); /* this should fail */ - if (test_exec(2, ptr, MSR_IR)) + if (test_exec(2, ptr, MSR_SF | MSR_IR | MSR_LE)) return 1; /* SRR0 and SRR1 should be set correctly */ /* RC update fail bit should not be set */ - if (mfspr(SRR0) != (long) ptr || mfspr(SRR1) != 0x10000020) + if (mfspr(SRR0) != (long) ptr || + mfspr(SRR1) != (MSR_SF | 0x10000000 | MSR_IR | MSR_LE)) return 2; return 0; } diff --git a/tests/test_mmu.bin b/tests/test_mmu.bin index 5526c40992adc360f9d2b5d7c08a4bab3013a182..7f87578a8479b4001d9aec97edf42bde0e9eabd7 100755 GIT binary patch literal 24600 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 literal 20504 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 Qz*m7lfy>&(dP?T=e{6|~O8@`>