New ARC implementation.
[deliverable/binutils-gdb.git] / opcodes / arc-dis.h
1 /* Disassembler structures definitions for the ARC.
2 Copyright (C) 1994-2015 Free Software Foundation, Inc.
3
4 Contributed by Claudiu Zissulescu (claziss@synopsys.com)
5
6 This file is part of libopcodes.
7
8 This library is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
11 any later version.
12
13 It is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software Foundation,
20 Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
21
22 #ifndef ARCDIS_H
23 #define ARCDIS_H
24
25 enum ARC_Debugger_OperandType
26 {
27 ARC_UNDEFINED,
28 ARC_LIMM,
29 ARC_SHIMM,
30 ARC_REGISTER,
31 ARCOMPACT_REGISTER /* Valid only for the
32 registers allowed in
33 16 bit mode. */
34 };
35
36 enum Flow
37 {
38 noflow,
39 direct_jump,
40 direct_call,
41 indirect_jump,
42 indirect_call,
43 invalid_instr
44 };
45
46 enum NullifyMode
47 {
48 BR_exec_when_no_jump,
49 BR_exec_always,
50 BR_exec_when_jump
51 };
52
53 enum { allOperandsSize = 256 };
54
55 struct arcDisState
56 {
57 void *_this;
58 int instructionLen;
59 void (*err)(void*, const char*);
60 const char *(*coreRegName)(void*, int);
61 const char *(*auxRegName)(void*, int);
62 const char *(*condCodeName)(void*, int);
63 const char *(*instName)(void*, int, int, int*);
64
65 unsigned char* instruction;
66 unsigned index;
67 const char *comm[6]; /* Instr name, cond, NOP, 3 operands. */
68
69 union
70 {
71 unsigned int registerNum;
72 unsigned int shortimm;
73 unsigned int longimm;
74 } source_operand;
75 enum ARC_Debugger_OperandType sourceType;
76
77 int opWidth;
78 int targets[4];
79 /* START ARC LOCAL. */
80 unsigned int addresses[4];
81 /* END ARC LOCAL. */
82 /* Set as a side-effect of calling the disassembler.
83 Used only by the debugger. */
84 enum Flow flow;
85 int register_for_indirect_jump;
86 int ea_reg1, ea_reg2, _offset;
87 int _cond, _opcode;
88 unsigned long words[2];
89 char *commentBuffer;
90 char instrBuffer[40];
91 char operandBuffer[allOperandsSize];
92 char _ea_present;
93 char _addrWriteBack; /* Address writeback. */
94 char _mem_load;
95 char _load_len;
96 enum NullifyMode nullifyMode;
97 unsigned char commNum;
98 unsigned char isBranch;
99 unsigned char tcnt;
100 unsigned char acnt;
101 };
102
103 struct arcDisState
104 arcAnalyzeInstr (bfd_vma memaddr, struct disassemble_info *);
105 #endif
This page took 0.033616 seconds and 4 git commands to generate.