This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
m68k: fix disassembling fnop
- From: Andreas Schwab <schwab at linux-m68k dot org>
- To: binutils at sourceware dot org
- Date: Tue, 12 Oct 2010 00:19:01 +0200
- Subject: m68k: fix disassembling fnop
The fnop insn is the same as fbf with zero displacement. Make sure it
is disassembled as fnop. Tested on powerpc-linux and checked in as
obvious.
Andreas.
2010-10-12 Andreas Schwab <schwab@linux-m68k.org>
binutils/:
* binutils-all/m68k/objdump.exp: Add fnop test.
* binutils-all/m68k/fnop.s: New file.
opcodes/:
* m68k-opc.c (m68k_opcodes): Move fnop before fbf.
--- binutils/testsuite/binutils-all/m68k/objdump.exp.~1.4.~ 2009-09-04 19:53:55.000000000 +0200
+++ binutils/testsuite/binutils-all/m68k/objdump.exp 2010-10-11 23:58:12.000000000 +0200
@@ -1,4 +1,4 @@
-# Copyright 2004, 2007, 2009
+# Copyright 2004, 2007, 2009, 2010
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
@@ -51,3 +51,29 @@ if [regexp $want $got] then {
} else {
fail "movem test"
}
+
+###########################
+# Set up the test of fnop.s
+###########################
+
+if {![binutils_assemble $srcdir/$subdir/fnop.s tmpdir/fnop.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set objfile [remote_download host tmpdir/fnop.o]
+} else {
+ set objfile tmpdir/fnop.o
+}
+
+# Make sure that fnop is decoded as fnop, not fbf.
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble $objfile"]
+
+set want "fnop *\[\r\n\]"
+
+if [regexp $want $got] then {
+ pass "fnop test"
+} else {
+ fail "fnop test"
+}
--- opcodes/m68k-opc.c.~1.34.~ 2010-06-18 23:52:36.000000000 +0200
+++ opcodes/m68k-opc.c 2010-10-11 23:43:48.000000000 +0200
@@ -1,6 +1,6 @@
/* Opcode table for m680[012346]0/m6888[12]/m68851/mcf5200.
Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2009
+ 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU opcodes library.
@@ -529,6 +529,9 @@ const struct m68k_opcode m68k_opcodes[]
{"fatanhx", 4, two(0xF000, 0x480D), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
{"fatanhx", 4, two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiFt", mfloat },
+/* This is the same as `fbf .+2'. */
+{"fnop", 4, two(0xF280, 0x0000), two(0xFFFF, 0xFFFF), "Ii", mfloat | cfloat },
+
{"fbeq", 2, one(0xF081), one(0xF1FF), "IdBW", mfloat | cfloat },
{"fbf", 2, one(0xF080), one(0xF1FF), "IdBW", mfloat | cfloat },
{"fbge", 2, one(0xF093), one(0xF1FF), "IdBW", mfloat | cfloat },
@@ -1084,8 +1087,6 @@ const struct m68k_opcode m68k_opcodes[]
{"fdnegx", 4, two(0xF000, 0x485E), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
{"fdnegx", 4, two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiFt", m68040up },
-{"fnop", 4, two(0xF280, 0x0000), two(0xFFFF, 0xFFFF), "Ii", mfloat | cfloat },
-
{"fremb", 4, two(0xF000, 0x5825), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
{"fremd", 4, two(0xF000, 0x5425), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
{"freml", 4, two(0xF000, 0x4025), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
Index: binutils/testsuite/binutils-all/m68k/fnop.s
===================================================================
RCS file: binutils/testsuite/binutils-all/m68k/fnop.s
diff -N binutils/testsuite/binutils-all/m68k/fnop.s
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ binutils/testsuite/binutils-all/m68k/fnop.s 11 Oct 2010 22:09:23 -0000
@@ -0,0 +1 @@
+ fnop
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."