aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2004-05-28 19:26:31 +0000
committerH.J. Lu <hjl.tools@gmail.com>2004-05-28 19:26:31 +0000
commit888a75bebca164a38b44e222f14ed3a8297e98a4 (patch)
treea6c7febd50fd4c061266563fc112bb6f0a6cd37b /gas
parent18ed0c4eb87e33da709e90bfa0b700bbe11013f3 (diff)
downloadgdb-888a75bebca164a38b44e222f14ed3a8297e98a4.zip
gdb-888a75bebca164a38b44e222f14ed3a8297e98a4.tar.gz
gdb-888a75bebca164a38b44e222f14ed3a8297e98a4.tar.bz2
2004-05-28 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-ia64.c (remove_marked_resource): Save, clear and restore the old slot when inserting srlz.i/srlz.d.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-ia64.c16
2 files changed, 11 insertions, 10 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 11007a8..a3c5a08 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2004-05-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/tc-ia64.c (remove_marked_resource): Save, clear and
+ restore the old slot when inserting srlz.i/srlz.d.
+
2004-05-28 Andrew Stubbs <andrew.stubbs@superh.com>
* Makefile.am: Regenerate dependecies.
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index 8c37567..3d153ae 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -9560,17 +9560,15 @@ remove_marked_resource (rs)
insn_group_break (1, 0, 0);
if (rs->insn_srlz < STATE_SRLZ)
{
- int oldqp = CURR_SLOT.qp_regno;
- struct ia64_opcode *oldidesc = CURR_SLOT.idesc;
+ struct slot oldslot = CURR_SLOT;
/* Manually jam a srlz.i insn into the stream */
- CURR_SLOT.qp_regno = 0;
+ memset (&CURR_SLOT, 0, sizeof (CURR_SLOT));
CURR_SLOT.idesc = ia64_find_opcode ("srlz.i");
instruction_serialization ();
md.curr_slot = (md.curr_slot + 1) % NUM_SLOTS;
if (++md.num_slots_in_use >= NUM_SLOTS)
emit_one_bundle ();
- CURR_SLOT.qp_regno = oldqp;
- CURR_SLOT.idesc = oldidesc;
+ CURR_SLOT = oldslot;
}
insn_group_break (1, 0, 0);
break;
@@ -9583,17 +9581,15 @@ remove_marked_resource (rs)
if (rs->data_srlz < STATE_STOP)
insn_group_break (1, 0, 0);
{
- int oldqp = CURR_SLOT.qp_regno;
- struct ia64_opcode *oldidesc = CURR_SLOT.idesc;
+ struct slot oldslot = CURR_SLOT;
/* Manually jam a srlz.d insn into the stream */
- CURR_SLOT.qp_regno = 0;
+ memset (&CURR_SLOT, 0, sizeof (CURR_SLOT));
CURR_SLOT.idesc = ia64_find_opcode ("srlz.d");
data_serialization ();
md.curr_slot = (md.curr_slot + 1) % NUM_SLOTS;
if (++md.num_slots_in_use >= NUM_SLOTS)
emit_one_bundle ();
- CURR_SLOT.qp_regno = oldqp;
- CURR_SLOT.idesc = oldidesc;
+ CURR_SLOT = oldslot;
}
break;
case IA64_DVS_IMPLIED: