Search
lxdream.org :: lxdream/test/sh4/bsr.s
lxdream 0.9.1
released Jun 29
Download Now
filename test/sh4/bsr.s
changeset 404:c5ed3c8642a2
author nkeynes
date Fri Feb 24 21:11:58 2012 +1000 (12 years ago)
permissions -rw-r--r--
last change Add preprocessing support to genglsl
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
	
.