nkeynes@808 | 1 | .section .text
|
nkeynes@808 | 2 | .include "sh4/inc.s"
|
nkeynes@808 | 3 | !
|
nkeynes@808 | 4 | ! Test for correct performance of the continuation-type core exit - that is,
|
nkeynes@808 | 5 | ! the memory write instruction finishes completely, and the following
|
nkeynes@808 | 6 | ! instruction is only executed once. Note that we assume the exit actually
|
nkeynes@808 | 7 | ! takes place, but the mmu tests are unlikely to pass if it doesn't.
|
nkeynes@808 | 8 | !
|
nkeynes@808 | 9 | ! Reserved:
|
nkeynes@808 | 10 | ! r11 Original value of MMUCR
|
nkeynes@808 | 11 | ! r10 Address of MMUCR
|
nkeynes@808 | 12 | ! r9 Current value of MMUCR
|
nkeynes@808 | 13 |
|
nkeynes@808 | 14 | .global _test_vmexit
|
nkeynes@808 | 15 | _test_vmexit:
|
nkeynes@808 | 16 | start_test
|
nkeynes@808 | 17 |
|
nkeynes@808 | 18 | mov.l r11, @-r15
|
nkeynes@808 | 19 | mov.l r10, @-r15
|
nkeynes@808 | 20 | mov.l r9, @-r15
|
nkeynes@808 | 21 |
|
nkeynes@808 | 22 | mov.l test_vmexit_mmucr, r10
|
nkeynes@808 | 23 | mov.l @r10, r11
|
nkeynes@808 | 24 | mov r11, r9
|
nkeynes@808 | 25 |
|
nkeynes@808 | 26 | test_vmexit_1:
|
nkeynes@808 | 27 | add #1, r12
|
nkeynes@808 | 28 | mov r10, r0
|
nkeynes@808 | 29 | mov r10, r2
|
nkeynes@808 | 30 | mov #1, r1
|
nkeynes@808 | 31 | add #4, r0
|
nkeynes@808 | 32 | xor r1, r9
|
nkeynes@808 | 33 | mov.l r9, @-r0
|
nkeynes@808 | 34 | add #1, r1
|
nkeynes@808 | 35 | cmp/eq r0, r2
|
nkeynes@808 | 36 | bt test_vmexit_1a
|
nkeynes@808 | 37 | fail test_vmexit_str_k
|
nkeynes@808 | 38 | bra test_vmexit_2
|
nkeynes@808 | 39 | nop
|
nkeynes@808 | 40 | test_vmexit_1a:
|
nkeynes@808 | 41 | mov #2, r0
|
nkeynes@808 | 42 | cmp/eq r1, r0
|
nkeynes@808 | 43 | bt test_vmexit_2
|
nkeynes@808 | 44 | fail test_vmexit_str_k
|
nkeynes@808 | 45 |
|
nkeynes@808 | 46 | test_vmexit_2:
|
nkeynes@808 | 47 | add #1, r12
|
nkeynes@808 | 48 | mov #1, r1
|
nkeynes@808 | 49 | xor r1, r9
|
nkeynes@808 | 50 | bra test_vmexit_2_ok
|
nkeynes@808 | 51 | mov.l r9, @r10
|
nkeynes@808 | 52 | fail test_vmexit_str_k
|
nkeynes@808 | 53 | bra test_vmexit_end
|
nkeynes@808 | 54 | nop
|
nkeynes@808 | 55 |
|
nkeynes@808 | 56 | test_vmexit_2_ok:
|
nkeynes@808 | 57 |
|
nkeynes@808 | 58 | test_vmexit_end:
|
nkeynes@808 | 59 | mov.l r11, @r10
|
nkeynes@808 | 60 | mov.l @r15+, r9
|
nkeynes@808 | 61 | mov.l @r15+, r10
|
nkeynes@808 | 62 | mov.l @r15+, r11
|
nkeynes@808 | 63 | end_test test_vmexit_str_k
|
nkeynes@808 | 64 |
|
nkeynes@808 | 65 | test_vmexit_mmucr:
|
nkeynes@808 | 66 | .long 0xFF000010
|
nkeynes@808 | 67 | test_vmexit_str_k:
|
nkeynes@808 | 68 | .long test_vmexit_str
|
nkeynes@808 | 69 | test_vmexit_str:
|
nkeynes@808 | 70 | .string "VM-EXIT"
|