From ec38ce9947b8f46296c1cc1704f5f7f672ed93bd Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Wed, 5 Feb 2003 23:10:27 +0000 Subject: [PATCH] * compile.c (init_pointers): Abort if wreg never gets initialized. (sim_resume): Fix the handling of exts.w and extu.w. --- sim/h8300/ChangeLog | 5 +++++ sim/h8300/compile.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog index 62fd0735cc0..2753416a768 100644 --- a/sim/h8300/ChangeLog +++ b/sim/h8300/ChangeLog @@ -1,3 +1,8 @@ +2003-02-05 Kazu Hirata + + * compile.c (init_pointers): Abort if wreg never gets initialized. + (sim_resume): Fix the handling of exts.w and extu.w. + 2003-01-31 Kazu Hirata * compile.c (sim_resume): Fix the handling of bxor. diff --git a/sim/h8300/compile.c b/sim/h8300/compile.c index e84589904a6..2a066a3fc1d 100644 --- a/sim/h8300/compile.c +++ b/sim/h8300/compile.c @@ -753,6 +753,7 @@ init_pointers (void) } p++; } + wreg[i] = wreg[i + 8] = 0; while (q < u) { if (*q == 0x2233) @@ -765,6 +766,8 @@ init_pointers (void) } q++; } + if (wreg[i] == 0 || wreg[i + 8] == 0) + abort (); cpu.regs[i] = 0; lreg[i] = &cpu.regs[i]; } @@ -1606,7 +1609,7 @@ sim_resume (SIM_DESC sd, int step, int siggnal) goto next; } case O (O_EXTS, SW): - rd = GET_B_REG (code->src.reg + 8) & 0xff; /* Yes, src, not dst. */ + rd = GET_W_REG (code->src.reg) & 0xff; /* Yes, src, not dst. */ ea = rd & 0x80 ? -256 : 0; res = rd + ea; goto log16; @@ -1616,7 +1619,7 @@ sim_resume (SIM_DESC sd, int step, int siggnal) res = rd + ea; goto log32; case O (O_EXTU, SW): - rd = GET_B_REG (code->src.reg + 8) & 0xff; + rd = GET_W_REG (code->src.reg) & 0xff; ea = 0; res = rd + ea; goto log16; -- 2.30.2