diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2004-05-28 19:26:31 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2004-05-28 19:26:31 +0000 |
commit | 888a75bebca164a38b44e222f14ed3a8297e98a4 (patch) | |
tree | a6c7febd50fd4c061266563fc112bb6f0a6cd37b /gas | |
parent | 18ed0c4eb87e33da709e90bfa0b700bbe11013f3 (diff) | |
download | gdb-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/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-ia64.c | 16 |
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: |