(linenum→info "unix/slp.c:2238")

qemu/0.9.1/m68k-dis.c

    1: /* This file is composed of several different files from the upstream
    2:    sourceware.org CVS.  Original file boundaries marked with **** */
    3: 
    4: #include <string.h>
    5: #include <math.h>
    6: #include <stdio.h>
    7: 
    8: #include "dis-asm.h"
    9: 
   10: /* **** foatformat.h from sourceware.org CVS 2005-08-14.  */
   11: /* IEEE floating point support declarations, for GDB, the GNU Debugger.
   12:    Copyright 1991, 1994, 1995, 1997, 2000, 2003 Free Software Foundation, Inc.
   13: 
   14: This file is part of GDB.
   15: 
   16: This program is free software; you can redistribute it and/or modify
   17: it under the terms of the GNU General Public License as published by
   18: the Free Software Foundation; either version 2 of the License, or
   19: (at your option) any later version.
   20: 
   21: This program is distributed in the hope that it will be useful,
   22: but WITHOUT ANY WARRANTY; without even the implied warranty of
   23: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   24: GNU General Public License for more details.
   25: 
   26: You should have received a copy of the GNU General Public License
   27: along with this program; if not, write to the Free Software
   28: Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
   29: 
   30: #if !defined (FLOATFORMAT_H)
   31: #define FLOATFORMAT_H 1
   32: 
   33: /*#include "ansidecl.h" */
   34: 
   35: /* A floatformat consists of a sign bit, an exponent and a mantissa.  Once the
   36:    bytes are concatenated according to the byteorder flag, then each of those
   37:    fields is contiguous.  We number the bits with 0 being the most significant
   38:    (i.e. BITS_BIG_ENDIAN type numbering), and specify which bits each field
   39:    contains with the *_start and *_len fields.  */
   40: 
   41: /* What is the order of the bytes. */
   42: 
   43: enum floatformat_byteorders {
   44: 
   45:   /* Standard little endian byte order.
   46:      EX: 1.2345678e10 => 00 00 80 c5 e0 fe 06 42 */
   47: 
   48:   floatformat_little,
   49: 
   50:   /* Standard big endian byte order.
   51:      EX: 1.2345678e10 => 42 06 fe e0 c5 80 00 00 */
   52: 
   53:   floatformat_big,
   54: 
   55:   /* Little endian byte order but big endian word order.
   56:      EX: 1.2345678e10 => e0 fe 06 42 00 00 80 c5 */
   57: 
   58:   floatformat_littlebyte_bigword
   59: 
   60: };
   61: 
   62: enum floatformat_intbit { floatformat_intbit_yes, floatformat_intbit_no };
   63: 
   64: struct floatformat
   65: {
   66:   enum floatformat_byteorders byteorder;
   67:   unsigned int totalsize;       /* Total size of number in bits */
   68: 
   69:   /* Sign bit is always one bit long.  1 means negative, 0 means positive.  */
   70:   unsigned int sign_start;
   71: 
   72:   unsigned int exp_start;
   73:   unsigned int exp_len;
   74:   /* Bias added to a "true" exponent to form the biased exponent.  It
   75:      is intentionally signed as, otherwize, -exp_bias can turn into a
   76:      very large number (e.g., given the exp_bias of 0x3fff and a 64
   77:      bit long, the equation (long)(1 - exp_bias) evaluates to
   78:      4294950914) instead of -16382).  */
   79:   int exp_bias;
   80:   /* Exponent value which indicates NaN.  This is the actual value stored in
   81:      the float, not adjusted by the exp_bias.  This usually consists of all
   82:      one bits.  */
   83:   unsigned int exp_nan;
   84: 
   85:   unsigned int man_start;
   86:   unsigned int man_len;
   87: 
   88:   /* Is the integer bit explicit or implicit?  */
   89:   enum floatformat_intbit intbit;
   90: 
   91:   /* Internal name for debugging. */
   92:   const char *name;
   93: 
   94:   /* Validator method.  */
   95:   int (*is_valid) (const struct floatformat *fmt, const char *from);
   96: };
   97: 
   98: /* floatformats for IEEE single and double, big and little endian.  */
   99: 
  100: extern const struct floatformat floatformat_ieee_single_big;
  101: extern const struct floatformat floatformat_ieee_single_little;
  102: extern const struct floatformat floatformat_ieee_double_big;
  103: extern const struct floatformat floatformat_ieee_double_little;
  104: 
  105: /* floatformat for ARM IEEE double, little endian bytes and big endian words */
  106: 
  107: extern const struct floatformat floatformat_ieee_double_littlebyte_bigword;
  108: 
  109: /* floatformats for various extendeds.  */
  110: 
  111: extern const struct floatformat floatformat_i387_ext;
  112: extern const struct floatformat floatformat_m68881_ext;
  113: extern const struct floatformat floatformat_i960_ext;
  114: extern const struct floatformat floatformat_m88110_ext;
  115: extern const struct floatformat floatformat_m88110_harris_ext;
  116: extern const struct floatformat floatformat_arm_ext_big;
  117: extern const struct floatformat floatformat_arm_ext_littlebyte_bigword;
  118: /* IA-64 Floating Point register spilt into memory.  */
  119: extern const struct floatformat floatformat_ia64_spill_big;
  120: extern const struct floatformat floatformat_ia64_spill_little;
  121: extern const struct floatformat floatformat_ia64_quad_big;
  122: extern const struct floatformat floatformat_ia64_quad_little;
  123: 
  124: /* Convert from FMT to a double.
  125:    FROM is the address of the extended float.
  126:    Store the double in *TO.  */
  127: 
  128: extern void
  129: floatformat_to_double (const struct floatformat *, const char *, double *);
  130: 
  131: /* The converse: convert the double *FROM to FMT
  132:    and store where TO points.  */
  133: 
  134: extern void
  135: floatformat_from_double (const struct floatformat *, const double *, char *);
  136: 
  137: /* Return non-zero iff the data at FROM is a valid number in format FMT.  */
  138: 
  139: extern int
  140: floatformat_is_valid (const struct floatformat *fmt, const char *from);
  141: 
  142: #endif  /* defined (FLOATFORMAT_H) */
  143: /* **** End of floatformat.h */
  144: /* **** m68k-dis.h from sourceware.org CVS 2005-08-14.  */
  145: /* Opcode table header for m680[01234]0/m6888[12]/m68851.
  146:    Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2001,
  147:    2003, 2004 Free Software Foundation, Inc.
  148: 
  149:    This file is part of GDB, GAS, and the GNU binutils.
  150: 
  151:    GDB, GAS, and the GNU binutils are free software; you can redistribute
  152:    them and/or modify them under the terms of the GNU General Public
  153:    License as published by the Free Software Foundation; either version
  154:    1, or (at your option) any later version.
  155: 
  156:    GDB, GAS, and the GNU binutils are distributed in the hope that they
  157:    will be useful, but WITHOUT ANY WARRANTY; without even the implied
  158:    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
  159:    the GNU General Public License for more details.
  160: 
  161:    You should have received a copy of the GNU General Public License
  162:    along with this file; see the file COPYING.  If not, write to the Free
  163:    Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
  164:    02110-1301, USA.  */
  165: 
  166: /* These are used as bit flags for the arch field in the m68k_opcode
  167:    structure.  */
  168: #define _m68k_undef  0
  169: #define m68000   0x001
  170: #define m68008   m68000 /* Synonym for -m68000.  otherwise unused.  */
  171: #define m68010   0x002
  172: #define m68020   0x004
  173: #define m68030   0x008
  174: #define m68ec030 m68030 /* Similar enough to -m68030 to ignore differences;
  175:                            gas will deal with the few differences.  */
  176: #define m68040   0x010
  177: /* There is no 68050.  */
  178: #define m68060   0x020
  179: #define m68881   0x040
  180: #define m68882   m68881 /* Synonym for -m68881.  otherwise unused.  */
  181: #define m68851   0x080
  182: #define cpu32    0x100            /* e.g., 68332 */
  183: 
  184: #define mcfmac   0x200          /* ColdFire MAC. */
  185: #define mcfemac  0x400          /* ColdFire EMAC. */
  186: #define cfloat   0x800          /* ColdFire FPU.  */
  187: #define mcfhwdiv 0x1000         /* ColdFire hardware divide.  */
  188: 
  189: #define mcfisa_a 0x2000         /* ColdFire ISA_A.  */
  190: #define mcfisa_aa 0x4000        /* ColdFire ISA_A+.  */
  191: #define mcfisa_b 0x8000         /* ColdFire ISA_B.  */
  192: #define mcfusp   0x10000        /* ColdFire USP instructions.  */
  193: 
  194: #define mcf5200  0x20000
  195: #define mcf5206e 0x40000
  196: #define mcf521x  0x80000
  197: #define mcf5249  0x100000
  198: #define mcf528x  0x200000
  199: #define mcf5307  0x400000
  200: #define mcf5407  0x800000
  201: #define mcf5470  0x1000000
  202: #define mcf5480  0x2000000
  203: 
  204:  /* Handy aliases.  */
  205: #define m68040up   (m68040 | m68060)
  206: #define m68030up   (m68030 | m68040up)
  207: #define m68020up   (m68020 | m68030up)
  208: #define m68010up   (m68010 | cpu32 | m68020up)
  209: #define m68000up   (m68000 | m68010up)
  210: 
  211: #define mfloat  (m68881 | m68882 | m68040 | m68060)
  212: #define mmmu    (m68851 | m68030 | m68040 | m68060)
  213: 
  214: /* The structure used to hold information for an opcode.  */
  215: 
  216: struct m68k_opcode
  217: {
  218:   /* The opcode name.  */
  219:   const char *name;
  220:   /* The pseudo-size of the instruction(in bytes).  Used to determine
  221:      number of bytes necessary to disassemble the instruction.  */
  222:   unsigned int size;
  223:   /* The opcode itself.  */
  224:   unsigned long opcode;
  225:   /* The mask used by the disassembler.  */
  226:   unsigned long match;
  227:   /* The arguments.  */
  228:   const char *args;
  229:   /* The architectures which support this opcode.  */
  230:   unsigned int arch;
  231: };
  232: 
  233: /* The structure used to hold information for an opcode alias.  */
  234: 
  235: struct m68k_opcode_alias
  236: {
  237:   /* The alias name.  */
  238:   const char *alias;
  239:   /* The instruction for which this is an alias.  */
  240:   const char *primary;
  241: };
  242: 
  243: /* We store four bytes of opcode for all opcodes because that is the
  244:    most any of them need.  The actual length of an instruction is
  245:    always at least 2 bytes, and is as much longer as necessary to hold
  246:    the operands it has.
  247: 
  248:    The match field is a mask saying which bits must match particular
  249:    opcode in order for an instruction to be an instance of that
  250:    opcode.
  251: 
  252:    The args field is a string containing two characters for each
  253:    operand of the instruction.  The first specifies the kind of
  254:    operand; the second, the place it is stored.  */
  255: 
  256: /* Kinds of operands:
  257:    Characters used: AaBbCcDdEeFfGgHIiJkLlMmnOopQqRrSsTtU VvWwXxYyZz01234|*~%;@!&$?/<>#^+-
  258: 
  259:    D  data register only.  Stored as 3 bits.
  260:    A  address register only.  Stored as 3 bits.
  261:    a  address register indirect only.  Stored as 3 bits.
  262:    R  either kind of register.  Stored as 4 bits.
  263:    r  either kind of register indirect only.  Stored as 4 bits.
  264:       At the moment, used only for cas2 instruction.
  265:    F  floating point coprocessor register only.   Stored as 3 bits.
  266:    O  an offset (or width): immediate data 0-31 or data register.
  267:       Stored as 6 bits in special format for BF... insns.
  268:    +  autoincrement only.  Stored as 3 bits (number of the address register).
  269:    -  autodecrement only.  Stored as 3 bits (number of the address register).
  270:    Q  quick immediate data.  Stored as 3 bits.
  271:       This matches an immediate operand only when value is in range 1 .. 8.
  272:    M  moveq immediate data.  Stored as 8 bits.
  273:       This matches an immediate operand only when value is in range -128..127
  274:    T  trap vector immediate data.  Stored as 4 bits.
  275: 
  276:    k  K-factor for fmove.p instruction.   Stored as a 7-bit constant or
  277:       a three bit register offset, depending on the field type.
  278: 
  279:    #  immediate data.  Stored in special places (b, w or l)
  280:       which say how many bits to store.
  281:    ^  immediate data for floating point instructions.   Special places
  282:       are offset by 2 bytes from '#'...
  283:    B  pc-relative address, converted to an offset
  284:       that is treated as immediate data.
  285:    d  displacement and register.  Stores the register as 3 bits
  286:       and stores the displacement in the entire second word.
  287: 
  288:    C  the CCR.  No need to store it; this is just for filtering validity.
  289:    S  the SR.  No need to store, just as with CCR.
  290:    U  the USP.  No need to store, just as with CCR.
  291:    E  the MAC ACC.  No need to store, just as with CCR.
  292:    e  the EMAC ACC[0123].
  293:    G  the MAC/EMAC MACSR.  No need to store, just as with CCR.
  294:    g  the EMAC ACCEXT{01,23}.
  295:    H  the MASK.  No need to store, just as with CCR.
  296:    i  the MAC/EMAC scale factor.
  297: 
  298:    I  Coprocessor ID.   Not printed if 1.   The Coprocessor ID is always
  299:       extracted from the 'd' field of word one, which means that an extended
  300:       coprocessor opcode can be skipped using the 'i' place, if needed.
  301: 
  302:    s  System Control register for the floating point coprocessor.
  303: 
  304:    J  Misc register for movec instruction, stored in 'j' format.
  305:         Possible values:
  306:         0x000  SFC      Source Function Code reg     [60, 40, 30, 20, 10]
  307:         0x001  DFC      Data Function Code reg               [60, 40, 30, 20, 10]
  308:         0x002   CACR    Cache Control Register          [60, 40, 30, 20, mcf]
  309:         0x003  TC       MMU Translation Control               [60, 40]
  310:         0x004  ITT0     Instruction Transparent
  311:                                 Translation reg 0   [60, 40]
  312:         0x005  ITT1     Instruction Transparent
  313:                                 Translation reg 1   [60, 40]
  314:         0x006  DTT0     Data Transparent
  315:                                 Translation reg 0   [60, 40]
  316:         0x007  DTT1     Data Transparent
  317:                                 Translation reg 1   [60, 40]
  318:         0x008  BUSCR    Bus Control Register               [60]
  319:         0x800  USP      User Stack Pointer           [60, 40, 30, 20, 10]
  320:         0x801   VBR     Vector Base reg                 [60, 40, 30, 20, 10, mcf]
  321:         0x802  CAAR     Cache Address Register              [        30, 20]
  322:         0x803  MSP      Master Stack Pointer         [    40, 30, 20]
  323:         0x804  ISP      Interrupt Stack Pointer              [    40, 30, 20]
  324:         0x805  MMUSR    MMU Status reg                     [    40]
  325:         0x806  URP      User Root Pointer            [60, 40]
  326:         0x807  SRP      Supervisor Root Pointer              [60, 40]
  327:         0x808  PCR      Processor Configuration reg  [60]
  328:         0xC00  ROMBAR   ROM Base Address Register [520X]
  329:         0xC04  RAMBAR0  RAM Base Address Register 0      [520X]
  330:         0xC05  RAMBAR1  RAM Base Address Register 0      [520X]
  331:         0xC0F  MBAR0    RAM Base Address Register 0        [520X]
  332:         0xC04   FLASHBAR FLASH Base Address Register    [mcf528x]
  333:         0xC05   RAMBAR  Static RAM Base Address Register [mcf528x]
  334: 
  335:     L  Register list of the type d0-d7/a0-a7 etc.
  336:        (New!  Improved!  Can also hold fp0-fp7, as well!)
  337:        The assembler tries to see if the registers match the insn by
  338:        looking at where the insn wants them stored.
  339: 
  340:     l  Register list like L, but with all the bits reversed.
  341:        Used for going the other way. . .
  342: 
  343:     c  cache identifier which may be "nc" for no cache, "ic"
  344:        for instruction cache, "dc" for data cache, or "bc"
  345:        for both caches.  Used in cinv and cpush.  Always
  346:        stored in position "d".
  347: 
  348:     u  Any register, with ``upper'' or ``lower'' specification.  Used
  349:        in the mac instructions with size word.
  350: 
  351:  The remainder are all stored as 6 bits using an address mode and a
  352:  register number; they differ in which addressing modes they match.
  353: 
  354:    *  all                                       (modes 0-6,7.0-4)
  355:    ~  alterable memory                          (modes 2-6,7.0,7.1)
  356:                                                 (not 0,1,7.2-4)
  357:    %  alterable                                 (modes 0-6,7.0,7.1)
  358:                                                 (not 7.2-4)
  359:    ;  data                                      (modes 0,2-6,7.0-4)
  360:                                                 (not 1)
  361:    @  data, but not immediate                   (modes 0,2-6,7.0-3)
  362:                                                 (not 1,7.4)
  363:    !  control                                   (modes 2,5,6,7.0-3)
  364:                                                 (not 0,1,3,4,7.4)
  365:    &  alterable control                         (modes 2,5,6,7.0,7.1)
  366:                                                 (not 0,1,3,4,7.2-4)
  367:    $  alterable data                            (modes 0,2-6,7.0,7.1)
  368:                                                 (not 1,7.2-4)
  369:    ?  alterable control, or data register       (modes 0,2,5,6,7.0,7.1)
  370:                                                 (not 1,3,4,7.2-4)
  371:    /  control, or data register                 (modes 0,2,5,6,7.0-3)
  372:                                                 (not 1,3,4,7.4)
  373:    >  *save operands                            (modes 2,4,5,6,7.0,7.1)
  374:                                                 (not 0,1,3,7.2-4)
  375:    <  *restore operands                         (modes 2,3,5,6,7.0-3)
  376:                                                 (not 0,1,4,7.4)
  377: 
  378:    coldfire move operands:
  379:    m                                            (modes 0-4)
  380:    n                                            (modes 5,7.2)
  381:    o                                            (modes 6,7.0,7.1,7.3,7.4)
  382:    p                                            (modes 0-5)
  383: 
  384:    coldfire bset/bclr/btst/mulsl/mulul operands:
  385:    q                                            (modes 0,2-5)
  386:    v                                            (modes 0,2-5,7.0,7.1)
  387:    b                                            (modes 0,2-5,7.2)
  388:    w                                            (modes 2-5,7.2)
  389:    y                                            (modes 2,5)
  390:    z                                            (modes 2,5,7.2)
  391:    x  mov3q immediate operand.
  392:    4                                            (modes 2,3,4,5)
  393:   */
  394: 
  395: /* For the 68851:  */
  396: /* I didn't use much imagination in choosing the
  397:    following codes, so many of them aren't very
  398:    mnemonic. -rab
  399: 
  400:    0  32 bit pmmu register
  401:         Possible values:
  402:         000    TC Translation Control Register (68030, 68851)
  403: 
  404:    1  16 bit pmmu register
  405:         111    AC Access Control (68851)
  406: 
  407:    2  8 bit pmmu register
  408:         100    CAL        Current Access Level (68851)
  409:         101    VAL        Validate Access Level (68851)
  410:         110    SCC        Stack Change Control (68851)
  411: 
  412:    3  68030-only pmmu registers (32 bit)
  413:         010    TT0        Transparent Translation reg 0
  414:                         (aka Access Control reg 0 -- AC0 -- on 68ec030)
  415:         011    TT1        Transparent Translation reg 1
  416:                         (aka Access Control reg 1 -- AC1 -- on 68ec030)
  417: 
  418:    W  wide pmmu registers
  419:         Possible values:
  420:         001    DRP        Dma Root Pointer (68851)
  421:         010    SRP        Supervisor Root Pointer (68030, 68851)
  422:         011    CRP        Cpu Root Pointer (68030, 68851)
  423: 
  424:    f    function code register (68030, 68851)
  425:         0      SFC
  426:         1      DFC
  427: 
  428:    V    VAL register only (68851)
  429: 
  430:    X    BADx, BACx (16 bit)
  431:         100    BAD        Breakpoint Acknowledge Data (68851)
  432:         101    BAC        Breakpoint Acknowledge Control (68851)
  433: 
  434:    Y    PSR (68851) (MMUSR on 68030) (ACUSR on 68ec030)
  435:    Z    PCSR (68851)
  436: 
  437:    |    memory             (modes 2-6, 7.*)
  438: 
  439:    t  address test level (68030 only)
  440:       Stored as 3 bits, range 0-7.
  441:       Also used for breakpoint instruction now.
  442: 
  443: */
  444: 
  445: /* Places to put an operand, for non-general operands:
  446:    Characters used: BbCcDdFfGgHhIijkLlMmNnostWw123456789/
  447: 
  448:    s  source, low bits of first word.
  449:    d  dest, shifted 9 in first word
  450:    1  second word, shifted 12
  451:    2  second word, shifted 6
  452:    3  second word, shifted 0
  453:    4  third word, shifted 12
  454:    5  third word, shifted 6
  455:    6  third word, shifted 0
  456:    7  second word, shifted 7
  457:    8  second word, shifted 10
  458:    9  second word, shifted 5
  459:    D  store in both place 1 and place 3; for divul and divsl.
  460:    B  first word, low byte, for branch displacements
  461:    W  second word (entire), for branch displacements
  462:    L  second and third words (entire), for branch displacements
  463:       (also overloaded for move16)
  464:    b  second word, low byte
  465:    w  second word (entire) [variable word/long branch offset for dbra]
  466:    W  second word (entire) (must be signed 16 bit value)
  467:    l  second and third word (entire)
  468:    g  variable branch offset for bra and similar instructions.
  469:       The place to store depends on the magnitude of offset.
  470:    t  store in both place 7 and place 8; for floating point operations
  471:    c  branch offset for cpBcc operations.
  472:       The place to store is word two if bit six of word one is zero,
  473:       and words two and three if bit six of word one is one.
  474:    i  Increment by two, to skip over coprocessor extended operands.   Only
  475:       works with the 'I' format.
  476:    k  Dynamic K-factor field.   Bits 6-4 of word 2, used as a register number.
  477:       Also used for dynamic fmovem instruction.
  478:    C  floating point coprocessor constant - 7 bits.  Also used for static
  479:       K-factors...
  480:    j  Movec register #, stored in 12 low bits of second word.
  481:    m  For M[S]ACx; 4 bits split with MSB shifted 6 bits in first word
  482:       and remaining 3 bits of register shifted 9 bits in first word.
  483:       Indicate upper/lower in 1 bit shifted 7 bits in second word.
  484:       Use with `R' or `u' format.
  485:    n  `m' withouth upper/lower indication. (For M[S]ACx; 4 bits split
  486:       with MSB shifted 6 bits in first word and remaining 3 bits of
  487:       register shifted 9 bits in first word.  No upper/lower
  488:       indication is done.)  Use with `R' or `u' format.
  489:    o  For M[S]ACw; 4 bits shifted 12 in second word (like `1').
  490:       Indicate upper/lower in 1 bit shifted 7 bits in second word.
  491:       Use with `R' or `u' format.
  492:    M  For M[S]ACw; 4 bits in low bits of first word.  Indicate
  493:       upper/lower in 1 bit shifted 6 bits in second word.  Use with
  494:       `R' or `u' format.
  495:    N  For M[S]ACw; 4 bits in low bits of second word.  Indicate
  496:       upper/lower in 1 bit shifted 6 bits in second word.  Use with
  497:       `R' or `u' format.
  498:    h  shift indicator (scale factor), 1 bit shifted 10 in second word
  499: 
  500:  Places to put operand, for general operands:
  501:    d  destination, shifted 6 bits in first word
  502:    b  source, at low bit of first word, and immediate uses one byte
  503:    w  source, at low bit of first word, and immediate uses two bytes
  504:    l  source, at low bit of first word, and immediate uses four bytes
  505:    s  source, at low bit of first word.
  506:       Used sometimes in contexts where immediate is not allowed anyway.
  507:    f  single precision float, low bit of 1st word, immediate uses 4 bytes
  508:    F  double precision float, low bit of 1st word, immediate uses 8 bytes
  509:    x  extended precision float, low bit of 1st word, immediate uses 12 bytes
  510:    p  packed float, low bit of 1st word, immediate uses 12 bytes
  511:    G  EMAC accumulator, load  (bit 4 2nd word, !bit8 first word)
  512:    H  EMAC accumulator, non load  (bit 4 2nd word, bit 8 first word)
  513:    F  EMAC ACCx
  514:    f  EMAC ACCy
  515:    I  MAC/EMAC scale factor
  516:    /  Like 's', but set 2nd word, bit 5 if trailing_ampersand set
  517:    ]  first word, bit 10
  518: */
  519: 
  520: extern const struct m68k_opcode m68k_opcodes[];
  521: extern const struct m68k_opcode_alias m68k_opcode_aliases[];
  522: 
  523: extern const int m68k_numopcodes, m68k_numaliases;
  524: 
  525: /* **** End of m68k-opcode.h */
  526: /* **** m68k-dis.c from sourceware.org CVS 2005-08-14.  */
  527: /* Print Motorola 68k instructions.
  528:    Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
  529:    1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
  530:    Free Software Foundation, Inc.
  531: 
  532:    This file is free software; you can redistribute it and/or modify
  533:    it under the terms of the GNU General Public License as published by
  534:    the Free Software Foundation; either version 2 of the License, or
  535:    (at your option) any later version.
  536: 
  537:    This program is distributed in the hope that it will be useful,
  538:    but WITHOUT ANY WARRANTY; without even the implied warranty of
  539:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  540:    GNU General Public License for more details.
  541: 
  542:    You should have received a copy of the GNU General Public License
  543:    along with this program; if not, write to the Free Software
  544:    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
  545:    MA 02110-1301, USA.  */
  546: 
  547: /* Local function prototypes.  */
  548: 
  549: const char * const fpcr_names[] =
  550: {
  551:   "", "%fpiar", "%fpsr", "%fpiar/%fpsr", "%fpcr",
  552:   "%fpiar/%fpcr", "%fpsr/%fpcr", "%fpiar/%fpsr/%fpcr"
  553: };
  554: 
  555: static char *const reg_names[] =
  556: {
  557:   "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",
  558:   "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%fp", "%sp",
  559:   "%ps", "%pc"
  560: };
  561: 
  562: /* Name of register halves for MAC/EMAC.
  563:    Separate from reg_names since 'spu', 'fpl' look weird.  */
  564: static char *const reg_half_names[] =
  565: {
  566:   "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",
  567:   "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%a7",
  568:   "%ps", "%pc"
  569: };
  570: 
  571: /* Sign-extend an (unsigned char).  */
  572: #if __STDC__ == 1
  573: #define COERCE_SIGNED_CHAR(ch) ((signed char) (ch))
  574: #else
  575: #define COERCE_SIGNED_CHAR(ch) ((int) (((ch) ^ 0x80) & 0xFF) - 128)
  576: #endif
  577: 
  578: /* Get a 1 byte signed integer.  */
  579: #define NEXTBYTE(p)  (p += 2, FETCH_DATA (info, p), COERCE_SIGNED_CHAR(p[-1]))
  580: 
  581: /* Get a 2 byte signed integer.  */
  582: #define COERCE16(x) ((int) (((x) ^ 0x8000) - 0x8000))
  583: #define NEXTWORD(p)  \
  584:   (p += 2, FETCH_DATA (info, p), \
  585:    COERCE16 ((p[-2] << 8) + p[-1]))
  586: 
  587: /* Get a 4 byte signed integer.  */
  588: #define COERCE32(x) ((bfd_signed_vma) ((x) ^ 0x80000000) - 0x80000000)
  589: #define NEXTLONG(p)  \
  590:   (p += 4, FETCH_DATA (info, p), \
  591:    (COERCE32 ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1])))
  592: 
  593: /* Get a 4 byte unsigned integer.  */
  594: #define NEXTULONG(p)  \
  595:   (p += 4, FETCH_DATA (info, p), \
  596:    (unsigned int) ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1]))
  597: 
  598: