binutils-gdb/include/opcode
Andrew Burgess bdfe53e3cf arc: Change max instruction length to 64-bits
The current handling for arc instructions longer than 32-bits is all
handled as a special case in both the assembler and disassembler.

The problem with this approach is that it leads to code duplication,
selecting a long instruction is exactly the same process as selecting a
short instruction, except over more bits, in both cases we select based
on bit comparison, and initial operand insertion and extraction.

This commit unifies both the long and short instruction worlds,
converting the core opcodes library from being largely 32-bit focused,
to being largely 64-bit focused.

The changes are, on the whole, not too much.  There's obviously a lot of
type changes but otherwise the bulk of the code just works.  Most of the
actual functional changes are to code that previously handled the longer
48 or 64 bit instructions.  The insert/extract handlers for these have
now been brought into line with the short instruction insert/extract
handlers.

All of the special case handling code that was previously added has now
been removed again.  Overall, this commit reduces the amount of code in
the arc assembler and disassembler.

gas/ChangeLog:

	* config/tc-arc.c (struct arc_insn): Change type of insn field.
	(md_number_to_chars_midend): Support 6- and 8-byte values.
	(emit_insn0): Update debug output.
	(find_opcode_match): Likewise.
	(build_fake_opcode_hash_entry): Delete.
	(find_special_case_long_opcode): Delete.
	(find_special_case): Remove long format special case handling.
	(insert_operand): Change instruction type and update debug print
	format.
	(assemble_insn): Change instruction type, update debug print
	formats, and remove unneeded assert.

include/ChangeLog:

	* opcode/arc.h (struct arc_opcode): Change type of opcode and mask
	fields.
	(struct arc_long_opcode): Delete.
	(struct arc_operand): Change types for insert and extract
	handlers.

opcodes/ChangeLog:

	* arc-dis.c (struct arc_operand_iterator): Remove all fields
	relating to long instruction processing, add new limm field.
	(OPCODE): Rename to...
	(OPCODE_32BIT_INSN): ...this.
	(OPCODE_AC): Delete.
	(skip_this_opcode): Handle different instruction lengths, update
	macro name.
	(special_flag_p): Update parameter type.
	(find_format_from_table): Update for more instruction lengths.
	(find_format_long_instructions): Delete.
	(find_format): Update for more instruction lengths.
	(arc_insn_length): Likewise.
	(extract_operand_value): Update for more instruction lengths.
	(operand_iterator_next): Remove code relating to long
	instructions.
	(arc_opcode_to_insn_type): New function.
	(print_insn_arc):Update for more instructions lengths.
	* arc-ext.c (extInstruction_t): Change argument type.
	* arc-ext.h (extInstruction_t): Change argument type.
	* arc-fxi.h: Change type unsigned to unsigned long long
	extensively throughout.
	* arc-nps400-tbl.h: Add long instructions taken from
	arc_long_opcodes table in arc-opc.c.
	* arc-opc.c: Update parameter types on insert/extract handlers.
	(arc_long_opcodes): Delete.
	(arc_num_long_opcodes): Delete.
	(arc_opcode_len): Update for more instruction lengths.
2016-11-03 17:14:38 +00:00
..
aarch64.h [AArch64] Add SVE condition codes 2016-09-21 17:09:59 +01:00
alpha.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
arc-func.h Fixes to legacy ARC relocations. 2016-08-26 12:09:17 +02:00
arc.h arc: Change max instruction length to 64-bits 2016-11-03 17:14:38 +00:00
arm.h [arm] Automatically enable CRC instructions on supported ARMv8-A CPUs. 2016-09-07 17:14:54 +01:00
avr.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
bfin.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
cgen.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
ChangeLog-0415 binutils ChangeLog rotation 2016-01-01 22:59:17 +10:30
ChangeLog-9103 Add copyright notices 2012-12-10 12:48:03 +00:00
convex.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
cr16.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
cris.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
crx.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
d10v.h add more extern C 2016-06-01 21:26:32 -04:00
d30v.h add more extern C 2016-06-01 21:26:32 -04:00
dlx.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
ft32.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
h8300.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
hppa.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
i370.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
i386.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
i860.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
i960.h make more variables const 2016-03-22 19:16:06 -04:00
ia64.h add more extern C 2016-06-01 21:26:32 -04:00
m68hc11.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
m68k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
m88k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
metag.h metag: add extern C to header 2016-05-26 06:12:15 -04:00
mips.h add more extern C 2016-06-01 21:26:32 -04:00
mmix.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
mn10200.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
mn10300.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
moxie.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
msp430-decode.h Change the size field of MSP430_Opcode_Decoded to a plain integer. 2016-06-14 11:41:34 -07:00
msp430.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
nds32.h Fix compile time warnings building the binutils with a gcc6 compiler. 2016-02-09 16:34:24 +00:00
nios2.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
nios2r1.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
nios2r2.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
np1.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
ns32k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
pdp11.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
pj.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
pn.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
ppc.h Disallow 3-operand cmp[l][i] for ppc64 2016-09-29 15:12:47 +09:30
pyr.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
riscv-opc.h Add support for RISC-V architecture. 2016-11-01 16:45:57 +00:00
riscv.h Add support for RISC-V architecture. 2016-11-01 16:45:57 +00:00
rl78.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
rx.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
s390.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
score-datadep.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
score-inst.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
sparc.h sparc: make SPARC_OPCODE_ARCH_MAX part of its enum 2016-06-29 07:24:18 -04:00
spu-insns.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
spu.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
tahoe.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tic4x.h make more variables const 2016-03-22 19:16:06 -04:00
tic6x-control-registers.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tic6x-insn-formats.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tic6x-opcode-table.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tic6x.h add more extern C 2016-06-01 21:26:32 -04:00
tic30.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
tic54x.h tic54x: rename typedef of struct symbol_ 2016-05-23 01:17:12 -04:00
tic80.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tilegx.h tilegx: move TILEGX_NUM_PIPELINE_ENCODINGS to tilegx_pipeline enum 2016-06-22 05:14:08 -04:00
tilepro.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
v850.h add more extern C 2016-06-01 21:26:32 -04:00
vax.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
visium.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
xgate.h Copyright update for binutils 2016-01-01 23:00:01 +10:30