projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Automatic date update in version.in
[deliverable/binutils-gdb.git]
/
include
/
opcode
/
crx.h
diff --git
a/include/opcode/crx.h
b/include/opcode/crx.h
index 033b268b004eb35618b825a5652615273c36871f..45d331dd2a227c65783068b7e126452edc06d3a7 100644
(file)
--- a/
include/opcode/crx.h
+++ b/
include/opcode/crx.h
@@
-1,5
+1,5
@@
/* crx.h -- Header file for CRX opcode and register tables.
/* crx.h -- Header file for CRX opcode and register tables.
- Copyright
2004
Free Software Foundation, Inc.
+ Copyright
(C) 2004-2020
Free Software Foundation, Inc.
Contributed by Tomer Levi, NSC, Israel.
Originally written for GAS 2.12 by Tomer Levi, NSC, Israel.
Updates, BFDizing, GNUifying and ELF support by Tomer Levi.
Contributed by Tomer Levi, NSC, Israel.
Originally written for GAS 2.12 by Tomer Levi, NSC, Israel.
Updates, BFDizing, GNUifying and ELF support by Tomer Levi.
@@
-8,7
+8,7
@@
GAS, GDB, and GNU binutils is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
GAS, GDB, and GNU binutils 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
, or (at your
+ published by the Free Software Foundation; either version
3
, or (at your
option) any later version.
GAS, GDB, and GNU binutils are distributed in the hope that they will be
option) any later version.
GAS, GDB, and GNU binutils are distributed in the hope that they will be
@@
-18,7
+18,8
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
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. */
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
#ifndef _CRX_H_
#define _CRX_H_
#ifndef _CRX_H_
#define _CRX_H_
@@
-93,9
+94,8
@@
reg_type;
Argument types :
r - register
c - constant
Argument types :
r - register
c - constant
- d - displacement
- ic - immediate
- icr - index register
+ i - immediate
+ idxr - index register
rbase - register base
s - star ('*')
copr - coprocessor register
rbase - register base
s - star ('*')
copr - coprocessor register
@@
-103,8
+103,8
@@
reg_type;
typedef enum
{
typedef enum
{
- arg_r, arg_c, arg_cr, arg_
dc, arg_d
cr, arg_sc,
- arg_i
c, arg_ic
r, arg_rbase, arg_copr, arg_copsr,
+ arg_r, arg_c, arg_cr, arg_
ic, arg_i
cr, arg_sc,
+ arg_i
dx
r, arg_rbase, arg_copr, arg_copsr,
/* Not an argument. */
nullargs
}
/* Not an argument. */
nullargs
}
@@
-131,7
+131,7
@@
typedef enum
/* N-bit absolute address. */
abs16, abs32,
/* Register relative. */
/* N-bit absolute address. */
abs16, abs32,
/* Register relative. */
- rbase, rbase_
cst
4,
+ rbase, rbase_
dispu
4,
rbase_disps12, rbase_disps16, rbase_disps28, rbase_disps32,
/* Register index. */
rindex_disps6, rindex_disps22,
rbase_disps12, rbase_disps16, rbase_disps28, rbase_disps32,
/* Register index. */
rindex_disps6, rindex_disps22,
@@
-163,19
+163,13
@@
operand_type;
#define LD_STOR_INS_INC 8
#define STOR_IMM_INS 9
#define CSTBIT_INS 10
#define LD_STOR_INS_INC 8
#define STOR_IMM_INS 9
#define CSTBIT_INS 10
-#define SYS_INS 11
-#define JMP_INS 12
-#define MUL_INS 13
-#define DIV_INS 14
-#define COP_BRANCH_INS 15
-#define COP_REG_INS 16
-#define COPS_REG_INS 17
-#define DCR_BRANCH_INS 18
-#define MMC_INS 19
-#define MMU_INS 20
+#define COP_BRANCH_INS 11
+#define COP_REG_INS 12
+#define COPS_REG_INS 13
+#define DCR_BRANCH_INS 14
/* Maximum value supported for instruction types. */
/* Maximum value supported for instruction types. */
-#define CRX_INS_MAX (1 <<
5
)
+#define CRX_INS_MAX (1 <<
4
)
/* Mask to record an instruction type. */
#define CRX_INS_MASK (CRX_INS_MAX - 1)
/* Return instruction type, given instruction's attributes. */
/* Mask to record an instruction type. */
#define CRX_INS_MASK (CRX_INS_MAX - 1)
/* Return instruction type, given instruction's attributes. */
@@
-185,42
+179,40
@@
operand_type;
#define REG_LIST CRX_INS_MAX
/* The operands in binary and assembly are placed in reverse order.
load - (REVERSE_MATCH)/store - (! REVERSE_MATCH). */
#define REG_LIST CRX_INS_MAX
/* The operands in binary and assembly are placed in reverse order.
load - (REVERSE_MATCH)/store - (! REVERSE_MATCH). */
-#define REVERSE_MATCH (1 <<
6
)
+#define REVERSE_MATCH (1 <<
5
)
/* Kind of displacement map used DISPU[BWD]4. */
/* Kind of displacement map used DISPU[BWD]4. */
-#define DISPUB4 (1 <<
7
)
-#define DISPUW4 (1 <<
8
)
-#define DISPUD4 (1 <<
9
)
+#define DISPUB4 (1 <<
6
)
+#define DISPUW4 (1 <<
7
)
+#define DISPUD4 (1 <<
8
)
#define DISPU4MAP (DISPUB4 | DISPUW4 | DISPUD4)
/* Printing formats, where the instruction prefix isn't consecutive. */
#define DISPU4MAP (DISPUB4 | DISPUW4 | DISPUD4)
/* Printing formats, where the instruction prefix isn't consecutive. */
-#define FMT_1 (1 <<
10
) /* 0xF0F00000 */
-#define FMT_2 (1 << 1
1
) /* 0xFFF0FF00 */
-#define FMT_3 (1 << 1
2
) /* 0xFFF00F00 */
-#define FMT_4 (1 << 1
3
) /* 0xFFF0F000 */
-#define FMT_5 (1 << 1
4
) /* 0xFFF0FFF0 */
+#define FMT_1 (1 <<
9
) /* 0xF0F00000 */
+#define FMT_2 (1 << 1
0
) /* 0xFFF0FF00 */
+#define FMT_3 (1 << 1
1
) /* 0xFFF00F00 */
+#define FMT_4 (1 << 1
2
) /* 0xFFF0F000 */
+#define FMT_5 (1 << 1
3
) /* 0xFFF0FFF0 */
#define FMT_CRX (FMT_1 | FMT_2 | FMT_3 | FMT_4 | FMT_5)
/* Indicates whether this instruction can be relaxed. */
#define FMT_CRX (FMT_1 | FMT_2 | FMT_3 | FMT_4 | FMT_5)
/* Indicates whether this instruction can be relaxed. */
-#define RELAXABLE (1 << 1
5
)
+#define RELAXABLE (1 << 1
4
)
/* Indicates that instruction uses user registers (and not
general-purpose registers) as operands. */
/* Indicates that instruction uses user registers (and not
general-purpose registers) as operands. */
-#define USER_REG (1 << 1
6
)
+#define USER_REG (1 << 1
5
)
/* Indicates that instruction can perfom a cst4 mapping. */
/* Indicates that instruction can perfom a cst4 mapping. */
-#define CST4MAP (1 << 1
7
)
+#define CST4MAP (1 << 1
6
)
/* Instruction shouldn't allow 'sp' usage. */
/* Instruction shouldn't allow 'sp' usage. */
-#define NO_SP (1 << 1
8
)
+#define NO_SP (1 << 1
7
)
/* Instruction shouldn't allow to push a register which is used as a rptr. */
/* Instruction shouldn't allow to push a register which is used as a rptr. */
-#define NO_RPTR (1 << 1
9
)
+#define NO_RPTR (1 << 1
8
)
/* Maximum operands per instruction. */
#define MAX_OPERANDS 5
/* Maximum operands per instruction. */
#define MAX_OPERANDS 5
-/* Maximum words per instruction. */
-#define MAX_WORDS 3
/* Maximum register name length. */
#define MAX_REGNAME_LEN 10
/* Maximum instruction length. */
/* Maximum register name length. */
#define MAX_REGNAME_LEN 10
/* Maximum instruction length. */
@@
-230,19
+222,23
@@
operand_type;
/* Values defined for the flags field of a struct operand_entry. */
/* Operand must be an unsigned number. */
/* Values defined for the flags field of a struct operand_entry. */
/* Operand must be an unsigned number. */
-#define OP
ERAND_UNSIGNED
(1 << 0)
+#define OP
_UNSIGNED
(1 << 0)
/* Operand must be a signed number. */
/* Operand must be a signed number. */
-#define OPERAND_SIGNED (1 << 1)
-/* A cst4 operand. */
-#define OPERAND_CST4 (1 << 2)
+#define OP_SIGNED (1 << 1)
+/* A special arithmetic 4-bit constant operand. */
+#define OP_CST4 (1 << 2)
+/* A special load/stor 4-bit unsigned displacement operand. */
+#define OP_DISPU4 (1 << 3)
/* Operand must be an even number. */
/* Operand must be an even number. */
-#define OP
ERAND_EVEN (1 << 3
)
+#define OP
_EVEN (1 << 4
)
/* Operand is shifted right. */
/* Operand is shifted right. */
-#define OP
ERAND_SHIFT (1 << 4
)
+#define OP
_SHIFT (1 << 5
)
/* Operand is shifted right and decremented. */
/* Operand is shifted right and decremented. */
-#define OP
ERAND_SHIFT_DEC (1 << 5
)
+#define OP
_SHIFT_DEC (1 << 6
)
/* Operand has reserved escape sequences. */
/* Operand has reserved escape sequences. */
-#define OPERAND_ESC (1 << 6)
+#define OP_ESC (1 << 7)
+/* Operand is used only for the upper 64 KB (FFFF0000 to FFFFFFFF). */
+#define OP_UPPER_64KB (1 << 8)
/* Single operand description. */
/* Single operand description. */
@@
-264,7
+260,7
@@
typedef struct
/* Size (in words). */
unsigned int size;
/* Constant prefix (matched by the disassembler). */
/* Size (in words). */
unsigned int size;
/* Constant prefix (matched by the disassembler). */
- unsigned
long
match;
+ unsigned
int
match;
/* Match size (in bits). */
int match_bits;
/* Attributes. */
/* Match size (in bits). */
int match_bits;
/* Attributes. */
@@
-285,15
+281,15
@@
typedef struct
/* Coprocessor register. */
copreg cr;
/* Constant/immediate/absolute value. */
/* Coprocessor register. */
copreg cr;
/* Constant/immediate/absolute value. */
-
unsigned long int
constant;
+
long
constant;
/* Scaled index mode. */
unsigned int scale;
/* Argument type. */
argtype type;
/* Size of the argument (in bits) required to represent. */
int size;
/* Scaled index mode. */
unsigned int scale;
/* Argument type. */
argtype type;
/* Size of the argument (in bits) required to represent. */
int size;
-
/* Indicates whether a constant is positive or negative
. */
-
int signflag
;
+
/* The type of the expression
. */
+
unsigned char X_op
;
}
argument;
}
argument;
@@
-364,15
+360,6
@@
reg_entry;
/* Structure to hold a cst4 operand mapping. */
/* Structure to hold a cst4 operand mapping. */
-typedef struct
- {
- /* The binary value which is written to the object file. */
- int binary;
- /* The value which is mapped. */
- int value;
- }
-cst4_entry;
-
/* CRX opcode table. */
extern const inst crx_instruction[];
extern const int crx_num_opcodes;
/* CRX opcode table. */
extern const inst crx_instruction[];
extern const int crx_num_opcodes;
@@
-397,11
+384,11
@@
extern const int crx_num_traps;
#define NUMTRAPS crx_num_traps
/* cst4 operand mapping. */
#define NUMTRAPS crx_num_traps
/* cst4 operand mapping. */
-extern const
cst4_entry
cst4_map[];
-extern const int cst4_maps;
+extern const
int crx_
cst4_map[];
+extern const int c
rx_c
st4_maps;
-/*
Current instruction we're assembling
. */
-extern const
inst *instruction
;
+/*
Table of instructions with no operands
. */
+extern const
char* crx_no_op_insn[]
;
/* A macro for representing the instruction "constant" opcode, that is,
the FIXED part of the instruction. The "constant" opcode is represented
/* A macro for representing the instruction "constant" opcode, that is,
the FIXED part of the instruction. The "constant" opcode is represented
This page took
0.026882 seconds
and
4
git commands to generate.