Search
lxdream.org :: lxdream/test/sh4/vmexit.s
lxdream 0.9.1
released Jun 29
Download Now
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"
.