xref: /openbmc/qemu/tests/tcg/xtensa/macros.inc (revision 139c1837)
1#include "core-isa.h"
2
3.macro test_suite name
4.data
5status: .word result
6result: .space 256
7.text
8.global main
9.align 4
10main:
11.endm
12
13.macro reset_ps
14    movi    a2, 0x4000f
15    wsr     a2, ps
16    isync
17.endm
18
19.macro test_suite_end
20    reset_ps
21    movi    a0, status
22    l32i    a2, a0, 0
23    movi    a0, result
24    sub     a2, a2, a0
25    movi    a3, 0
26    beqz    a2, 2f
271:
28    l8ui    a1, a0, 0
29    or      a3, a3, a1
30    addi    a0, a0, 1
31    addi    a2, a2, -1
32    bnez    a2, 1b
332:
34    exit
35.endm
36
37.macro print text
38.data
3997: .ascii "\text\n"
4098:
41    .align 4
42.text
43    movi    a2, 4
44    movi    a3, 2
45    movi    a4, 97b
46    movi    a5, 98b
47    sub     a5, a5, a4
48    simcall
49.endm
50
51.macro test_init
52.endm
53
54.macro test name
55#ifdef DEBUG
56    print test_\name
57#endif
58    test_init
59test_\name:
60.global test_\name
61.endm
62
63.macro test_end
6499:
65    reset_ps
66    movi    a2, status
67    l32i    a3, a2, 0
68    addi    a3, a3, 1
69    s32i    a3, a2, 0
70.endm
71
72.macro exit
73    movi    a2, 1
74    simcall
75.endm
76
77.macro test_fail
78    movi    a2, status
79    l32i    a2, a2, 0
80    movi    a3, 1
81    s8i     a3, a2, 0
82#ifdef DEBUG
83    print   failed
84#endif
85    j       99f
86.endm
87
88.macro assert cond, arg1, arg2
89    b\cond  \arg1, \arg2, 90f
90    test_fail
9190:
92    nop
93.endm
94
95.macro set_vector vector, addr
96    movi    a2, handler_\vector
97    movi    a3, \addr
98    s32i    a3, a2, 0
99.endm
100
101.macro dump r
102#ifdef DEBUG
103.data
104.align 4
1051: .word 0
106.text
107    movi    a4, 1b
108    s32i    a2, a4, 0
109    movi    a2, 4
110    movi    a3, 1
111    movi    a5, 4
112    simcall
113    movi    a4, 1b
114    l32i    a2, a4, 0
115#endif
116.endm
117
118#define glue(a, b) _glue(a, b)
119#define _glue(a, b) a ## b
120
121#define glue3(a, b, c) _glue3(a, b, c)
122#define _glue3(a, b, c) a ## b ## c
123