⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itable.h

📁 motorola 针对coldfire 5275 评估板的Dbug bootloader源程序
💻 H
字号:
/*
 * File:        src/cpu/coldfire/mcf5xxx/itable.h   
 * Purpose:     Instruction table for asm/disasm routines
 *
 * Notes:
 *
 */

/********************************************************************/
/*
 * Control Registers
 */
const RC rc[] = {

    {"CACR",    0x002},
    {"ASID",    0x003},
    {"ACR0",    0x004},
    {"ACR1",    0x005},
    {"ACR2",    0x006},
    {"ACR3",    0x007},
    {"MMUBAR",  0x008},
    {"OTHER_A7",0x800},
    {"VBR",     0x801},
    {"MACSR",   0x804},
    {"MASK",    0x805},
    {"ACC0",    0x806},
    {"ACC",     0x806},
    {"ACCEXT01",0x807},
    {"ACCEXT23",0x808},
    {"ACC1",    0x809},
    {"ACC2",    0x80A},
    {"ACC3",    0x80B},
    {"SR",      0x80E},
    {"PC",      0x80F},
    {"ROMBAR0", 0xC00},
    {"ROMBAR",  0xC00},
    {"ROMBAR1", 0xC01},
    {"RAMBAR0", 0xC04},
    {"RAMBAR",  0xC04},
    {"RAMBAR1", 0xC05},
    {"MPCR",    0xC0C},
    {"EDRAMBAR",0xC0D},
    {"MBAR2",   0xC0E},
    {"SECMBAR", 0xC0E},
    {"MBAR",    0xC0F},
    {"MBAR1",   0xC0F}
};

const int
RCSIZE = sizeof(rc)/sizeof(RC);

/********************************************************************/

