From 0acc96e1c83a4b24ce0af95bbd36fcce6a56644c Mon Sep 17 00:00:00 2001 From: Jason Eckhardt Date: Wed, 6 Aug 2003 19:53:19 +0000 Subject: [PATCH] gas: 2003-08-06 Jason Eckhardt * config/tc-i860.c (i860_process_insn): Check that instructions with their dual-bit set are 8-byte aligned. gas/testsuite: 2003-08-06 Jason Eckhardt * gas/i860/dual02-err.l: Update expected error message. * gas/i860/README.i860: Remove dual02-err from known failure list. --- gas/ChangeLog | 5 +++++ gas/config/tc-i860.c | 8 +++++++- gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/i860/README.i860 | 6 ++++-- gas/testsuite/gas/i860/dual02-err.l | 2 +- 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 7bf5fcd06fa..8e1356c074b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2003-08-06 Jason Eckhardt + + * config/tc-i860.c (i860_process_insn): Check that instructions + with their dual-bit set are 8-byte aligned. + 2003-08-06 Nick Clifton * po/fr.po: Updated French translation. diff --git a/gas/config/tc-i860.c b/gas/config/tc-i860.c index 37aff49efa4..d170b7047c3 100644 --- a/gas/config/tc-i860.c +++ b/gas/config/tc-i860.c @@ -933,7 +933,13 @@ i860_process_insn (char *str) { if ((opcode & 0xfc000000) == 0x48000000 || opcode == 0xb0000000) { - opcode |= (1 << 9); + /* The instruction is a flop or a fnop, so set its dual bit + (but check that it is 8-byte aligned). */ + if (((frag_now->fr_address + frag_now_fix_octets ()) & 7) == 0) + opcode |= (1 << 9); + else + as_bad (_("'d.%s' must be 8-byte aligned"), insn->name); + if (dual_mode == DUAL_DDOT) dual_mode = DUAL_OFF; else if (dual_mode == DUAL_ONDDOT) diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 3176e6f5119..30591b72283 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-08-06 Jason Eckhardt + + * gas/i860/dual02-err.l: Update expected error message. + * gas/i860/README.i860: Remove dual02-err from known failure list. + 2003-08-05 Jason Eckhardt * gas/i860/README.i860: Remove dual01 from the known failures. diff --git a/gas/testsuite/gas/i860/README.i860 b/gas/testsuite/gas/i860/README.i860 index e7b07446756..ae5c89062c0 100644 --- a/gas/testsuite/gas/i860/README.i860 +++ b/gas/testsuite/gas/i860/README.i860 @@ -25,10 +25,12 @@ TODO: tests of the Intel syntax should be added to prevent bitrot (including relocatable expression syntax, etc). Test file dual03.s uses Intel syntax lightly (i.e., register names without '%' prefix). + - Currently, .align in a .text section fills with 0x00000000. This is + a defect and it needs to fill with nop (0xa0000000). Write a testcase + for it. Contact me (Jason Eckhardt, jle@rice.edu) if you'd like to help. Known testsuite failures: - - dual02-err.s: GAS currently doesn't check that dual mode pairs - are properly aligned. + - none. diff --git a/gas/testsuite/gas/i860/dual02-err.l b/gas/testsuite/gas/i860/dual02-err.l index f8f1a1d8eb9..d43d73e46a3 100644 --- a/gas/testsuite/gas/i860/dual02-err.l +++ b/gas/testsuite/gas/i860/dual02-err.l @@ -1,2 +1,2 @@ .*: Assembler messages: -.*:7: Error: FLOP with 'd\.' prefix must be 8-byte aligned +.*:7: Error: 'd\.fadd\.ss' must be 8-byte aligned -- 2.30.2