diff options
-rw-r--r-- | sim/mn10300/ChangeLog | 4 | ||||
-rw-r--r-- | sim/mn10300/gencode.c | 25 | ||||
-rw-r--r-- | sim/mn10300/mn10300_sim.h | 1 |
3 files changed, 27 insertions, 3 deletions
diff --git a/sim/mn10300/ChangeLog b/sim/mn10300/ChangeLog index 7f66829..ca03f32 100644 --- a/sim/mn10300/ChangeLog +++ b/sim/mn10300/ChangeLog @@ -1,3 +1,7 @@ +Tue Nov 26 13:36:01 1996 Jeffrey A Law (law@cygnus.com) + + * gencode.c, interp.c: Snapshot current simulator code. + Mon Nov 25 12:46:38 1996 Jeffrey A Law (law@cygnus.com) * Makefile.in, config.in, configure, configure.in: New files. diff --git a/sim/mn10300/gencode.c b/sim/mn10300/gencode.c index d2f5e3b..543bce6 100644 --- a/sim/mn10300/gencode.c +++ b/sim/mn10300/gencode.c @@ -95,8 +95,27 @@ write_opcodes () for (opcode = (struct mn10300_opcode *)mn10300_opcodes; opcode->name; opcode++) { - printf (" { 0x%x,0x%x,OP_%X,", - opcode->opcode, opcode->mask, opcode->opcode); + int size; + + if (opcode->format == FMT_S0) + size = 1; + else if (opcode->format == FMT_S1 + || opcode->format == FMT_D0) + size = 2; + else if (opcode->format == FMT_S2 + || opcode->format == FMT_D1) + size = 3; + else if (opcode->format == FMT_S4) + size = 5; + else if (opcode->format == FMT_D2) + size = 4; + else if (opcode->format == FMT_D4) + size = 6; + else + size = 7; + + printf (" { 0x%x,0x%x,OP_%X,%d,", + opcode->opcode, opcode->mask, opcode->opcode, size); Opcodes[curop++] = opcode->opcode; @@ -139,5 +158,5 @@ write_opcodes () printf ("}},\n"); } - printf ("{ 0,0,NULL,0,{0,0,0,0,0,0}},\n};\n"); + printf ("{ 0,0,NULL,0,0,{0,0,0,0,0,0}},\n};\n"); } diff --git a/sim/mn10300/mn10300_sim.h b/sim/mn10300/mn10300_sim.h index b18dee8..4170c26 100644 --- a/sim/mn10300/mn10300_sim.h +++ b/sim/mn10300/mn10300_sim.h @@ -50,6 +50,7 @@ struct simops long opcode; long mask; void (*func)(); + int length; int numops; int operands[16]; }; |