filename | test/sh4/bsr.s |
changeset | 404:c5ed3c8642a2 |
author | nkeynes |
date | Sun Aug 24 01:40:58 2008 +0000 (15 years ago) |
permissions | -rw-r--r-- |
last change | Mask fpscr correctly as well while we're in there |
file | annotate | diff | log | raw |
nkeynes@404 | 1 | .section .text |
nkeynes@404 | 2 | .include "sh4/inc.s" |
nkeynes@404 | 3 | ! |
nkeynes@404 | 4 | |
nkeynes@404 | 5 | .global _test_bsr |
nkeynes@404 | 6 | _test_bsr: |
nkeynes@404 | 7 | start_test |
nkeynes@404 | 8 | mov.l r11, @-r15 |
nkeynes@404 | 9 | |
nkeynes@404 | 10 | test_bsr_1: ! Ordinary case |
nkeynes@404 | 11 | add #1, r12 |
nkeynes@404 | 12 | sts pr, r11 |
nkeynes@404 | 13 | mova test_bsr_1_fail, r0 |
nkeynes@404 | 14 | mov r0, r5 |
nkeynes@404 | 15 | xor r1, r1 |
nkeynes@404 | 16 | bsr test_bsr_1_target |
nkeynes@404 | 17 | add #1, r1 |
nkeynes@404 | 18 | test_bsr_1_fail: |
nkeynes@404 | 19 | fail test_bsr_str_k |
nkeynes@404 | 20 | bra test_bsr_2 |
nkeynes@404 | 21 | nop |
nkeynes@404 | 22 | test_bsr_1_target: |
nkeynes@404 | 23 | sts pr, r3 |
nkeynes@404 | 24 | cmp/eq r5,r3 |
nkeynes@404 | 25 | bf test_bsr_1_fail |
nkeynes@404 | 26 | mov #1, r2 |
nkeynes@404 | 27 | cmp/eq r1, r2 |
nkeynes@404 | 28 | bf test_bsr_1_fail |
nkeynes@404 | 29 | |
nkeynes@404 | 30 | test_bsr_2: ! Write PR in delay slot |
nkeynes@404 | 31 | add #1, r12 |
nkeynes@404 | 32 | |
nkeynes@404 | 33 | bsr test_bsr_2_target |
nkeynes@404 | 34 | lds r11, pr |
nkeynes@404 | 35 | test_bsr_2_fail: |
nkeynes@404 | 36 | fail test_bsr_str_k |
nkeynes@404 | 37 | bra test_bsr_3 |
nkeynes@404 | 38 | nop |
nkeynes@404 | 39 | test_bsr_2_target: |
nkeynes@404 | 40 | sts pr, r4 |
nkeynes@404 | 41 | cmp/eq r4,r11 |
nkeynes@404 | 42 | bf test_bsr_2_fail |
nkeynes@404 | 43 | |
nkeynes@404 | 44 | test_bsr_3: ! Read PR in delay slot |
nkeynes@404 | 45 | add #1, r12 |
nkeynes@404 | 46 | |
nkeynes@404 | 47 | mova test_bsr_3_fail, r0 |
nkeynes@404 | 48 | mov r0, r5 |
nkeynes@404 | 49 | bsr test_bsr_3_target |
nkeynes@404 | 50 | sts pr, r2 |
nkeynes@404 | 51 | test_bsr_3_fail: |
nkeynes@404 | 52 | fail test_bsr_str_k |
nkeynes@404 | 53 | bra test_bsr_4 |
nkeynes@404 | 54 | test_bsr_3_target: |
nkeynes@404 | 55 | cmp/eq r2, r5 |
nkeynes@404 | 56 | bf test_bsr_3_fail |
nkeynes@404 | 57 | sts pr, r3 |
nkeynes@404 | 58 | cmp/eq r3, r5 |
nkeynes@404 | 59 | bf test_bsr_3_fail |
nkeynes@404 | 60 | |
nkeynes@404 | 61 | test_bsr_4: ! Exception in delay slot |
nkeynes@404 | 62 | add #1, r12 |
nkeynes@404 | 63 | |
nkeynes@404 | 64 | mova test_bsr_4_fail, r0 |
nkeynes@404 | 65 | add #1, r0 |
nkeynes@404 | 66 | expect_exc 0x000001A0 |
nkeynes@404 | 67 | mova test_bsr_4_rte, r0 |
nkeynes@404 | 68 | mov r0, r11 |
nkeynes@404 | 69 | test_bsr_4_fault_pc: |
nkeynes@404 | 70 | bsr test_bsr_4_fail |
nkeynes@404 | 71 | bt test_bsr_4_rte |
nkeynes@404 | 72 | test_bsr_4_rte: |
nkeynes@404 | 73 | sts pr, r1 |
nkeynes@404 | 74 | cmp/eq r1, r11 |
nkeynes@404 | 75 | bf test_bsr_4_fail |
nkeynes@404 | 76 | assert_exc_caught test_bsr_str_k test_bsr_4_fault_pc |
nkeynes@404 | 77 | bra test_bsr_5 |
nkeynes@404 | 78 | nop |
nkeynes@404 | 79 | test_bsr_4_fail: |
nkeynes@404 | 80 | fail test_bsr_str_k |
nkeynes@404 | 81 | |
nkeynes@404 | 82 | test_bsr_5: |
nkeynes@404 | 83 | |
nkeynes@404 | 84 | test_bsr_end: |
nkeynes@404 | 85 | mov.l @r15+, r11 |
nkeynes@404 | 86 | end_test test_bsr_str_k |
nkeynes@404 | 87 | |
nkeynes@404 | 88 | ! Branch point used for tests that should never be reached (under correct |
nkeynes@404 | 89 | ! operation. Returns immediately, which should hit the "no exception" test |
nkeynes@404 | 90 | test_bsr_fail: |
nkeynes@404 | 91 | rts |
nkeynes@404 | 92 | nop |
nkeynes@404 | 93 | |
nkeynes@404 | 94 | test_bsr_str_k: |
nkeynes@404 | 95 | .long test_bsr_str |
nkeynes@404 | 96 | test_bsr_str: |
nkeynes@404 | 97 | .string "BSR" |
nkeynes@404 | 98 | |
nkeynes@404 | 99 |
.