From 204a3a8268766bf41d07ef31102194ab3ab39972 Mon Sep 17 00:00:00 2001 From: Michael Snyder Date: Fri, 25 Jul 2003 23:52:43 +0000 Subject: [PATCH] 2003-07-25 Michael Snyder * gencode.c (pshl): Change < to <= (shift by 16 is allowed). Cast argument of >> to unsigned to prevent sign extension. (psha): Change < to <= (shift by 32 is allowed). --- sim/sh/ChangeLog | 6 ++++++ sim/sh/gencode.c | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/sim/sh/ChangeLog b/sim/sh/ChangeLog index 4e75706203..b34adb5cf8 100644 --- a/sim/sh/ChangeLog +++ b/sim/sh/ChangeLog @@ -1,3 +1,9 @@ +2003-07-25 Michael Snyder + + * gencode.c (pshl): Change < to <= (shift by 16 is allowed). + Cast argument of >> to unsigned to prevent sign extension. + (psha): Change < to <= (shift by 32 is allowed). + 2003-07-24 Michael Snyder * gencode.c: Fix typo in comment. diff --git a/sim/sh/gencode.c b/sim/sh/gencode.c index 495cb66fdd..d078fc6cca 100644 --- a/sim/sh/gencode.c +++ b/sim/sh/gencode.c @@ -1306,10 +1306,10 @@ op ppi_tab[] = { "","", "pshl #,dz", "00000iiim16.zzzz", "int Sz = DSP_R (z) & 0xffff0000;", "", - "if (i < 16)", + "if (i <= 16)", " res = Sz << i;", "else if (i >= 128 - 16)", - " res = Sz >> 128 - i;", + " res = (unsigned) Sz >> 128 - i; /* no sign extension */", "else", " {", " RAISE_EXCEPTION (SIGILL);", @@ -1323,7 +1323,7 @@ op ppi_tab[] = "int Sz = DSP_R (z);", "int Sz_grd = GET_DSP_GRD (z);", "", - "if (i < 32)", + "if (i <= 32)", " {", " if (i == 32)", " {", @@ -1525,10 +1525,10 @@ op ppi_tab[] = "int Sx = DSP_R (x) & 0xffff0000;", "int Sy = DSP_R (y) >> 16 & 0x7f;", "", - "if (Sy < 16)", + "if (Sy <= 16)", " res = Sx << Sy;", "else if (Sy >= 128 - 16)", - " res = Sx >> 128 - Sy;", + " res = (unsigned) Sx >> 128 - Sy; /* no sign extension */", "else", " {", " RAISE_EXCEPTION (SIGILL);", @@ -1541,7 +1541,7 @@ op ppi_tab[] = "int Sx_grd = GET_DSP_GRD (x);", "int Sy = DSP_R (y) >> 16 & 0x7f;", "", - "if (Sy < 32)", + "if (Sy <= 32)", " {", " if (Sy == 32)", " {", -- 2.11.0