From bb2a1453479dfa2589f3b62853d4e1cf60825e98 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sat, 18 Apr 2020 14:32:39 +0200 Subject: Disallow PC relative for CMPI on MC68000/10 The MC68000/10 decodes the second operand of CMPI strictly as destination operand, which disallows PC relative addressing, even though the insn doesn't write to the operand. This restriction has only been lifted for the MC68020+ and CPU32. opcodes: PR 25848 * m68k-opc.c (m68k_opcodes): Allow pc-rel for second operand of cmpi only on m68020up and cpu32. gas: PR 25848 * testsuite/gas/m68k/operands.s: Add tests for cmpi. * testsuite/gas/m68k/operands.d: Update. * testsuite/gas/m68k/op68000.d: Update for new error messages. --- gas/ChangeLog | 7 +++++++ gas/testsuite/gas/m68k/op68000.d | 6 ++++++ gas/testsuite/gas/m68k/operands.d | 12 ++++++++++++ gas/testsuite/gas/m68k/operands.s | 15 +++++++++++++++ 4 files changed, 40 insertions(+) (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index 7572633..cccb6bc 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2020-04-21 Andreas Schwab + + PR 25848 + * testsuite/gas/m68k/operands.s: Add tests for cmpi. + * testsuite/gas/m68k/operands.d: Update. + * testsuite/gas/m68k/op68000.d: Update for new error messages. + 2020-04-21 Tamar Christina PR binutils/24753 diff --git a/gas/testsuite/gas/m68k/op68000.d b/gas/testsuite/gas/m68k/op68000.d index 568d5a3..b5d1d7b 100644 --- a/gas/testsuite/gas/m68k/op68000.d +++ b/gas/testsuite/gas/m68k/op68000.d @@ -193,3 +193,9 @@ .*statement `pea \(\[%zpc,%a0\],2000\)' ignored .*statement `pea \(\[%zpc,%d0:w:2\]\)' ignored .*statement `pea \(\[%d0,%zpc\]\)' ignored +.*statement `cmpib &1,0\(%pc\)' ignored +.*statement `cmpiw &1,0\(%pc\)' ignored +.*statement `cmpil &1,0\(%pc\)' ignored +.*statement `cmpb &1,0\(%pc\)' ignored +.*statement `cmpw &1,0\(%pc\)' ignored +.*statement `cmpl &1,0\(%pc\)' ignored diff --git a/gas/testsuite/gas/m68k/operands.d b/gas/testsuite/gas/m68k/operands.d index 5b383c3..465ae88 100644 --- a/gas/testsuite/gas/m68k/operands.d +++ b/gas/testsuite/gas/m68k/operands.d @@ -240,3 +240,15 @@ Disassembly of section .text: 0+508 addiw #1,%d0 0+50c addil #1,%d0 0+512 addqb #1,%d0 +0+514 cmpib #1,%d0 +0+518 cmpib #1,%pc@\(0+51c \) +0+51e cmpiw #1,%d0 +0+522 cmpiw #1,%pc@\(0+526 \) +0+528 cmpil #1,%d0 +0+52e cmpil #1,%pc@\(0+534 \) +0+536 cmpib #1,%d0 +0+53a cmpib #1,%pc@\(0+53e \) +0+540 cmpiw #1,%d0 +0+544 cmpiw #1,%pc@\(0+548 \) +0+54a cmpil #1,%d0 +0+550 cmpil #1,%pc@\(0+556 \) diff --git a/gas/testsuite/gas/m68k/operands.s b/gas/testsuite/gas/m68k/operands.s index b09f56f..382d95d 100644 --- a/gas/testsuite/gas/m68k/operands.s +++ b/gas/testsuite/gas/m68k/operands.s @@ -270,3 +270,18 @@ foo: addiw &1,%d0 addil &1,%d0 addqb &1,%d0 + + | cmpi + cmpib &1,%d0 + cmpib &1,0(%pc) + cmpiw &1,%d0 + cmpiw &1,0(%pc) + cmpil &1,%d0 + cmpil &1,0(%pc) + cmpb &1,%d0 + cmpb &1,0(%pc) + cmpw &1,%d0 + cmpw &1,0(%pc) + cmpl &1,%d0 + cmpl &1,0(%pc) + -- cgit v1.1