const INSTRENTRY isa[] = {

/* LINE 0000 */
{0xFFF8,0x0080,"ORI",   DRD,func6,AFUN3},   /* ORI.L #<data>,Dn */
{0xFFF8,0x0280,"ANDI",  DRD,func6,AFUN3},   /* ANDI.L #<data>,Dn */
{0xFFF8,0x0480,"SUBI",  DRD,func6,AFUN3},   /* SUBI.L #<data>,Dn */
{0xFFF8,0x0680,"ADDI",  DRD,func6,AFUN3},   /* ADDI.L #<data>,Dn */
{0xFFF8,0x0A80,"EORI",  DRD,func6,AFUN3},   /* EORI.L #<data>,Dn */
{0xFFF8,0x0C80,"CMPI",  DRD,func6,AFUN35},  /* CMPI.L #<data>,Dn */
{0xFFC0,0x0800,"BTST",  EA_DATA1,func1,AFUN9},  /* BTST #<data>,<ea> */
{0xFFC0,0x0840,"BCHG",  EA_DATA1,func1,AFUN9},  /* BCHG #<data>,<ea> */
{0xFFC0,0x08C0,"BSET",  EA_DATA1,func1,AFUN9},  /* BSET #<data>,<ea> */
{0xFFC0,0x0880,"BCLR",  EA_DATA1,func1,AFUN9},  /* BCLR #<data>,<ea> */
{0xF1C0,0x0100,"BTST",  EA_DATA,func7,AFUN9},   /* BTST Dn,<ea> */
{0xF1C0,0x0140,"BCHG",  EA_DATALT1,func7,AFUN9},/* BCHG Dn,<ea> */
{0xF1C0,0x01C0,"BSET",  EA_DATALT1,func7,AFUN9},/* BSET Dn,<ea> */
{0xF1C0,0x0180,"BCLR",  EA_DATALT1,func7,AFUN9},/* BCLR Dn,<ea> */

/* LINE 0001 */
{0xF000,0x1000,"MOVE",  EA_ALL /* dest <ea> */,func8,AFUN26},   /* MOVE.B */

/* LINE 0010 */
{0xF1C0,0x2040,"MOVEA", EA_ALL,func26,AFUN26},  /* MOVEA.L */
{0xF000,0x2000,"MOVE",  EA_ALL /* dest <ea> */,func8,AFUN26},   /* MOVE.L */

/* LINE 0011 */
{0xF1C0,0x3040,"MOVEA", EA_ALL,func26,AFUN26},  /* MOVEA.W */
{0xF000,0x3000,"MOVE",  EA_ALL /* dest <ea> */,func8,AFUN26},   /* MOVE.W */

/* LINE 0100 */
{0xFFFF,0x4AFC,"ILLEGAL",EA_NONE,func17,AFUN1},
{0xFFFF,0x4E71,"NOP",   EA_NONE,func17,AFUN1},
{0xFFFF,0x4AC8,"HALT",  EA_NONE,func17,AFUN1},
{0xFFFF,0x4BCC,"PULSE", EA_NONE,func17,AFUN1},
{0xFFFF,0x4E73,"RTE",   EA_NONE,func17,AFUN1},
{0xFFFF,0x4E75,"RTS",   EA_NONE,func17,AFUN1},
{0xFFFF,0x4E72,"STOP",  EA_NONE,func23,AFUN2},
{0xFFFF,0x4E7A,"MOVEC", EA_NONE,func36,AFUN25},
{0xFFFF,0x4E7B,"MOVEC", EA_NONE,func36,AFUN25},
{0xFFF8,0x4880,"EXT.W", EA_NONE,func13,NULL},   /* EXT.W Dn */
{0xFFF8,0x48C0,"EXT.L", EA_NONE,func13,NULL},   /* EXT.L Dn */
{0xFFF8,0x49C0,"EXTB.L",EA_NONE,func13,NULL},   /* EXTB.L Dn */
{0x0,   0x4800,"EXT",   EA_NONE,func13,AFUN11},
{0x0,   0x49C0,"EXTB",  EA_NONE,func13,AFUN4},  /* for assembly routine */
{0xFFF8,0x4840,"SWAP",  EA_NONE,func13,AFUN4},  /* SWAP.W Dn */
{0xFFF8,0x4E58,"UNLK",  EA_NONE,func21,AFUN7},  /* UNLK An */
{0xFFF8,0x4E50,"LINK",  EA_NONE,func16,AFUN6},  /* LINK.W An,#<disp>*/
{0xFFF8,0x40C0,"MOVE",  DRD,func9,AFUN26},      /* MOVE.W SR,<ea> */
{0xFFF8,0x42C0,"MOVE",  DRD,func11,AFUN26},     /* MOVE.B CCR,<ea> */
{0xFFF8,0x4080,"NEGX",  DRD,func15,AFUN4},      /* NEGX.L Dn */
{0xFFF8,0x4480,"NEG",   DRD,func15,AFUN4},      /* NEG.L Dn */
{0xFFF8,0x4680,"NOT",   DRD,func15,AFUN4},      /* NOT.L Dn */
{0xFFF0,0x4E40,"TRAP",  EA_NONE,func22,AFUN13}, /* TRAP #<vector> */
{0xFFC0,0x46C0,"MOVE",  (DRD | IM),func10,AFUN26},  /* MOVE to SR */
{0xFFC0,0x4200,"CLR",   EA_DATALT1,func15,AFUN10},  /* CLR.B <ea> */
{0xFFC0,0x4240,"CLR",   EA_DATALT1,func15,AFUN10},  /* CLR.W <ea> */
{0xFFC0,0x4280,"CLR",   EA_DATALT1,func15,AFUN10},  /* CLR.L <ea> */
{0xFFC0,0x44C0,"MOVE",  (DRD | IM),func12,AFUN26},  /* MOVE.B <ea>,CCR */
{0xFFC0,0x4840,"PEA",   EA_CONTROL,func18,AFUN8},   /* PEA <ea> */
{0xFFC0,0x4A00,"TST"    ,EA_ALL,func15,AFUN10},     /* TST.B <ea> */
{0xFFC0,0x4A40,"TST"    ,EA_ALL,func15,AFUN10},     /* TST.W <ea> */
{0xFFC0,0x4A80,"TST"    ,EA_ALL,func15,AFUN10},     /* TST.L <ea> */
{0xFFC0,0x4C00,"MULS"   ,(DRD|ARI|ARIPO|ARIPR|ARID|ARII8),func39,AFUN12}, /* MULS.L */
{0x0,   0x4C00,"MULU"   ,EA_DATA,func39,AFUN12},    /* MULU.L */
{0xFFC0,0x4EC0,"JMP",   EA_CONTROL,func18,AFUN8},   /* JMP <ea>*/
{0xFFC0,0x4E80,"JSR",   EA_CONTROL,func18,AFUN8},   /* JSR <ea>*/
{0xFFC0,0x48C0,"MOVEM", (ARI | ARID),func27,AFUN24},/* MOVEM.L <list>,<ea> */
{0xFFC0,0x4CC0,"MOVEM", (ARI | ARID),func27,AFUN24},/* MOVEM.L <ea>,<list> */
{0xF1C0,0x41C0,"LEA",   EA_CONTROL,func32,AFUN14},  /* LEA <ea>*/

/* LINE 0101 */
{0xFFC0,0x50C0,"ST",    DRD,func18,AFUN8},
{0xFFC0,0x51C0,"SF",    DRD,func18,AFUN8},
{0xFFC0,0x52C0,"SHI",   DRD,func18,AFUN8},
{0xFFC0,0x53C0,"SLS",   DRD,func18,AFUN8},
{0xFFC0,0x54C0,"SCC",   DRD,func18,AFUN8},
{0xFFC0,0x55C0,"SCS",   DRD,func18,AFUN8},
{0xFFC0,0x56C0,"SNE",   DRD,func18,AFUN8},
{0xFFC0,0x57C0,"SEQ",   DRD,func18,AFUN8},
{0xFFC0,0x58C0,"SVC",   DRD,func18,AFUN8},
{0xFFC0,0x59C0,"SVS",   DRD,func18,AFUN8},
{0xFFC0,0x5AC0,"SPL",   DRD,func18,AFUN8},
{0xFFC0,0x5BC0,"SMI",   DRD,func18,AFUN8},
{0xFFC0,0x5CC0,"SGE",   DRD,func18,AFUN8},
{0xFFC0,0x5DC0,"SLT",   DRD,func18,AFUN8},
{0xFFC0,0x5EC0,"SGT",   DRD,func18,AFUN8},
{0xFFC0,0x5FC0,"SLE",   DRD,func18,AFUN8},
{0xF1C0,0x5080,"ADDQ",  EA_ALTER1,func29,AFUN16},   /* ADDQ.L #<data>,<ea> */
{0xF1C0,0x5180,"SUBQ",  EA_ALTER1,func29,AFUN16},   /* SUBQ.L #<data>,<ea> */

/* LINE 0110 */                                  
{0xFF00,0x6000,"BRA",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6100,"BSR",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6200,"BHI",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6300,"BLS",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6400,"BCC",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6500,"BCS",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6600,"BNE",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6700,"BEQ",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6800,"BVC",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6900,"BVS",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6A00,"BPL",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6B00,"BMI",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6C00,"BGE",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6D00,"BLT",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6E00,"BGT",   EA_NONE,func25,AFUN18}, 
{0xFF00,0x6F00,"BLE",   EA_NONE,func25,AFUN18}, 

/* LINE 0111 */
{0xF100,0x7000,"MOVEQ", EA_NONE,func24,AFUN19}, /* MOVEQ.L #<data>,Dn */

/* LINE 1000 */
{0xF1C0,0x8080,"OR",    EA_DATA,func33,AFUN20}, /* OR.L <ea>,Dn */
{0xF1C0,0x8180,"OR",    EA_MEMALT1,func31,AFUN20},  /* OR.L Dn,<ea> */

/* LINE 1001 */
{0xF1F8,0x9180,"SUBX",  EA_NONE,func14,AFUN23}, /* SUBX.L */
{0xF1C0,0x9080,"SUB",   EA_ALL,func33,AFUN20},  /* SUB.L <ea>,Dn */
{0xF1C0,0x9180,"SUB",   EA_MEMALT1,func31,AFUN20},  /* SUB.L Dn,<ea> */
{0xF1C0,0x91C0,"SUBA",  EA_ALL,func28,AFUN14},  /* SUBA.L <ea>,An */

/* Line 1010 */
#ifdef CPU_MCF_MAC
{0xF1B0,0xA000,"MAC"    ,EA_NONE,mac1,AFUN28},  /* MAC */                  /*mod*/
{0xF1B0,0xA000,"MSAC"   ,EA_NONE,mac1,AFUN28},  /* MSAC */                 /*mod*/
{0xF180,0xA080,"MACL"   ,EA_MAC1,mac2,AFUN29},  /* MACL */                 /*mod*/
{0xF180,0xA080,"MSACL"  ,EA_MAC1,mac2,AFUN29},  /* MSACL */                /*mod*/
{0xFFC0,0xA100,"MOVE"   ,EA_MAC2,mac3,AFUN26},  /* MOVE.L <ea>,ACC */      /*mod*/
{0xFFC0,0xA900,"MOVE"   ,EA_MAC2,mac4,AFUN26},  /* MOVE.L <ea>,MACSR */    /*mod*/
{0xFFC0,0xAD00,"MOVE"   ,EA_MAC2,mac8,AFUN26},  /* MOVE.L <ea>,MASK*/      /*mod*/
{0xFFFF,0xA9C0,"MOVE"   ,EA_NONE,mac7,AFUN26},  /* MOVE.L MACSR,CCR */     /*mod*/
{0xFFF0,0xA180,"MOVE"   ,EA_NONE,mac5,AFUN26},  /* MOVE.L ACC,Rx */        /*mod*/
{0xFFF0,0xA980,"MOVE"   ,EA_NONE,mac6,AFUN26},  /* MOVE.L MACSR,Rx */      /*mod*/
{0xFFF0,0xAD80,"MOVE"   ,EA_NONE,mac9,AFUN26},  /* MOVE.L MASK.Rx*/        /*mod*/
#endif

/* LINE 1011 */
{0xF1C0,0xB080,"CMP"    ,EA_ALL,func33,AFUN15}, /* CMP.L <ea>,Dn */
{0xF1C0,0xB1C0,"CMPA"   ,EA_ALL,func28,AFUN34}, /* CMPA.L <ea>,Dn */
{0xF1C0,0xB180,"EOR"    ,EA_DATALT1,func31,AFUN17}, /* EOR.L Dn,<ea> */

/* LINE 1100 */
{0xF1C0,0xC0C0,"MULU.W",EA_DATA,func38,NULL},   /* MULU.W <ea>,Dn */
{0xF1C0,0xC1C0,"MULS.W",EA_DATA,func38,NULL},   /* MULS.W <ea>,Dn */
{0xF1C0,0xC080,"AND",   EA_DATA,func33,AFUN20}, /* AND.L <ea>,Dn */
{0xF1C0,0xC180,"AND",   EA_MEMALT1,func31,AFUN20},  /* AND.L Dn,<ea> */

/* LINE 1101 */
{0xF1F0,0xD180,"ADDX",  EA_NONE,func14,AFUN23}, /* ADDX.L */
{0xF1C0,0xD1C0,"ADDA",  EA_ALL,func28,AFUN14},  /* ADDA.L <ea>,An */
{0xF1C0,0xD080,"ADD",   EA_ALL,func33,AFUN20},  /* ADD.L <ea>,Dn */
{0xF1C0,0xD180,"ADD",   EA_MEMALT1,func47,AFUN20},  /* ADD.L Dn,<ea> */

{0x0,   0xFFFF, "DC",   EA_NONE,func15 ,AFUN27}, 

/* LINE 1110 */
{0xF1F8,0xE080,"ASR",   EA_NONE,func34,AFUN22}, /* ASR.L #<data>,Dy */
{0xF1F8,0xE0A0,"ASR",   EA_NONE,func35,AFUN22}, /* ASR.L Dx,Dy */
{0xF1F8,0xE180,"ASL",   EA_NONE,func34,AFUN22}, /* ASL.L #<data>,Dy */
{0xF1F8,0xE1A0,"ASL",   EA_NONE,func35,AFUN22}, /* ASL.L Dx,Dy */
{0xF1F8,0xE088,"LSR",   EA_NONE,func34,AFUN22}, /* LSR.L #<data>,Dy */
{0xF1F8,0xE0A8,"LSR",   EA_NONE,func35,AFUN22}, /* LSR.L Dx,Dy */
{0xF1F8,0xE188,"LSL",   EA_NONE,func34,AFUN22}, /* LSL.L #<data>,Dy */
{0xF1F8,0xE1A8,"LSL",   EA_NONE,func35,AFUN22}, /* LSL.L Dx,Dy */

/* LINE 1111 */
{0xFFC0,0xFB00,"WDDATA",EA_MEMALT1,func15,AFUN10},  /* WDDATA.b <ea> */
{0xFFC0,0xFB40,"WDDATA",EA_MEMALT1,func15,AFUN10},  /* WDDATA.w <ea> */
{0xFFC0,0xFB80,"WDDATA",EA_MEMALT1,func15,AFUN10},  /* WDDATA.l <ea> */
{0xFFC0,0xFBC0,"WDEBUG",(ARI | ARID),func37,AFUN21},    /* WDEBUG <ea> */

#ifdef CPU_MCF_DIV 
{0xFFC0,0x4C40,"DIVS",EA_DATA1,func55,AFUN36},      /* DIVS.L <ea>,Dn */
{0xFFC0,0x4C40,"DIVU",EA_DATA1,func55,AFUN36},      /* DIVU.L <ea>,Dn */
{0xF1C0,0x81C0,"DIVS",EA_DATA,func54,AFUN36},       /* DIVS.W <ea>,Dn */
{0xF1C0,0x80C0,"DIVU",EA_DATA,func54,AFUN36},       /* DIVU.W <ea>,Dn */
{0xFFC0,0x4C40,"REMS",EA_DATA1,func55,AFUN37},      /* REMS.L <ea>,Dn */
{0xFFC0,0x4C40,"REMU",EA_DATA1,func55,AFUN37},      /* REMU.L <ea>,Dn */
#endif

/* New defines for The ColdFire Instruction Set REV B(mcf5407) instructions */
#ifdef CPU_MCF5407
{0xFFF8,0xF428,"INTOUCH"    ,EA_NONE    ,func64 ,AFUN30},   /* INTOUCH */           
{0xF1C0,0xA140,"MOV3Q"      ,EA_ALTER1  ,func65 ,AFUN31},   /* MOV3Q.L */           
{0xF180,0x7100,"MVS"        ,EA_ALL     ,func66 ,AFUN32},   /* MVS.B */             
{0xF180,0x7180,"MVZ"        ,EA_ALL     ,func66 ,AFUN32},   /* MVZ */               
{0xFFF8,0x4C80,"SATS"       ,DRD        ,func15 ,AFUN4},    /* SATS.L */            
{0xFFC0,0x4AC0,"TAS"        ,EA_MEMALT1 ,func67 ,AFUN33},   /* TAS.B */             
{0xF1C0,0xB000,"CMP"        ,EA_ALL     ,func33 ,AFUN15},   /* CMP.B <ea>,Dn */     
{0xF1C0,0xB040,"CMP"        ,EA_ALL     ,func33 ,AFUN15},   /* CMP.W <ea>,Dn */     
{0xF1C0,0xB0C0,"CMPA"       ,EA_ALL     ,func28 ,AFUN34},   /* CMPA.W <ea>,Dn */    
{0xFFF8,0x0C00,"CMPI"       ,DRD        ,func6  ,AFUN35},   /* CMPI.B #<data>,Dn */
{0xFFF8,0x0C40,"CMPI"       ,DRD        ,func6  ,AFUN35},   /* CMPI.W #<data>,Dn */
#endif
};

const int
ISASIZE = sizeof(isa)/sizeof(INSTRENTRY);

/********************************************************************/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -