OSDN Git Service

2003-07-17 Michael Snyder <msnyder@redhat.com>
authormsnyder <msnyder>
Fri, 18 Jul 2003 00:10:41 +0000 (00:10 +0000)
committermsnyder <msnyder>
Fri, 18 Jul 2003 00:10:41 +0000 (00:10 +0000)
        * compile.c (sim_resume): Handle shll reg, reg and shlr reg, reg.

sim/h8300/ChangeLog
sim/h8300/compile.c

index 77cb912..2436aba 100644 (file)
@@ -1,6 +1,8 @@
 2003-07-17  Michael Snyder  <msnyder@redhat.com>
 
-       * compile.c (decode): IMM16 is always zero-extended.
+       * compile.c (sim_resume): Handle shll reg, reg and shlr reg, reg.
+       (decode): IMM16 is always zero-extended.
+       
 
 2003-06-24  Michael Snyder  <msnyder@redhat.com>
 
index 3819fdd..e25b3f7 100644 (file)
@@ -3153,10 +3153,10 @@ sim_resume (SIM_DESC sd, int step, int siggnal)
          if (fetch2 (sd, &code->dst, &rd))
            goto end;
 
-         if (code->src.type == X (OP_IMM, SB))
+         if (memcmp (&code->src, &code->dst, sizeof (code->src)) == 0)
+           ea = 1;             /* unary  op */
+         else                  /* binary op */
            fetch (sd, &code->src, &ea);
-         else
-           ea = 1;
 
          if (code->opcode == O (O_SHLL, SB))
            {
@@ -3177,10 +3177,10 @@ sim_resume (SIM_DESC sd, int step, int siggnal)
          if (fetch2 (sd, &code->dst, &rd))
            goto end;
 
-         if (code->src.type == X (OP_IMM, SW))
-           fetch (sd, &code->src, &ea);
+         if (memcmp (&code->src, &code->dst, sizeof (code->src)) == 0)
+           ea = 1;             /* unary  op */
          else
-           ea = 1;
+           fetch (sd, &code->src, &ea);
 
          if (code->opcode == O (O_SHLL, SW))
            {
@@ -3201,10 +3201,10 @@ sim_resume (SIM_DESC sd, int step, int siggnal)
          if (fetch2 (sd, &code->dst, &rd))
            goto end;
 
-         if (code->src.type == X (OP_IMM, SL))
-           fetch (sd, &code->src, &ea);
+         if (memcmp (&code->src, &code->dst, sizeof (code->src)) == 0)
+           ea = 1;             /* unary  op */
          else
-           ea = 1;
+           fetch (sd, &code->src, &ea);
 
          if (code->opcode == O (O_SHLL, SL))
            {