mirror of
https://github.com/antonblanchard/microwatt.git
synced 2026-02-27 00:59:41 +00:00
tests/mmu: Add a test for dcbz with translation on
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
This commit is contained in:
@@ -80,6 +80,20 @@ test_write:
|
||||
mtmsrd %r9,0
|
||||
blr
|
||||
|
||||
/* Do a dcbz with translation on */
|
||||
.globl test_dcbz
|
||||
test_dcbz:
|
||||
mfmsr %r9
|
||||
ori %r8,%r9,0x10 /* set MSR_DR */
|
||||
mtmsrd %r8,0
|
||||
mr %r6,%r3
|
||||
li %r3,0
|
||||
dcbz 0,%r6
|
||||
li %r3,1
|
||||
/* land here if DSI occurred */
|
||||
mtmsrd %r9,0
|
||||
blr
|
||||
|
||||
.globl test_exec
|
||||
test_exec:
|
||||
mtsrr0 %r4
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
extern int test_read(long *addr, long *ret, long init);
|
||||
extern int test_write(long *addr, long val);
|
||||
extern int test_dcbz(long *addr);
|
||||
extern int test_exec(int testno, unsigned long pc, unsigned long msr);
|
||||
|
||||
static inline void do_tlbie(unsigned long rb, unsigned long rs)
|
||||
@@ -579,6 +580,25 @@ int mmu_test_17(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mmu_test_18(void)
|
||||
{
|
||||
long *mem = (long *) 0x8000;
|
||||
long *ptr = (long *) 0x124000;
|
||||
long *ptr2 = (long *) 0x1124000;
|
||||
|
||||
/* create PTE */
|
||||
map(ptr, mem, DFLT_PERM);
|
||||
/* this should succeed and be a cache miss */
|
||||
if (!test_dcbz(&ptr[129]))
|
||||
return 1;
|
||||
/* create a second PTE */
|
||||
map(ptr2, mem, DFLT_PERM);
|
||||
/* this should succeed and be a cache hit */
|
||||
if (!test_dcbz(&ptr2[130]))
|
||||
return 2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fail = 0;
|
||||
|
||||
void do_test(int num, int (*test)(void))
|
||||
@@ -633,6 +653,7 @@ int main(void)
|
||||
do_test(15, mmu_test_15);
|
||||
do_test(16, mmu_test_16);
|
||||
do_test(17, mmu_test_17);
|
||||
do_test(18, mmu_test_18);
|
||||
|
||||
return fail;
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -15,3 +15,4 @@ test 14:PASS
|
||||
test 15:PASS
|
||||
test 16:PASS
|
||||
test 17:PASS
|
||||
test 18:PASS
|
||||
|
||||
Reference in New Issue
Block a user