6c540b1042a4c069f7c5aa0170c11c808eca33d0
[external/binutils.git] / sim / testsuite / sim / msp430 / testutils.inc
1 # MACRO: start
2 # All assembler tests should start with a call to "start"
3         .macro start
4         .text
5
6         # Skip over these inlined funcs.
7         jmp __start;
8
9         .global __pass
10         .type __pass, function
11 __pass:
12         write 1, _passmsg, 5
13         exit 0
14
15         .global __fail
16         .type __fail, function
17 __fail:
18         write 1, _failmsg, 5
19         exit 1
20
21         .data
22 _passmsg:
23         .ascii "pass\n"
24         .align 4
25
26 _failmsg:
27         .ascii "fail\n"
28         .align 4
29
30         .text
31         .global __start
32         .type __start, function
33 __start:
34         .endm
35
36 # MACRO: system_call
37 # Make a libgloss/Linux system call
38         .macro system_call nr:req
39         call #(0x180|\nr);
40         .endm
41
42 # MACRO: exit
43 # Quit the current test
44         .macro exit rc:req
45         mov #\rc, r12
46         system_call 1
47         .endm
48
49 # MACRO: pass
50 # Write 'pass' to stdout via syscalls and quit;
51 # meant for non-OS operating environments
52         .macro pass
53         jmp __pass;
54         .endm
55
56 # MACRO: fail
57 # Write 'fail' to stdout via syscalls and quit;
58 # meant for non-OS operating environments
59         .macro fail
60         jmp __fail;
61         .endm
62
63 # MACRO: write
64 # Just like the write() C function; uses system calls
65         .macro write fd:req, buf:req, count:req
66         mov #\fd, r12;
67         mov #\buf, r13;
68         mov #\count, r14;
69         system_call 5
70         .endm