9eec279c066606060ef74d23b5c36061a6a086b4
[ghc-hetmet.git] / rts / gmp / mpn / m68k / syntax.h
1 /* asm.h -- Definitions for 68k syntax variations.
2
3 Copyright (C) 1992, 1994, 1996 Free Software Foundation, Inc.
4
5 This file is part of the GNU MP Library.
6
7 The GNU MP Library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation; either version 2.1 of the License, or (at your
10 option) any later version.
11
12 The GNU MP Library is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
15 License for more details.
16
17 You should have received a copy of the GNU Lesser General Public License
18 along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
20 MA 02111-1307, USA.  */
21
22 #undef ALIGN
23
24 #ifdef MIT_SYNTAX
25 #define PROLOG(name)
26 #define EPILOG(name)
27 #define R(r)r
28 #define MEM(base)base@
29 #define MEM_DISP(base,displacement)base@(displacement)
30 #define MEM_INDX(base,idx,size_suffix)base@(idx:size_suffix)
31 #define MEM_INDX1(base,idx,size_suffix,scale)base@(idx:size_suffix:scale)
32 #define MEM_PREDEC(memory_base)memory_base@-
33 #define MEM_POSTINC(memory_base)memory_base@+
34 #define L(label) label
35 #define TEXT .text
36 #define ALIGN .even
37 #define GLOBL .globl
38 #define moveql moveq
39 /* Use variable sized opcodes.  */
40 #define bcc jcc
41 #define bcs jcs
42 #define bls jls
43 #define beq jeq
44 #define bne jne
45 #define bra jra
46 #endif
47
48 #ifdef SONY_SYNTAX
49 #define PROLOG(name)
50 #define EPILOG(name)
51 #define R(r)r
52 #define MEM(base)(base)
53 #define MEM_DISP(base,displacement)(displacement,base)
54 #define MEM_INDX(base,idx,size_suffix)(base,idx.size_suffix)
55 #define MEM_INDX1(base,idx,size_suffix,scale)(base,idx.size_suffix*scale)
56 #define MEM_PREDEC(memory_base)-(memory_base)
57 #define MEM_POSTINC(memory_base)(memory_base)+
58 #define L(label) label
59 #define TEXT .text
60 #define ALIGN .even
61 #define GLOBL .globl
62 #endif
63
64 #ifdef MOTOROLA_SYNTAX
65 #define PROLOG(name)
66 #define EPILOG(name)
67 #define R(r)r
68 #define MEM(base)(base)
69 #define MEM_DISP(base,displacement)(displacement,base)
70 #define MEM_INDX(base,idx,size_suffix)(base,idx.size_suffix)
71 #define MEM_INDX1(base,idx,size_suffix,scale)(base,idx.size_suffix*scale)
72 #define MEM_PREDEC(memory_base)-(memory_base)
73 #define MEM_POSTINC(memory_base)(memory_base)+
74 #define L(label) label
75 #define TEXT
76 #define ALIGN
77 #define GLOBL XDEF
78 #define lea LEA
79 #define movel MOVE.L
80 #define moveml MOVEM.L
81 #define moveql MOVEQ.L
82 #define cmpl CMP.L
83 #define orl OR.L
84 #define clrl CLR.L
85 #define eorw EOR.W
86 #define lsrl LSR.L
87 #define lsll LSL.L
88 #define roxrl ROXR.L
89 #define roxll ROXL.L
90 #define addl ADD.L
91 #define addxl ADDX.L
92 #define addql ADDQ.L
93 #define subl SUB.L
94 #define subxl SUBX.L
95 #define subql SUBQ.L
96 #define negl NEG.L
97 #define mulul MULU.L
98 #define bcc BCC
99 #define bcs BCS
100 #define bls BLS
101 #define beq BEQ
102 #define bne BNE
103 #define bra BRA
104 #define dbf DBF
105 #define rts RTS
106 #define d0 D0
107 #define d1 D1
108 #define d2 D2
109 #define d3 D3
110 #define d4 D4
111 #define d5 D5
112 #define d6 D6
113 #define d7 D7
114 #define a0 A0
115 #define a1 A1
116 #define a2 A2
117 #define a3 A3
118 #define a4 A4
119 #define a5 A5
120 #define a6 A6
121 #define a7 A7
122 #define sp SP
123 #endif
124
125 #ifdef ELF_SYNTAX
126 #define PROLOG(name) .type name,@function
127 #define EPILOG(name) .size name,.-name
128 #define MEM(base)(R(base))
129 #define MEM_DISP(base,displacement)(displacement,R(base))
130 #define MEM_PREDEC(memory_base)-(R(memory_base))
131 #define MEM_POSTINC(memory_base)(R(memory_base))+
132 #ifdef __STDC__
133 #define R_(r)%##r
134 #define R(r)R_(r)
135 #define MEM_INDX_(base,idx,size_suffix)(R(base),R(idx##.##size_suffix))
136 #define MEM_INDX(base,idx,size_suffix)MEM_INDX_(base,idx,size_suffix)
137 #define MEM_INDX1_(base,idx,size_suffix,scale)(R(base),R(idx##.##size_suffix*scale))
138 #define MEM_INDX1(base,idx,size_suffix,scale)MEM_INDX1_(base,idx,size_suffix,scale)
139 #define L(label) .##label
140 #else
141 #define R(r)%/**/r
142 #define MEM_INDX(base,idx,size_suffix)(R(base),R(idx).size_suffix)
143 #define MEM_INDX1(base,idx,size_suffix,scale)(R(base),R(idx).size_suffix*scale)
144 #define L(label) ./**/label
145 #endif
146 #define TEXT .text
147 #define ALIGN .align 2
148 #define GLOBL .globl
149 #define bcc jbcc
150 #define bcs jbcs
151 #define bls jbls
152 #define beq jbeq
153 #define bne jbne
154 #define bra jbra
155 #endif
156
157 #if defined (SONY_SYNTAX) || defined (ELF_SYNTAX)
158 #define movel move.l
159 #define moveml movem.l
160 #define moveql moveq.l
161 #define cmpl cmp.l
162 #define orl or.l
163 #define clrl clr.l
164 #define eorw eor.w
165 #define lsrl lsr.l
166 #define lsll lsl.l
167 #define roxrl roxr.l
168 #define roxll roxl.l
169 #define addl add.l
170 #define addxl addx.l
171 #define addql addq.l
172 #define subl sub.l
173 #define subxl subx.l
174 #define subql subq.l
175 #define negl neg.l
176 #define mulul mulu.l
177 #endif