@ -1,5 +1,5 @@
/* Opcode table header for m680[01234]0/m6888[12]/m68851.
/* Opcode table header for m680[01234]0/m6888[12]/m68851.
Copyright 1989 , 91 , 92 , 93 , 94 , 95 , 96 , 1997 Free Software Foundation .
Copyright 1989 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 1999 Free Software Foundation .
This file is part of GDB , GAS , and the GNU binutils .
This file is part of GDB , GAS , and the GNU binutils .
@ -36,6 +36,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
# define m68851 0x080
# define m68851 0x080
# define cpu32 0x100 /* e.g., 68332 */
# define cpu32 0x100 /* e.g., 68332 */
# define mcf5200 0x200
# define mcf5200 0x200
# define mcf5206e 0x400
# define mcf5307 0x800
/* handy aliases */
/* handy aliases */
# define m68040up (m68040 | m68060)
# define m68040up (m68040 | m68060)
@ -43,6 +45,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
# define m68020up (m68020 | m68030up)
# define m68020up (m68020 | m68030up)
# define m68010up (m68010 | cpu32 | m68020up)
# define m68010up (m68010 | cpu32 | m68020up)
# define m68000up (m68000 | m68010up)
# define m68000up (m68000 | m68010up)
# define mcf (mcf5200 | mcf5206e | mcf5307)
# define mfloat (m68881 | m68882 | m68040 | m68060)
# define mfloat (m68881 | m68882 | m68040 | m68060)
# define mmmu (m68851 | m68030 | m68040 | m68060)
# define mmmu (m68851 | m68030 | m68040 | m68060)
@ -87,7 +90,7 @@ struct m68k_opcode_alias
operand ; the second , the place it is stored . */
operand ; the second , the place it is stored . */
/* Kinds of operands:
/* Kinds of operands:
Characters used : AaBCcDdFfIJkLlMmnOopQqRrSsTtUVvWXYZ0123 | * ~ % ; @ ! & $ ? / < > # ^ + -
Characters used : AaBCcDdE FfGH IJkLlMmnOopQqRrSsTtU VvWXYZ0123 | * ~ % ; @ ! & $ ? / < > # ^ + -
D data register only . Stored as 3 bits .
D data register only . Stored as 3 bits .
A address register only . Stored as 3 bits .
A address register only . Stored as 3 bits .
@ -121,6 +124,9 @@ struct m68k_opcode_alias
C the CCR . No need to store it ; this is just for filtering validity .
C the CCR . No need to store it ; this is just for filtering validity .
S the SR . No need to store , just as with CCR .
S the SR . No need to store , just as with CCR .
U the USP . No need to store , just as with CCR .
U the USP . No need to store , just as with CCR .
E the ACC . No need to store , just as with CCR .
G the MACSR . No need to store , just as with CCR .
H the MASK . No need to store , just as with CCR .
I Coprocessor ID . Not printed if 1. The Coprocessor ID is always
I Coprocessor ID . Not printed if 1. The Coprocessor ID is always
extracted from the ' d ' field of word one , which means that an extended
extracted from the ' d ' field of word one , which means that an extended
@ -170,6 +176,9 @@ struct m68k_opcode_alias
for both caches . Used in cinv and cpush . Always
for both caches . Used in cinv and cpush . Always
stored in position " d " .
stored in position " d " .
u Any register , with ` ` upper ' ' or ` ` lower ' ' specification . Used
in the mac instructions with size word .
The remainder are all stored as 6 bits using an address mode and a
The remainder are all stored as 6 bits using an address mode and a
register number ; they differ in which addressing modes they match .
register number ; they differ in which addressing modes they match .
@ -260,6 +269,8 @@ struct m68k_opcode_alias
*/
*/
/* Places to put an operand, for non-general operands:
/* Places to put an operand, for non-general operands:
Characters used : BbCcDdghijkLlMmNnostWw123456789
s source , low bits of first word .
s source , low bits of first word .
d dest , shifted 9 in first word
d dest , shifted 9 in first word
1 second word , shifted 12
1 second word , shifted 12
@ -293,6 +304,24 @@ struct m68k_opcode_alias
C floating point coprocessor constant - 7 bits . Also used for static
C floating point coprocessor constant - 7 bits . Also used for static
K - factors . . .
K - factors . . .
j Movec register # , stored in 12 low bits of second word .
j Movec register # , stored in 12 low bits of second word .
m For M [ S ] ACx ; 4 bits split with MSB shifted 6 bits in first word
and remaining 3 bits of register shifted 9 bits in first word .
Indicate upper / lower in 1 bit shifted 7 bits in second word .
Use with ` R ' or ` u ' format .
n ` m ' withouth upper / lower indication . ( For M [ S ] ACx ; 4 bits split
with MSB shifted 6 bits in first word and remaining 3 bits of
register shifted 9 bits in first word . No upper / lower
indication is done . ) Use with ` R ' or ` u ' format .
o For M [ S ] ACw ; 4 bits shifted 12 in second word ( like ` 1 ' ) .
Indicate upper / lower in 1 bit shifted 7 bits in second word .
Use with ` R ' or ` u ' format .
M For M [ S ] ACw ; 4 bits in low bits of first word . Indicate
upper / lower in 1 bit shifted 6 bits in second word . Use with
` R ' or ` u ' format .
N For M [ S ] ACw ; 4 bits in low bits of second word . Indicate
upper / lower in 1 bit shifted 6 bits in second word . Use with
` R ' or ` u ' format .
h shift indicator ( scale factor ) , 1 bit shifted 10 in second word
Places to put operand , for general operands :
Places to put operand , for general operands :
d destination , shifted 6 bits in first word
d destination , shifted 6 bits in first word