• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src/router/gdb/sim/testsuite/sim/arm/iwmmxt/
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
20failmsg:
21	.asciz "fail\n"
22passmsg:
23	.asciz "pass\n"
24	.text
25
26do_pass:
27	ldr r1, passmsg_addr
28	mov r0, #4
29	swi #0x123456
30	exit 0
31passmsg_addr:
32	.word passmsg
33
34do_fail:
35	ldr r1, failmsg_addr
36	mov r0, #4
37	swi #0x123456
38	exit 1
39failmsg_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
119