From b645cb172661834dbd2f7baa71d610bc52f02e47 Mon Sep 17 00:00:00 2001 From: Jason Eckhardt Date: Sun, 18 May 2003 21:24:33 +0000 Subject: [PATCH] 2003-05-18 Jason Eckhardt gas: * config/tc-i860.c (i860_process_insn): Initialize fc after each opcode mismatch. include/opcode: * i860.h (form, pform): Add missing .dd suffix. opcodes: * i860-dis.c (print_insn_i860): Instruction shrd has a dual bit, print it. bfd: * elf32-i860.c (elf32_i860_relocate_highadj): Simplify calculation. --- bfd/ChangeLog | 4 ++++ bfd/elf32-i860.c | 2 +- gas/ChangeLog | 5 +++++ gas/config/tc-i860.c | 1 + include/opcode/ChangeLog | 4 ++++ include/opcode/i860.h | 4 ++-- opcodes/ChangeLog | 5 +++++ opcodes/i860-dis.c | 7 +++++-- 8 files changed, 27 insertions(+), 5 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index b5a6a899b81..646cdd5559b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,7 @@ +2003-05-18 Jason Eckhardt + + * elf32-i860.c (elf32_i860_relocate_highadj): Simplify calculation. + 2003-05-17 Andreas Schwab * elf32-m68k.c (elf_m68k_check_relocs): Cache reloc section in diff --git a/bfd/elf32-i860.c b/bfd/elf32-i860.c index 7a132c6d696..74112f1389f 100644 --- a/bfd/elf32-i860.c +++ b/bfd/elf32-i860.c @@ -803,7 +803,7 @@ elf32_i860_relocate_highadj (input_bfd, rel, contents, value) insn = bfd_get_32 (input_bfd, contents + rel->r_offset); value += rel->r_addend; - value += (value & 0x8000) << 1; + value += 0x8000; value = ((value >> 16) & 0xffff); insn = (insn & 0xffff0000) | value; diff --git a/gas/ChangeLog b/gas/ChangeLog index d3451be9fa9..cf40ace3b57 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2003-05-18 Jason Eckhardt + + * config/tc-i860.c (i860_process_insn): Initialize fc after + each opcode mismatch. + 2003-05-16 Kelley Cook * configure.in: Accept i[3-7]86 variants. diff --git a/gas/config/tc-i860.c b/gas/config/tc-i860.c index 18bb1ef2358..cdb12cd58d9 100644 --- a/gas/config/tc-i860.c +++ b/gas/config/tc-i860.c @@ -477,6 +477,7 @@ i860_process_insn (str) int t; opcode = insn->match; memset (&the_insn, '\0', sizeof (the_insn)); + fc = 0; for (t = 0; t < MAX_FIXUPS; t++) { the_insn.fi[t].reloc = BFD_RELOC_NONE; diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index 0c666ec246d..9aff27425b5 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,7 @@ +2003-05-18 Jason Eckhardt + + * i860.h (form, pform): Add missing .dd suffix. + 2003-05-13 Stephane Carrez * m68hc11.h (M68HC12_BANK_VIRT): Define to 0x010000 diff --git a/include/opcode/i860.h b/include/opcode/i860.h index 2d6ea19abea..4e95b101d3a 100644 --- a/include/opcode/i860.h +++ b/include/opcode/i860.h @@ -478,8 +478,8 @@ static const struct i860_opcode i860_opcodes[] = { "pfaddp", 0x48000450, 0xb40001af, "e,f,g", 0 }, /* pfaddp fsrc1,fsrc2,fdest */ { "faddz", 0x480001d1, 0xb400042e, "e,f,g", 0 }, /* faddz fsrc1,fsrc2,fdest */ { "pfaddz", 0x480005d1, 0xb400002e, "e,f,g", 0 }, /* pfaddz fsrc1,fsrc2,fdest */ -{ "form", 0x480001da, 0xb4000425, "e,g", 0 }, /* form fsrc1,fdest */ -{ "pform", 0x480005da, 0xb4000025, "e,g", 0 }, /* pform fsrc1,fdest */ +{ "form.dd", 0x480001da, 0xb4000425, "e,g", 0 }, /* form fsrc1,fdest */ +{ "pform.dd", 0x480005da, 0xb4000025, "e,g", 0 }, /* pform fsrc1,fdest */ /* Floating point pseudo-instructions. */ { "fmov.ss", 0x48000049, 0xb7e005b6, "e,g", 0 }, /* fiadd.ss fsrc1,f0,fdest */ diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index c30e25a6312..de8f363dac5 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2003-05-18 Jason Eckhardt + + * i860-dis.c (print_insn_i860): Instruction shrd has a dual bit, + print it. + 2003-05-17 Andreas Jaeger * Makefile.am (libopcodes_la_LIBADD): Add libbfd.la. diff --git a/opcodes/i860-dis.c b/opcodes/i860-dis.c index ba183ab3f70..69a106d41ca 100644 --- a/opcodes/i860-dis.c +++ b/opcodes/i860-dis.c @@ -138,8 +138,11 @@ print_insn_i860 (memaddr, info) const char *s; int val; - /* If this a flop and its dual bit is set, prefix with 'd.'. */ - if ((insn & 0xfc000000) == 0x48000000 && (insn & 0x200)) + /* If this a flop (or a shrd) and its dual bit is set, + prefix with 'd.'. */ + if (((insn & 0xfc000000) == 0x48000000 + || (insn & 0xfc000000) == 0xb0000000) + && (insn & 0x200)) (*info->fprintf_func) (info->stream, "d.%s\t", opcode->name); else (*info->fprintf_func) (info->stream, "%s\t", opcode->name); -- 2.30.2