forked from Github_Repos/cvw
cd9feb0260
This test basically triggers an i$ miss during a d$ (hit) store operation. It requires some tricky timing (e.g. a flushD right before the relevant store). I use a script to generate the test.
84 lines
1.8 KiB
ArmAsm
84 lines
1.8 KiB
ArmAsm
#include "WALLY-init-lib.h"
|
|
main:
|
|
// start way test #1
|
|
li t0, 0x80100000
|
|
.align 6
|
|
// i$ boundary, way test #1
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
sd zero, 0(t0)
|
|
sd zero, 0(t0)
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
// start way test #2
|
|
li t0, 0x80101000
|
|
.align 6
|
|
// i$ boundary, way test #2
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
sd zero, 0(t0)
|
|
sd zero, 0(t0)
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
// start way test #3
|
|
li t0, 0x80102000
|
|
.align 6
|
|
// i$ boundary, way test #3
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
sd zero, 0(t0)
|
|
sd zero, 0(t0)
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
// start way test #4
|
|
li t0, 0x80103000
|
|
.align 6
|
|
// i$ boundary, way test #4
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
sd zero, 0(t0)
|
|
sd zero, 0(t0)
|
|
.word 0x00000013
|
|
.word 0x00000013
|
|
j done
|