aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sim/frv/ChangeLog4
-rw-r--r--sim/frv/frv.c12
2 files changed, 13 insertions, 3 deletions
diff --git a/sim/frv/ChangeLog b/sim/frv/ChangeLog
index 91f636a..34d685c 100644
--- a/sim/frv/ChangeLog
+++ b/sim/frv/ChangeLog
@@ -1,3 +1,7 @@
+2003-09-09 Dave Brolley <brolley@redhat.com>
+
+ * frv.c (do_media_average): Select machine using a switch.
+
2003-09-08 Dave Brolley <brolley@redhat.com>
On behalf of Doug Evans <dje@sebabeach.org>
diff --git a/sim/frv/frv.c b/sim/frv/frv.c
index a13af6b..bd3220d 100644
--- a/sim/frv/frv.c
+++ b/sim/frv/frv.c
@@ -1,5 +1,5 @@
/* frv simulator support code
- Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
Contributed by Red Hat.
This file is part of the GNU simulators.
@@ -1049,14 +1049,17 @@ do_media_average (SIM_CPU *current_cpu, HI arg1, HI arg2)
SIM_DESC sd = CPU_STATE (current_cpu);
SI sum = (arg1 + arg2);
HI result = sum >> 1;
+ int rounding_value;
/* On fr400, check the rounding mode. On other machines rounding is always
toward negative infinity and the result is already correctly rounded. */
- if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_fr400)
+ switch (STATE_ARCHITECTURE (sd)->mach)
{
+ /* Need to check rounding mode. */
+ case bfd_mach_fr400:
/* Check whether rounding will be required. Rounding will be required
if the sum is an odd number. */
- int rounding_value = sum & 1;
+ rounding_value = sum & 1;
if (rounding_value)
{
USI msr0 = GET_MSR (0);
@@ -1098,6 +1101,9 @@ do_media_average (SIM_CPU *current_cpu, HI arg1, HI arg2)
++result;
}
}
+ break;
+ default:
+ break;
}
return result;