xref: /openbsd-src/gnu/usr.bin/binutils-2.17/include/opcode/m68k.h (revision 3d8817e467ea46cf4772788d6804dd293abfb01a)
1*3d8817e4Smiod /* Opcode table header for m680[01234]0/m6888[12]/m68851.
2*3d8817e4Smiod    Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2001,
3*3d8817e4Smiod    2003, 2004, 2006 Free Software Foundation, Inc.
4*3d8817e4Smiod 
5*3d8817e4Smiod    This file is part of GDB, GAS, and the GNU binutils.
6*3d8817e4Smiod 
7*3d8817e4Smiod    GDB, GAS, and the GNU binutils are free software; you can redistribute
8*3d8817e4Smiod    them and/or modify them under the terms of the GNU General Public
9*3d8817e4Smiod    License as published by the Free Software Foundation; either version
10*3d8817e4Smiod    1, or (at your option) any later version.
11*3d8817e4Smiod 
12*3d8817e4Smiod    GDB, GAS, and the GNU binutils are distributed in the hope that they
13*3d8817e4Smiod    will be useful, but WITHOUT ANY WARRANTY; without even the implied
14*3d8817e4Smiod    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
15*3d8817e4Smiod    the GNU General Public License for more details.
16*3d8817e4Smiod 
17*3d8817e4Smiod    You should have received a copy of the GNU General Public License
18*3d8817e4Smiod    along with this file; see the file COPYING.  If not, write to the Free
19*3d8817e4Smiod    Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
20*3d8817e4Smiod    02110-1301, USA.  */
21*3d8817e4Smiod 
22*3d8817e4Smiod /* These are used as bit flags for the arch field in the m68k_opcode
23*3d8817e4Smiod    structure.  */
24*3d8817e4Smiod #define	_m68k_undef  0
25*3d8817e4Smiod #define	m68000   0x001
26*3d8817e4Smiod #define	m68010   0x002
27*3d8817e4Smiod #define	m68020   0x004
28*3d8817e4Smiod #define	m68030   0x008
29*3d8817e4Smiod #define	m68040   0x010
30*3d8817e4Smiod #define m68060   0x020
31*3d8817e4Smiod #define	m68881   0x040
32*3d8817e4Smiod #define	m68851   0x080
33*3d8817e4Smiod #define cpu32	 0x100		/* e.g., 68332 */
34*3d8817e4Smiod #define m68k_mask  0x1ff
35*3d8817e4Smiod 
36*3d8817e4Smiod #define mcfmac   0x200		/* ColdFire MAC. */
37*3d8817e4Smiod #define mcfemac  0x400		/* ColdFire EMAC. */
38*3d8817e4Smiod #define cfloat   0x800		/* ColdFire FPU.  */
39*3d8817e4Smiod #define mcfhwdiv 0x1000		/* ColdFire hardware divide.  */
40*3d8817e4Smiod 
41*3d8817e4Smiod #define mcfisa_a 0x2000		/* ColdFire ISA_A.  */
42*3d8817e4Smiod #define mcfisa_aa 0x4000	/* ColdFire ISA_A+.  */
43*3d8817e4Smiod #define mcfisa_b 0x8000		/* ColdFire ISA_B.  */
44*3d8817e4Smiod #define mcfusp   0x10000	/* ColdFire USP instructions.  */
45*3d8817e4Smiod #define mcf_mask 0x1f200
46*3d8817e4Smiod 
47*3d8817e4Smiod /* Handy aliases.  */
48*3d8817e4Smiod #define	m68040up   (m68040 | m68060)
49*3d8817e4Smiod #define	m68030up   (m68030 | m68040up)
50*3d8817e4Smiod #define	m68020up   (m68020 | m68030up)
51*3d8817e4Smiod #define	m68010up   (m68010 | cpu32 | m68020up)
52*3d8817e4Smiod #define	m68000up   (m68000 | m68010up)
53*3d8817e4Smiod 
54*3d8817e4Smiod #define	mfloat  (m68881 | m68040 | m68060)
55*3d8817e4Smiod #define	mmmu    (m68851 | m68030 | m68040 | m68060)
56*3d8817e4Smiod 
57*3d8817e4Smiod /* The structure used to hold information for an opcode.  */
58*3d8817e4Smiod 
59*3d8817e4Smiod struct m68k_opcode
60*3d8817e4Smiod {
61*3d8817e4Smiod   /* The opcode name.  */
62*3d8817e4Smiod   const char *name;
63*3d8817e4Smiod   /* The pseudo-size of the instruction(in bytes).  Used to determine
64*3d8817e4Smiod      number of bytes necessary to disassemble the instruction.  */
65*3d8817e4Smiod   unsigned int size;
66*3d8817e4Smiod   /* The opcode itself.  */
67*3d8817e4Smiod   unsigned long opcode;
68*3d8817e4Smiod   /* The mask used by the disassembler.  */
69*3d8817e4Smiod   unsigned long match;
70*3d8817e4Smiod   /* The arguments.  */
71*3d8817e4Smiod   const char *args;
72*3d8817e4Smiod   /* The architectures which support this opcode.  */
73*3d8817e4Smiod   unsigned int arch;
74*3d8817e4Smiod };
75*3d8817e4Smiod 
76*3d8817e4Smiod /* The structure used to hold information for an opcode alias.  */
77*3d8817e4Smiod 
78*3d8817e4Smiod struct m68k_opcode_alias
79*3d8817e4Smiod {
80*3d8817e4Smiod   /* The alias name.  */
81*3d8817e4Smiod   const char *alias;
82*3d8817e4Smiod   /* The instruction for which this is an alias.  */
83*3d8817e4Smiod   const char *primary;
84*3d8817e4Smiod };
85*3d8817e4Smiod 
86*3d8817e4Smiod /* We store four bytes of opcode for all opcodes because that is the
87*3d8817e4Smiod    most any of them need.  The actual length of an instruction is
88*3d8817e4Smiod    always at least 2 bytes, and is as much longer as necessary to hold
89*3d8817e4Smiod    the operands it has.
90*3d8817e4Smiod 
91*3d8817e4Smiod    The match field is a mask saying which bits must match particular
92*3d8817e4Smiod    opcode in order for an instruction to be an instance of that
93*3d8817e4Smiod    opcode.
94*3d8817e4Smiod 
95*3d8817e4Smiod    The args field is a string containing two characters for each
96*3d8817e4Smiod    operand of the instruction.  The first specifies the kind of
97*3d8817e4Smiod    operand; the second, the place it is stored.  */
98*3d8817e4Smiod 
99*3d8817e4Smiod /* Kinds of operands:
100*3d8817e4Smiod    Characters used: AaBbCcDdEeFfGgHIiJkLlMmnOopQqRrSsTtU VvWwXxYyZz01234|*~%;@!&$?/<>#^+-
101*3d8817e4Smiod 
102*3d8817e4Smiod    D  data register only.  Stored as 3 bits.
103*3d8817e4Smiod    A  address register only.  Stored as 3 bits.
104*3d8817e4Smiod    a  address register indirect only.  Stored as 3 bits.
105*3d8817e4Smiod    R  either kind of register.  Stored as 4 bits.
106*3d8817e4Smiod    r  either kind of register indirect only.  Stored as 4 bits.
107*3d8817e4Smiod       At the moment, used only for cas2 instruction.
108*3d8817e4Smiod    F  floating point coprocessor register only.   Stored as 3 bits.
109*3d8817e4Smiod    O  an offset (or width): immediate data 0-31 or data register.
110*3d8817e4Smiod       Stored as 6 bits in special format for BF... insns.
111*3d8817e4Smiod    +  autoincrement only.  Stored as 3 bits (number of the address register).
112*3d8817e4Smiod    -  autodecrement only.  Stored as 3 bits (number of the address register).
113*3d8817e4Smiod    Q  quick immediate data.  Stored as 3 bits.
114*3d8817e4Smiod       This matches an immediate operand only when value is in range 1 .. 8.
115*3d8817e4Smiod    M  moveq immediate data.  Stored as 8 bits.
116*3d8817e4Smiod       This matches an immediate operand only when value is in range -128..127
117*3d8817e4Smiod    T  trap vector immediate data.  Stored as 4 bits.
118*3d8817e4Smiod 
119*3d8817e4Smiod    k  K-factor for fmove.p instruction.   Stored as a 7-bit constant or
120*3d8817e4Smiod       a three bit register offset, depending on the field type.
121*3d8817e4Smiod 
122*3d8817e4Smiod    #  immediate data.  Stored in special places (b, w or l)
123*3d8817e4Smiod       which say how many bits to store.
124*3d8817e4Smiod    ^  immediate data for floating point instructions.   Special places
125*3d8817e4Smiod       are offset by 2 bytes from '#'...
126*3d8817e4Smiod    B  pc-relative address, converted to an offset
127*3d8817e4Smiod       that is treated as immediate data.
128*3d8817e4Smiod    d  displacement and register.  Stores the register as 3 bits
129*3d8817e4Smiod       and stores the displacement in the entire second word.
130*3d8817e4Smiod 
131*3d8817e4Smiod    C  the CCR.  No need to store it; this is just for filtering validity.
132*3d8817e4Smiod    S  the SR.  No need to store, just as with CCR.
133*3d8817e4Smiod    U  the USP.  No need to store, just as with CCR.
134*3d8817e4Smiod    E  the MAC ACC.  No need to store, just as with CCR.
135*3d8817e4Smiod    e  the EMAC ACC[0123].
136*3d8817e4Smiod    G  the MAC/EMAC MACSR.  No need to store, just as with CCR.
137*3d8817e4Smiod    g  the EMAC ACCEXT{01,23}.
138*3d8817e4Smiod    H  the MASK.  No need to store, just as with CCR.
139*3d8817e4Smiod    i  the MAC/EMAC scale factor.
140*3d8817e4Smiod 
141*3d8817e4Smiod    I  Coprocessor ID.   Not printed if 1.   The Coprocessor ID is always
142*3d8817e4Smiod       extracted from the 'd' field of word one, which means that an extended
143*3d8817e4Smiod       coprocessor opcode can be skipped using the 'i' place, if needed.
144*3d8817e4Smiod 
145*3d8817e4Smiod    s  System Control register for the floating point coprocessor.
146*3d8817e4Smiod 
147*3d8817e4Smiod    J  Misc register for movec instruction, stored in 'j' format.
148*3d8817e4Smiod 	Possible values:
149*3d8817e4Smiod 	0x000	SFC	Source Function Code reg	[60, 40, 30, 20, 10]
150*3d8817e4Smiod 	0x001	DFC	Data Function Code reg		[60, 40, 30, 20, 10]
151*3d8817e4Smiod 	0x002   CACR    Cache Control Register          [60, 40, 30, 20, mcf]
152*3d8817e4Smiod 	0x003	TC	MMU Translation Control		[60, 40]
153*3d8817e4Smiod 	0x004	ITT0	Instruction Transparent
154*3d8817e4Smiod 				Translation reg 0	[60, 40]
155*3d8817e4Smiod 	0x005	ITT1	Instruction Transparent
156*3d8817e4Smiod 				Translation reg 1	[60, 40]
157*3d8817e4Smiod 	0x006	DTT0	Data Transparent
158*3d8817e4Smiod 				Translation reg 0	[60, 40]
159*3d8817e4Smiod 	0x007	DTT1	Data Transparent
160*3d8817e4Smiod 				Translation reg 1	[60, 40]
161*3d8817e4Smiod 	0x008	BUSCR	Bus Control Register		[60]
162*3d8817e4Smiod 	0x800	USP	User Stack Pointer		[60, 40, 30, 20, 10]
163*3d8817e4Smiod         0x801   VBR     Vector Base reg                 [60, 40, 30, 20, 10, mcf]
164*3d8817e4Smiod 	0x802	CAAR	Cache Address Register		[        30, 20]
165*3d8817e4Smiod 	0x803	MSP	Master Stack Pointer		[    40, 30, 20]
166*3d8817e4Smiod 	0x804	ISP	Interrupt Stack Pointer		[    40, 30, 20]
167*3d8817e4Smiod 	0x805	MMUSR	MMU Status reg			[    40]
168*3d8817e4Smiod 	0x806	URP	User Root Pointer		[60, 40]
169*3d8817e4Smiod 	0x807	SRP	Supervisor Root Pointer		[60, 40]
170*3d8817e4Smiod 	0x808	PCR	Processor Configuration reg	[60]
171*3d8817e4Smiod 	0xC00	ROMBAR	ROM Base Address Register	[520X]
172*3d8817e4Smiod 	0xC04	RAMBAR0	RAM Base Address Register 0	[520X]
173*3d8817e4Smiod 	0xC05	RAMBAR1	RAM Base Address Register 0	[520X]
174*3d8817e4Smiod 	0xC0F	MBAR0	RAM Base Address Register 0	[520X]
175*3d8817e4Smiod         0xC04   FLASHBAR FLASH Base Address Register    [mcf528x]
176*3d8817e4Smiod         0xC05   RAMBAR  Static RAM Base Address Register [mcf528x]
177*3d8817e4Smiod 
178*3d8817e4Smiod     L  Register list of the type d0-d7/a0-a7 etc.
179*3d8817e4Smiod        (New!  Improved!  Can also hold fp0-fp7, as well!)
180*3d8817e4Smiod        The assembler tries to see if the registers match the insn by
181*3d8817e4Smiod        looking at where the insn wants them stored.
182*3d8817e4Smiod 
183*3d8817e4Smiod     l  Register list like L, but with all the bits reversed.
184*3d8817e4Smiod        Used for going the other way. . .
185*3d8817e4Smiod 
186*3d8817e4Smiod     c  cache identifier which may be "nc" for no cache, "ic"
187*3d8817e4Smiod        for instruction cache, "dc" for data cache, or "bc"
188*3d8817e4Smiod        for both caches.  Used in cinv and cpush.  Always
189*3d8817e4Smiod        stored in position "d".
190*3d8817e4Smiod 
191*3d8817e4Smiod     u  Any register, with ``upper'' or ``lower'' specification.  Used
192*3d8817e4Smiod        in the mac instructions with size word.
193*3d8817e4Smiod 
194*3d8817e4Smiod  The remainder are all stored as 6 bits using an address mode and a
195*3d8817e4Smiod  register number; they differ in which addressing modes they match.
196*3d8817e4Smiod 
197*3d8817e4Smiod    *  all					(modes 0-6,7.0-4)
198*3d8817e4Smiod    ~  alterable memory				(modes 2-6,7.0,7.1)
199*3d8817e4Smiod    						(not 0,1,7.2-4)
200*3d8817e4Smiod    %  alterable					(modes 0-6,7.0,7.1)
201*3d8817e4Smiod 						(not 7.2-4)
202*3d8817e4Smiod    ;  data					(modes 0,2-6,7.0-4)
203*3d8817e4Smiod 						(not 1)
204*3d8817e4Smiod    @  data, but not immediate			(modes 0,2-6,7.0-3)
205*3d8817e4Smiod 						(not 1,7.4)
206*3d8817e4Smiod    !  control					(modes 2,5,6,7.0-3)
207*3d8817e4Smiod 						(not 0,1,3,4,7.4)
208*3d8817e4Smiod    &  alterable control				(modes 2,5,6,7.0,7.1)
209*3d8817e4Smiod 						(not 0,1,3,4,7.2-4)
210*3d8817e4Smiod    $  alterable data				(modes 0,2-6,7.0,7.1)
211*3d8817e4Smiod 						(not 1,7.2-4)
212*3d8817e4Smiod    ?  alterable control, or data register	(modes 0,2,5,6,7.0,7.1)
213*3d8817e4Smiod 						(not 1,3,4,7.2-4)
214*3d8817e4Smiod    /  control, or data register			(modes 0,2,5,6,7.0-3)
215*3d8817e4Smiod 						(not 1,3,4,7.4)
216*3d8817e4Smiod    >  *save operands				(modes 2,4,5,6,7.0,7.1)
217*3d8817e4Smiod 						(not 0,1,3,7.2-4)
218*3d8817e4Smiod    <  *restore operands				(modes 2,3,5,6,7.0-3)
219*3d8817e4Smiod 						(not 0,1,4,7.4)
220*3d8817e4Smiod 
221*3d8817e4Smiod    coldfire move operands:
222*3d8817e4Smiod    m  						(modes 0-4)
223*3d8817e4Smiod    n						(modes 5,7.2)
224*3d8817e4Smiod    o						(modes 6,7.0,7.1,7.3,7.4)
225*3d8817e4Smiod    p						(modes 0-5)
226*3d8817e4Smiod 
227*3d8817e4Smiod    coldfire bset/bclr/btst/mulsl/mulul operands:
228*3d8817e4Smiod    q						(modes 0,2-5)
229*3d8817e4Smiod    v						(modes 0,2-5,7.0,7.1)
230*3d8817e4Smiod    b                                            (modes 0,2-5,7.2)
231*3d8817e4Smiod    w                                            (modes 2-5,7.2)
232*3d8817e4Smiod    y						(modes 2,5)
233*3d8817e4Smiod    z						(modes 2,5,7.2)
234*3d8817e4Smiod    x  mov3q immediate operand.
235*3d8817e4Smiod    4						(modes 2,3,4,5)
236*3d8817e4Smiod   */
237*3d8817e4Smiod 
238*3d8817e4Smiod /* For the 68851:  */
239*3d8817e4Smiod /* I didn't use much imagination in choosing the
240*3d8817e4Smiod    following codes, so many of them aren't very
241*3d8817e4Smiod    mnemonic. -rab
242*3d8817e4Smiod 
243*3d8817e4Smiod    0  32 bit pmmu register
244*3d8817e4Smiod 	Possible values:
245*3d8817e4Smiod 	000	TC	Translation Control Register (68030, 68851)
246*3d8817e4Smiod 
247*3d8817e4Smiod    1  16 bit pmmu register
248*3d8817e4Smiod 	111	AC	Access Control (68851)
249*3d8817e4Smiod 
250*3d8817e4Smiod    2  8 bit pmmu register
251*3d8817e4Smiod 	100	CAL	Current Access Level (68851)
252*3d8817e4Smiod 	101	VAL	Validate Access Level (68851)
253*3d8817e4Smiod 	110	SCC	Stack Change Control (68851)
254*3d8817e4Smiod 
255*3d8817e4Smiod    3  68030-only pmmu registers (32 bit)
256*3d8817e4Smiod 	010	TT0	Transparent Translation reg 0
257*3d8817e4Smiod 			(aka Access Control reg 0 -- AC0 -- on 68ec030)
258*3d8817e4Smiod 	011	TT1	Transparent Translation reg 1
259*3d8817e4Smiod 			(aka Access Control reg 1 -- AC1 -- on 68ec030)
260*3d8817e4Smiod 
261*3d8817e4Smiod    W  wide pmmu registers
262*3d8817e4Smiod 	Possible values:
263*3d8817e4Smiod 	001	DRP	Dma Root Pointer (68851)
264*3d8817e4Smiod 	010	SRP	Supervisor Root Pointer (68030, 68851)
265*3d8817e4Smiod 	011	CRP	Cpu Root Pointer (68030, 68851)
266*3d8817e4Smiod 
267*3d8817e4Smiod    f	function code register (68030, 68851)
268*3d8817e4Smiod 	0	SFC
269*3d8817e4Smiod 	1	DFC
270*3d8817e4Smiod 
271*3d8817e4Smiod    V	VAL register only (68851)
272*3d8817e4Smiod 
273*3d8817e4Smiod    X	BADx, BACx (16 bit)
274*3d8817e4Smiod 	100	BAD	Breakpoint Acknowledge Data (68851)
275*3d8817e4Smiod 	101	BAC	Breakpoint Acknowledge Control (68851)
276*3d8817e4Smiod 
277*3d8817e4Smiod    Y	PSR (68851) (MMUSR on 68030) (ACUSR on 68ec030)
278*3d8817e4Smiod    Z	PCSR (68851)
279*3d8817e4Smiod 
280*3d8817e4Smiod    |	memory 		(modes 2-6, 7.*)
281*3d8817e4Smiod 
282*3d8817e4Smiod    t  address test level (68030 only)
283*3d8817e4Smiod       Stored as 3 bits, range 0-7.
284*3d8817e4Smiod       Also used for breakpoint instruction now.
285*3d8817e4Smiod 
286*3d8817e4Smiod */
287*3d8817e4Smiod 
288*3d8817e4Smiod /* Places to put an operand, for non-general operands:
289*3d8817e4Smiod    Characters used: BbCcDdFfGgHhIijkLlMmNnostWw123456789/
290*3d8817e4Smiod 
291*3d8817e4Smiod    s  source, low bits of first word.
292*3d8817e4Smiod    d  dest, shifted 9 in first word
293*3d8817e4Smiod    1  second word, shifted 12
294*3d8817e4Smiod    2  second word, shifted 6
295*3d8817e4Smiod    3  second word, shifted 0
296*3d8817e4Smiod    4  third word, shifted 12
297*3d8817e4Smiod    5  third word, shifted 6
298*3d8817e4Smiod    6  third word, shifted 0
299*3d8817e4Smiod    7  second word, shifted 7
300*3d8817e4Smiod    8  second word, shifted 10
301*3d8817e4Smiod    9  second word, shifted 5
302*3d8817e4Smiod    D  store in both place 1 and place 3; for divul and divsl.
303*3d8817e4Smiod    B  first word, low byte, for branch displacements
304*3d8817e4Smiod    W  second word (entire), for branch displacements
305*3d8817e4Smiod    L  second and third words (entire), for branch displacements
306*3d8817e4Smiod       (also overloaded for move16)
307*3d8817e4Smiod    b  second word, low byte
308*3d8817e4Smiod    w  second word (entire) [variable word/long branch offset for dbra]
309*3d8817e4Smiod    W  second word (entire) (must be signed 16 bit value)
310*3d8817e4Smiod    l  second and third word (entire)
311*3d8817e4Smiod    g  variable branch offset for bra and similar instructions.
312*3d8817e4Smiod       The place to store depends on the magnitude of offset.
313*3d8817e4Smiod    t  store in both place 7 and place 8; for floating point operations
314*3d8817e4Smiod    c  branch offset for cpBcc operations.
315*3d8817e4Smiod       The place to store is word two if bit six of word one is zero,
316*3d8817e4Smiod       and words two and three if bit six of word one is one.
317*3d8817e4Smiod    i  Increment by two, to skip over coprocessor extended operands.   Only
318*3d8817e4Smiod       works with the 'I' format.
319*3d8817e4Smiod    k  Dynamic K-factor field.   Bits 6-4 of word 2, used as a register number.
320*3d8817e4Smiod       Also used for dynamic fmovem instruction.
321*3d8817e4Smiod    C  floating point coprocessor constant - 7 bits.  Also used for static
322*3d8817e4Smiod       K-factors...
323*3d8817e4Smiod    j  Movec register #, stored in 12 low bits of second word.
324*3d8817e4Smiod    m  For M[S]ACx; 4 bits split with MSB shifted 6 bits in first word
325*3d8817e4Smiod       and remaining 3 bits of register shifted 9 bits in first word.
326*3d8817e4Smiod       Indicate upper/lower in 1 bit shifted 7 bits in second word.
327*3d8817e4Smiod       Use with `R' or `u' format.
328*3d8817e4Smiod    n  `m' withouth upper/lower indication. (For M[S]ACx; 4 bits split
329*3d8817e4Smiod       with MSB shifted 6 bits in first word and remaining 3 bits of
330*3d8817e4Smiod       register shifted 9 bits in first word.  No upper/lower
331*3d8817e4Smiod       indication is done.)  Use with `R' or `u' format.
332*3d8817e4Smiod    o  For M[S]ACw; 4 bits shifted 12 in second word (like `1').
333*3d8817e4Smiod       Indicate upper/lower in 1 bit shifted 7 bits in second word.
334*3d8817e4Smiod       Use with `R' or `u' format.
335*3d8817e4Smiod    M  For M[S]ACw; 4 bits in low bits of first word.  Indicate
336*3d8817e4Smiod       upper/lower in 1 bit shifted 6 bits in second word.  Use with
337*3d8817e4Smiod       `R' or `u' format.
338*3d8817e4Smiod    N  For M[S]ACw; 4 bits in low bits of second word.  Indicate
339*3d8817e4Smiod       upper/lower in 1 bit shifted 6 bits in second word.  Use with
340*3d8817e4Smiod       `R' or `u' format.
341*3d8817e4Smiod    h  shift indicator (scale factor), 1 bit shifted 10 in second word
342*3d8817e4Smiod 
343*3d8817e4Smiod  Places to put operand, for general operands:
344*3d8817e4Smiod    d  destination, shifted 6 bits in first word
345*3d8817e4Smiod    b  source, at low bit of first word, and immediate uses one byte
346*3d8817e4Smiod    w  source, at low bit of first word, and immediate uses two bytes
347*3d8817e4Smiod    l  source, at low bit of first word, and immediate uses four bytes
348*3d8817e4Smiod    s  source, at low bit of first word.
349*3d8817e4Smiod       Used sometimes in contexts where immediate is not allowed anyway.
350*3d8817e4Smiod    f  single precision float, low bit of 1st word, immediate uses 4 bytes
351*3d8817e4Smiod    F  double precision float, low bit of 1st word, immediate uses 8 bytes
352*3d8817e4Smiod    x  extended precision float, low bit of 1st word, immediate uses 12 bytes
353*3d8817e4Smiod    p  packed float, low bit of 1st word, immediate uses 12 bytes
354*3d8817e4Smiod    G  EMAC accumulator, load  (bit 4 2nd word, !bit8 first word)
355*3d8817e4Smiod    H  EMAC accumulator, non load  (bit 4 2nd word, bit 8 first word)
356*3d8817e4Smiod    F  EMAC ACCx
357*3d8817e4Smiod    f  EMAC ACCy
358*3d8817e4Smiod    I  MAC/EMAC scale factor
359*3d8817e4Smiod    /  Like 's', but set 2nd word, bit 5 if trailing_ampersand set
360*3d8817e4Smiod    ]  first word, bit 10
361*3d8817e4Smiod */
362*3d8817e4Smiod 
363*3d8817e4Smiod extern const struct m68k_opcode m68k_opcodes[];
364*3d8817e4Smiod extern const struct m68k_opcode_alias m68k_opcode_aliases[];
365*3d8817e4Smiod 
366*3d8817e4Smiod extern const int m68k_numopcodes, m68k_numaliases;
367*3d8817e4Smiod 
368*3d8817e4Smiod /* end of m68k-opcode.h */
369