X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Farc-dis.h;h=9abfd944543435e9c60f134409bf94320310a24f;hb=d50c751e00b5336b4604b92271ab84615fdb0d27;hp=04bfbbb00fe84f5f7f8722817229b0d0ca27d9aa;hpb=2ee563b53258d390d7446e90a67f465d504ae44c;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/arc-dis.h b/opcodes/arc-dis.h index 04bfbbb00f..9abfd94454 100644 --- a/opcodes/arc-dis.h +++ b/opcodes/arc-dis.h @@ -1,33 +1,43 @@ /* Disassembler structures definitions for the ARC. - Copyright 1994, 1995, 1997, 1998, 2000, 2001 - Free Software Foundation, Inc. - Contributed by Doug Evans (dje@cygnus.com). + Copyright (C) 1994-2016 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + Contributed by Claudiu Zissulescu (claziss@synopsys.com) + + This file is part of libopcodes. + + This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + the Free Software Foundation; either version 3, or (at your option) + any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef ARCDIS_H #define ARCDIS_H -enum +#ifdef __cplusplus +extern "C" { +#endif + +enum ARC_Debugger_OperandType { - BR_exec_when_no_jump, - BR_exec_always, - BR_exec_when_jump + ARC_UNDEFINED, + ARC_LIMM, + ARC_SHIMM, + ARC_REGISTER, + ARCOMPACT_REGISTER /* Valid only for the + registers allowed in + 16 bit mode. */ }; -enum Flow +enum Flow { noflow, direct_jump, @@ -37,10 +47,16 @@ enum Flow invalid_instr }; -enum { no_reg = 99 }; +enum NullifyMode +{ + BR_exec_when_no_jump, + BR_exec_always, + BR_exec_when_jump +}; + enum { allOperandsSize = 256 }; -struct arcDisState +struct arcDisState { void *_this; int instructionLen; @@ -49,13 +65,24 @@ struct arcDisState const char *(*auxRegName)(void*, int); const char *(*condCodeName)(void*, int); const char *(*instName)(void*, int, int, int*); - + unsigned char* instruction; unsigned index; - const char *comm[6]; /* instr name, cond, NOP, 3 operands */ + const char *comm[6]; /* Instr name, cond, NOP, 3 operands. */ + + union + { + unsigned int registerNum; + unsigned int shortimm; + unsigned int longimm; + } source_operand; + enum ARC_Debugger_OperandType sourceType; + int opWidth; int targets[4]; - int addresses[4]; + /* START ARC LOCAL. */ + unsigned int addresses[4]; + /* END ARC LOCAL. */ /* Set as a side-effect of calling the disassembler. Used only by the debugger. */ enum Flow flow; @@ -67,15 +94,21 @@ struct arcDisState char instrBuffer[40]; char operandBuffer[allOperandsSize]; char _ea_present; + char _addrWriteBack; /* Address writeback. */ char _mem_load; char _load_len; - char nullifyMode; + enum NullifyMode nullifyMode; unsigned char commNum; unsigned char isBranch; unsigned char tcnt; unsigned char acnt; }; -#define __TRANSLATION_REQUIRED(state) ((state).acnt != 0) +struct arcDisState +arcAnalyzeInstr (bfd_vma memaddr, struct disassemble_info *); + +#ifdef __cplusplus +} +#endif #endif