Home | History | Annotate | Line # | Download | only in v850
      1  1.1  christos SYS_exit = 1
      2  1.1  christos SYS_write = 4
      3  1.1  christos 
      4  1.1  christos 	.bss
      5  1.1  christos 	.space 64
      6  1.1  christos _stack:
      7  1.1  christos 
      8  1.1  christos 	.data
      9  1.1  christos pass_text:
     10  1.1  christos 	.string "pass\n"
     11  1.1  christos fail_text:
     12  1.1  christos 	.string "fail\n"
     13  1.1  christos 
     14  1.1  christos 	.text
     15  1.1  christos 	.global	_start
     16  1.1  christos _start:
     17  1.1  christos 	movhi   hi(_stack),	r0,	sp
     18  1.1  christos 	movea   lo(_stack),	sp,	sp
     19  1.1  christos 	jr	start_test
     20  1.1  christos 
     21  1.1  christos 	.macro	seti	val reg
     22  1.1  christos 	movhi	hi(\val),r0,\reg
     23  1.1  christos 	movea	lo(\val),\reg,\reg
     24  1.1  christos 	.endm
     25  1.1  christos 
     26  1.1  christos _pass_1:
     27  1.1  christos 	mov	SYS_write,r6
     28  1.1  christos 	mov	1,r7
     29  1.1  christos 	seti	pass_text,r8
     30  1.1  christos 	mov	5,r9
     31  1.1  christos 	trap	31
     32  1.1  christos 
     33  1.1  christos 	mov	0, r7
     34  1.1  christos 	jr	_exit
     35  1.1  christos 
     36  1.1  christos _fail_1:
     37  1.1  christos 	mov	SYS_write,r6
     38  1.1  christos 	mov	1,r7
     39  1.1  christos 	seti	fail_text,r8
     40  1.1  christos 	mov	5,r9
     41  1.1  christos 	trap	31
     42  1.1  christos 
     43  1.1  christos 	mov	1, r7
     44  1.1  christos 	jr	_exit
     45  1.1  christos 
     46  1.1  christos _exit:
     47  1.1  christos 	mov	SYS_exit, r6
     48  1.1  christos 	mov	0, r8
     49  1.1  christos 	mov	0, r9
     50  1.1  christos 	trap	31
     51  1.1  christos 
     52  1.1  christos _pass:
     53  1.1  christos 	jr	_pass_1
     54  1.1  christos 
     55  1.1  christos _fail:
     56  1.1  christos 	jr	_fail_1
     57  1.1  christos 
     58  1.1  christos 	.macro	pass
     59  1.1  christos 	jr	_pass
     60  1.1  christos 	.endm
     61  1.1  christos 	.macro	fail
     62  1.1  christos 	jr	_fail
     63  1.1  christos 	.endm
     64  1.1  christos 
     65  1.1  christos 	# These pass or fail if the given flag is set or not set
     66  1.1  christos 	# Currently, it assumed that the code of any test is going to
     67  1.1  christos 	# be less than 256 bytes.  Else, we'll have to use a
     68  1.1  christos 	# branch-around-jump design instead.
     69  1.1  christos 
     70  1.1  christos 	.macro	pass_c
     71  1.1  christos 	bc	_pass
     72  1.1  christos 	.endm
     73  1.1  christos 	.macro	fail_c
     74  1.1  christos 	bc	_fail
     75  1.1  christos 	.endm
     76  1.1  christos 	.macro	pass_nc
     77  1.1  christos 	bnc	_pass
     78  1.1  christos 	.endm
     79  1.1  christos 	.macro	fail_nc
     80  1.1  christos 	bnc	_fail
     81  1.1  christos 	.endm
     82  1.1  christos 
     83  1.1  christos 	.macro	pass_z
     84  1.1  christos 	bz	_pass
     85  1.1  christos 	.endm
     86  1.1  christos 	.macro	fail_z
     87  1.1  christos 	bz	_fail
     88  1.1  christos 	.endm
     89  1.1  christos 	.macro	pass_nz
     90  1.1  christos 	bnz	_pass
     91  1.1  christos 	.endm
     92  1.1  christos 	.macro	fail_nz
     93  1.1  christos 	bnz	_fail
     94  1.1  christos 	.endm
     95  1.1  christos 
     96  1.1  christos 	.macro	pass_v
     97  1.1  christos 	bv	_pass
     98  1.1  christos 	.endm
     99  1.1  christos 	.macro	fail_v
    100  1.1  christos 	bv	_fail
    101  1.1  christos 	.endm
    102  1.1  christos 	.macro	pass_nv
    103  1.1  christos 	bnv	_pass
    104  1.1  christos 	.endm
    105  1.1  christos 	.macro	fail_nv
    106  1.1  christos 	bnv	_fail
    107  1.1  christos 	.endm
    108  1.1  christos 
    109  1.1  christos 	.macro	pass_s
    110  1.1  christos 	bn	_pass
    111  1.1  christos 	.endm
    112  1.1  christos 	.macro	fail_s
    113  1.1  christos 	bn	_fail
    114  1.1  christos 	.endm
    115  1.1  christos 	.macro	pass_ns
    116  1.1  christos 	bp	_pass
    117  1.1  christos 	.endm
    118  1.1  christos 	.macro	fail_ns
    119  1.1  christos 	bp	_fail
    120  1.1  christos 	.endm
    121  1.1  christos 
    122  1.1  christos 	.macro	pass_sat
    123  1.1  christos 	bsa	_pass
    124  1.1  christos 	.endm
    125  1.1  christos 	.macro	fail_sat
    126  1.1  christos 	bsa	_fail
    127  1.1  christos 	.endm
    128  1.1  christos 	.macro	pass_nsat
    129  1.1  christos 	bsa	1f
    130  1.1  christos 	br	_pass
    131  1.1  christos 1:
    132  1.1  christos 	.endm
    133  1.1  christos 	.macro	fail_nsat
    134  1.1  christos 	bsa	1f
    135  1.1  christos 	br	_fail
    136  1.1  christos 1:
    137  1.1  christos 	.endm
    138  1.1  christos 
    139  1.1  christos 	# These pass/fail if the given register has/hasn't the specified value in it.
    140  1.1  christos 
    141  1.1  christos 	.macro	pass_req	reg val
    142  1.1  christos 	seti	\val,r10
    143  1.1  christos 	cmp	r10,\reg
    144  1.1  christos 	be	_pass
    145  1.1  christos 	.endm
    146  1.1  christos 
    147  1.1  christos 	.macro	pass_rne	reg val
    148  1.1  christos 	seti	\val,r10
    149  1.1  christos 	cmp	r10,\reg
    150  1.1  christos 	bne	_pass
    151  1.1  christos 	.endm
    152  1.1  christos 
    153  1.1  christos 	.macro	fail_req	reg val
    154  1.1  christos 	seti	\val,r10
    155  1.1  christos 	cmp	r10,\reg
    156  1.1  christos 	be	_fail
    157  1.1  christos 	.endm
    158  1.1  christos 
    159  1.1  christos 	.macro	fail_rne	reg val
    160  1.1  christos 	seti	\val,r10
    161  1.1  christos 	cmp	r10,\reg
    162  1.1  christos 	bne	_fail
    163  1.1  christos 	.endm
    164  1.1  christos 
    165  1.1  christos # convenience version
    166  1.1  christos 	.macro	reg	reg val
    167  1.1  christos 	seti	\val,r10
    168  1.1  christos 	cmp	r10,\reg
    169  1.1  christos 	bne	_fail
    170  1.1  christos 	.endm
    171  1.1  christos 
    172  1.1  christos z    = 1
    173  1.1  christos nz   = 0
    174  1.1  christos s    = 2
    175  1.1  christos ns   = 0
    176  1.1  christos v    = 4
    177  1.1  christos nv   = 0
    178  1.1  christos c    = 8
    179  1.1  christos nc   = 0
    180  1.1  christos sat  = 16
    181  1.1  christos nsat = 0
    182  1.1  christos 
    183  1.1  christos # sat c v s z
    184  1.1  christos 
    185  1.1  christos 	.macro	flags	fval
    186  1.1  christos 	stsr	psw, r10
    187  1.1  christos 	movea	+(\fval), r0, r9
    188  1.1  christos 	andi	31, r10, r10
    189  1.1  christos 	cmp	r9, r10
    190  1.1  christos 	bne	_fail
    191  1.1  christos 	.endm
    192  1.1  christos 
    193  1.1  christos 	.macro	noflags
    194  1.1  christos 	stsr	psw, r10
    195  1.1  christos 	andi	~0x1f, r10, r10
    196  1.1  christos 	ldsr	r10, psw
    197  1.1  christos 	.endm
    198  1.1  christos 
    199  1.1  christos 	.macro	allflags
    200  1.1  christos 	stsr	psw, r10
    201  1.1  christos 	ori	0x1f, r10, r10
    202  1.1  christos 	ldsr	r10, psw
    203  1.1  christos 	.endm
    204  1.1  christos 
    205  1.1  christos start_test:
    206