filename | test/sh4/vmexit.s |
changeset | 808:da414654f3fa |
author | nkeynes |
date | Fri Dec 02 18:18:04 2011 +1000 (12 years ago) |
permissions | -rw-r--r-- |
last change | SH4 shadow-mode tweaks - Fix exceptions generated by the translator to account for the excepting instruction(s) in the cycle counts. - Compare floating point regs bitwise rather than with FP comparisons (otherwise can fail due to nan != nan) - Dump the translated block when we abort with an inconsistency |
file | annotate | diff | log | raw |
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" |
.