]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/testsuite/sim/arm/iwmmxt/testutils.inc
opcodes: bfin: simplify field width processing and fix build warnings
[thirdparty/binutils-gdb.git] / sim / testsuite / sim / arm / iwmmxt / testutils.inc
1 # r0-r3 are used as tmps, consider them call clobbered by these macros.
2 # This uses the angel rom monitor calls.
3 # ??? How do we use the \@ facility of .macros ???
4 # @ is the comment char!
5
6 .macro mvi_h_gr reg, val
7 ldr \reg,[pc]
8 b . + 8
9 .word \val
10 .endm
11
12 .macro mvaddr_h_gr reg, addr
13 ldr \reg,[pc]
14 b . + 8
15 .word \addr
16 .endm
17
18 .macro start
19 .data
20 failmsg:
21 .asciz "fail\n"
22 passmsg:
23 .asciz "pass\n"
24 .text
25
26 do_pass:
27 ldr r1, passmsg_addr
28 mov r0, #4
29 swi #0x123456
30 exit 0
31 passmsg_addr:
32 .word passmsg
33
34 do_fail:
35 ldr r1, failmsg_addr
36 mov r0, #4
37 swi #0x123456
38 exit 1
39 failmsg_addr:
40 .word failmsg
41
42 .global _start
43 _start:
44 .endm
45
46 # *** Other macros know pass/fail are 4 bytes in size! Yuck.
47
48 .macro pass
49 b do_pass
50 .endm
51
52 .macro fail
53 b do_fail
54 .endm
55
56 .macro exit rc
57 # ??? This works with the ARMulator but maybe not others.
58 #mov r0, #\rc
59 #swi #1
60 # This seems to be portable (though it ignores rc).
61 mov r0,#0x18
62 mvi_h_gr r1, 0x20026
63 swi #0x123456
64 # If that returns, punt with a sigill.
65 stc 0,cr0,[r0]
66 .endm
67
68 # Other macros know this only clobbers r0.
69 # WARNING: It also clobbers the condition codes (FIXME).
70 .macro test_h_gr reg, val
71 mvaddr_h_gr r0, \val
72 cmp \reg, r0
73 beq . + 8
74 fail
75 .endm
76
77 .macro mvi_h_cnvz c, n, v, z
78 mov r0, #0
79 .if \c
80 orr r0, r0, #0x20000000
81 .endif
82 .if \n
83 orr r0, r0, #0x80000000
84 .endif
85 .if \v
86 orr r0, r0, #0x10000000
87 .endif
88 .if \z
89 orr r0, r0, #0x40000000
90 .endif
91 mrs r1, cpsr
92 bic r1, r1, #0xf0000000
93 orr r1, r1, r0
94 msr cpsr, r1
95 # ??? nops needed
96 .endm
97
98 # ??? Preserve condition codes?
99 .macro test_h_cnvz c, n, v, z
100 mov r0, #0
101 .if \c
102 orr r0, r0, #0x20000000
103 .endif
104 .if \n
105 orr r0, r0, #0x80000000
106 .endif
107 .if \v
108 orr r0, r0, #0x10000000
109 .endif
110 .if \z
111 orr r0, r0, #0x40000000
112 .endif
113 mrs r1, cpsr
114 and r1, r1, #0xf0000000
115 cmp r0, r1
116 beq . + 8
117 fail
118 .endm