Upload Tizen:Base source
[external/gdb.git] / sim / testsuite / sim / arm / xscale / 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