aboutsummaryrefslogtreecommitdiff
path: root/sim/common
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>1999-09-22 03:28:34 +0000
committerJason Molenda <jmolenda@apple.com>1999-09-22 03:28:34 +0000
commitc2c6d25f0d5eea4f834420870021a8c52db24018 (patch)
treef4b3d5e9e3207fa8118db4085f9c6a0cbc2bdaf6 /sim/common
parent54af6ff67571ba569b94e26d558d02f9955e6844 (diff)
downloadgdb-c2c6d25f0d5eea4f834420870021a8c52db24018.zip
gdb-c2c6d25f0d5eea4f834420870021a8c52db24018.tar.gz
gdb-c2c6d25f0d5eea4f834420870021a8c52db24018.tar.bz2
import gdb-1999-09-21
Diffstat (limited to 'sim/common')
-rw-r--r--sim/common/ChangeLog17
-rw-r--r--sim/common/Make-common.in1
-rw-r--r--sim/common/cgen-par.c12
-rw-r--r--sim/common/cgen-par.h7
-rw-r--r--sim/common/hw-instances.c1
-rw-r--r--sim/common/hw-properties.c1
-rw-r--r--sim/common/hw-tree.c1
-rw-r--r--sim/common/sim-base.h1
-rw-r--r--sim/common/sim-fpu.c2
9 files changed, 39 insertions, 4 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 4f9d270..e027456 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,20 @@
+Mon Sep 20 21:44:06 1999 Geoffrey Keating <geoffk@cygnus.com>
+
+ * sim-fpu.c (i2fpu): Keep the guard bits sticky when converting
+ large values.
+
+Wed Sep 15 14:12:37 1999 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * hw-tree.c, hw-properties.c, hw-instances.c: Include "sim-io.h".
+
+Tue Sep 14 14:15:47 1999 Dave Brolley <brolley@cygnus.com>
+
+ * cgen-par.h (CGEN_BI_WRITE): New enumerator.
+ (bi_write): New union element.
+ (sim_queue_bi_write): New function.
+ * cgen-par.c (sim_queue_bi_write): New function.
+ (cgen_write_queue_element_execute): Handle CGEN_BI_WRITE.
+
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index 9b9ea4e..7c25d6c 100644
--- a/sim/common/Make-common.in
+++ b/sim/common/Make-common.in
@@ -399,7 +399,6 @@ sim-fpu.o: $(srccom)/sim-fpu.c $(sim-fpu_h) \
$(SIM_EXTRA_DEPS)
$(CC) -c $(srccom)/sim-fpu.c $(ALL_CFLAGS)
-
sim-hload.o: $(srccom)/sim-hload.c $(sim-assert_h) \
$(srcroot)/include/remote-sim.h \
$(SIM_EXTRA_DEPS)
diff --git a/sim/common/cgen-par.c b/sim/common/cgen-par.c
index 8b983fb..51147ad 100644
--- a/sim/common/cgen-par.c
+++ b/sim/common/cgen-par.c
@@ -24,6 +24,15 @@ with this program; if not, write to the Free Software Foundation, Inc.,
/* Functions required by the cgen interface. These functions add various
kinds of writes to the write queue. */
+void sim_queue_bi_write (SIM_CPU *cpu, BI *target, BI value)
+{
+ CGEN_WRITE_QUEUE *q = CPU_WRITE_QUEUE (cpu);
+ CGEN_WRITE_QUEUE_ELEMENT *element = CGEN_WRITE_QUEUE_NEXT (q);
+ element->kind = CGEN_BI_WRITE;
+ element->kinds.bi_write.target = target;
+ element->kinds.bi_write.value = value;
+}
+
void sim_queue_qi_write (SIM_CPU *cpu, UQI *target, UQI value)
{
CGEN_WRITE_QUEUE *q = CPU_WRITE_QUEUE (cpu);
@@ -138,6 +147,9 @@ cgen_write_queue_element_execute (SIM_CPU *cpu, CGEN_WRITE_QUEUE_ELEMENT *item)
IADDR pc;
switch (CGEN_WRITE_QUEUE_ELEMENT_KIND (item))
{
+ case CGEN_BI_WRITE:
+ *item->kinds.bi_write.target = item->kinds.bi_write.value;
+ break;
case CGEN_QI_WRITE:
*item->kinds.qi_write.target = item->kinds.qi_write.value;
break;
diff --git a/sim/common/cgen-par.h b/sim/common/cgen-par.h
index ce4efd5..25272a3 100644
--- a/sim/common/cgen-par.h
+++ b/sim/common/cgen-par.h
@@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
/* Kinds of writes stored on the write queue. */
enum cgen_write_queue_kind {
- CGEN_QI_WRITE, CGEN_SI_WRITE, CGEN_SF_WRITE,
+ CGEN_BI_WRITE, CGEN_QI_WRITE, CGEN_SI_WRITE, CGEN_SF_WRITE,
CGEN_PC_WRITE,
CGEN_FN_SI_WRITE, CGEN_FN_DI_WRITE, CGEN_FN_DF_WRITE,
CGEN_MEM_QI_WRITE, CGEN_MEM_HI_WRITE, CGEN_MEM_SI_WRITE,
@@ -35,6 +35,10 @@ typedef struct {
enum cgen_write_queue_kind kind; /* Used to select union member below. */
union {
struct {
+ BI *target;
+ BI value;
+ } bi_write;
+ struct {
UQI *target;
QI value;
} qi_write;
@@ -107,6 +111,7 @@ typedef struct {
extern CGEN_WRITE_QUEUE_ELEMENT *cgen_write_queue_overflow (CGEN_WRITE_QUEUE *);
/* Functions for queuing writes. Used by semantic code. */
+extern void sim_queue_bi_write (SIM_CPU *, BI *, BI);
extern void sim_queue_qi_write (SIM_CPU *, UQI *, UQI);
extern void sim_queue_si_write (SIM_CPU *, SI *, SI);
extern void sim_queue_sf_write (SIM_CPU *, SI *, SF);
diff --git a/sim/common/hw-instances.c b/sim/common/hw-instances.c
index 613f819..22c1cd9 100644
--- a/sim/common/hw-instances.c
+++ b/sim/common/hw-instances.c
@@ -22,6 +22,7 @@
#include "hw-main.h"
#include "hw-base.h"
+#include "sim-io.h"
#include "sim-assert.h"
struct hw_instance_data {
diff --git a/sim/common/hw-properties.c b/sim/common/hw-properties.c
index a1e9291..5a4d76d 100644
--- a/sim/common/hw-properties.c
+++ b/sim/common/hw-properties.c
@@ -21,6 +21,7 @@
#include "hw-main.h"
#include "hw-base.h"
+#include "sim-io.h"
#include "sim-assert.h"
#ifdef HAVE_STRING_H
diff --git a/sim/common/hw-tree.c b/sim/common/hw-tree.c
index 1a55835..3f31b3b 100644
--- a/sim/common/hw-tree.c
+++ b/sim/common/hw-tree.c
@@ -22,6 +22,7 @@
#include "hw-base.h"
#include "hw-tree.h"
+#include "sim-io.h"
#include "sim-assert.h"
#ifdef HAVE_STDLIB_H
diff --git a/sim/common/sim-base.h b/sim/common/sim-base.h
index f3af305..420b137 100644
--- a/sim/common/sim-base.h
+++ b/sim/common/sim-base.h
@@ -236,7 +236,6 @@ typedef struct {
#define STATE_HW(sd) ((sd)->base.hw)
#endif
-
/* Should image loads be performed using the LMA or VMA? Older
simulators use the VMA while newer simulators prefer the LMA. */
int load_at_lma_p;
diff --git a/sim/common/sim-fpu.c b/sim/common/sim-fpu.c
index abf746a..99381e0 100644
--- a/sim/common/sim-fpu.c
+++ b/sim/common/sim-fpu.c
@@ -541,7 +541,7 @@ i2fpu (sim_fpu *f, signed64 i, int is_64bit)
{
do
{
- f->fraction >>= 1;
+ f->fraction = (f->fraction >> 1) | (f->fraction & 1);
f->normal_exp += 1;
}
while (f->fraction >= IMPLICIT_2);