* cpu.h (reset_decoder): Declare.
authorKevin Buettner <kevinb@redhat.com>
Thu, 23 Sep 2010 23:42:53 +0000 (23:42 +0000)
committerKevin Buettner <kevinb@redhat.com>
Thu, 23 Sep 2010 23:42:53 +0000 (23:42 +0000)
* load.c (rx_load): Call `reset_decoder'.
* rx.c (reset_decoder): New function.

sim/rx/ChangeLog
sim/rx/cpu.h
sim/rx/load.c
sim/rx/rx.c

index 717816f..b810475 100644 (file)
@@ -4,6 +4,10 @@
 
        * rx.c (decode_opcode): Declare `rx' as unsigned.
 
+       * cpu.h (reset_decoder): Declare.
+       * load.c (rx_load): Call `reset_decoder'.
+       * rx.c (reset_decoder): New function.
+
 2010-07-29  DJ Delorie  <dj@redhat.com>
 
        * rx.c (decode_cache_base): New.
index 37ca7f8..6fc99a9 100644 (file)
@@ -235,6 +235,7 @@ extern unsigned int heaptop;
 extern unsigned int heapbottom;
 
 extern int decode_opcode (void);
+extern void reset_decoder (void);
 extern void reset_pipeline_stats (void);
 extern void halt_pipeline_stats (void);
 extern void pipeline_stats (void);
index bea9baa..bcd8d82 100644 (file)
@@ -142,6 +142,8 @@ rx_load (bfd *prog)
       heaptop = heapbottom = 0;
     }
 
+  reset_decoder ();
+
   if (verbose > 1)
     fprintf (stderr, "[start pc=%08x %s]\n",
             (unsigned int) regs.r_pc,
index fc12948..19b896b 100644 (file)
@@ -298,6 +298,14 @@ static unsigned char *get_byte_base;
 static RX_Opcode_Decoded **decode_cache_base;
 static SI get_byte_page;
 
+void
+reset_decoder (void)
+{
+  get_byte_base = 0;
+  decode_cache_base = 0;
+  get_byte_page = 0;
+}
+
 static inline void
 maybe_get_mem_page (SI tpc)
 {