Home | History | Annotate | Line # | Download | only in m32r
testutils.inc revision 1.1
      1  1.1  christos # r0-r3 are used as tmps, consider them call clobbered by these macros.
      2  1.1  christos 
      3  1.1  christos 	.macro start
      4  1.1  christos 	.data
      5  1.1  christos failmsg:
      6  1.1  christos 	.ascii "fail\n"
      7  1.1  christos passmsg:
      8  1.1  christos 	.ascii "pass\n"
      9  1.1  christos 	.text
     10  1.1  christos 	.global _start
     11  1.1  christos _start:
     12  1.1  christos 	.endm
     13  1.1  christos 
     14  1.1  christos 	.macro exit rc
     15  1.1  christos 	ldi8 r1, \rc
     16  1.1  christos 	ldi8 r0, #1
     17  1.1  christos 	trap #0
     18  1.1  christos 	.endm
     19  1.1  christos 
     20  1.1  christos 	.macro pass
     21  1.1  christos 	ldi8 r3, 5
     22  1.1  christos 	ld24 r2, passmsg
     23  1.1  christos 	ldi8 r1, 1
     24  1.1  christos 	ldi8 r0, 5
     25  1.1  christos 	trap #0
     26  1.1  christos 	exit 0
     27  1.1  christos 	.endm
     28  1.1  christos 
     29  1.1  christos 	.macro fail
     30  1.1  christos 	ldi8 r3, 5
     31  1.1  christos 	ld24 r2, failmsg
     32  1.1  christos 	ldi8 r1, 1
     33  1.1  christos 	ldi8 r0, 5
     34  1.1  christos 	trap #0
     35  1.1  christos 	exit 1
     36  1.1  christos 	.endm
     37  1.1  christos 
     38  1.1  christos 	.macro mvi_h_gr reg, val
     39  1.1  christos 	.if (\val >= -128) && (\val <= 127)
     40  1.1  christos 	ldi8 \reg, \val
     41  1.1  christos 	.else
     42  1.1  christos 	seth \reg, high(\val)
     43  1.1  christos 	or3 \reg, \reg, low(\val)
     44  1.1  christos 	.endif
     45  1.1  christos 	.endm
     46  1.1  christos 
     47  1.1  christos 	.macro mvaddr_h_gr reg, addr
     48  1.1  christos 	seth \reg, high(\addr)
     49  1.1  christos 	or3 \reg, \reg, low(\addr)
     50  1.1  christos 	.endm
     51  1.1  christos 
     52  1.1  christos # Other macros know this only clobbers r0.
     53  1.1  christos 	.macro test_h_gr reg, val
     54  1.1  christos 	mvaddr_h_gr r0, \val
     55  1.1  christos 	beq \reg, r0, test_gr\@
     56  1.1  christos 	fail
     57  1.1  christos test_gr\@:
     58  1.1  christos 	.endm
     59  1.1  christos 
     60  1.1  christos 	.macro mvi_h_condbit val
     61  1.1  christos 	ldi8 r0, 0
     62  1.1  christos 	ldi8 r1, 1
     63  1.1  christos 	.if \val
     64  1.1  christos 	cmp r0, r1
     65  1.1  christos 	.else
     66  1.1  christos 	cmp r1, r0
     67  1.1  christos 	.endif
     68  1.1  christos 	.endm
     69  1.1  christos 
     70  1.1  christos 	.macro test_h_condbit val
     71  1.1  christos 	.if \val
     72  1.1  christos 	bc test_c1\@
     73  1.1  christos 	fail
     74  1.1  christos test_c1\@:
     75  1.1  christos 	.else
     76  1.1  christos 	bnc test_c0\@
     77  1.1  christos 	fail
     78  1.1  christos test_c0\@:
     79  1.1  christos 	.endif
     80  1.1  christos 	.endm
     81  1.1  christos 
     82  1.1  christos 	.macro mvi_h_accum0 hi, lo
     83  1.1  christos 	mvi_h_gr r0, \hi
     84  1.1  christos 	mvtachi r0
     85  1.1  christos 	mvi_h_gr r0, \lo
     86  1.1  christos 	mvtaclo r0
     87  1.1  christos 	.endm
     88  1.1  christos 
     89  1.1  christos 	.macro test_h_accum0 hi, lo
     90  1.1  christos 	mvfachi r1
     91  1.1  christos 	test_h_gr r1, \hi
     92  1.1  christos 	mvfaclo r1
     93  1.1  christos 	test_h_gr r1, \lo
     94  1.1  christos 	.endm
     95  1.1  christos 
     96