summaryrefslogtreecommitdiffstats
path: root/sim/erc32
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@oarcorp.com>2010-05-11 14:18:20 +0000
committerJoel Sherrill <joel.sherrill@oarcorp.com>2010-05-11 14:18:20 +0000
commit941100245a42cb730b23ff0f6889265e2e5f9e2f (patch)
treeb86032d14d811fd2fad3ad74257ea4cd71b14350 /sim/erc32
parent3390ce3004b151603ed765692601af7050fa53fd (diff)
downloadppe42-binutils-941100245a42cb730b23ff0f6889265e2e5f9e2f.tar.gz
ppe42-binutils-941100245a42cb730b23ff0f6889265e2e5f9e2f.zip
2010-04-20 Tiemen Schut <T.Schut@sron.nl>
* erc32.c (sis_memory_write): Change prototype to const unsigned char *. * func.c (exec_cmd, event, advance_time, wait_for_irq): Use uint64 for counts. * interf.c (run_sim): Change icount to uint64_t. Use strtol directly. (sim_resume): Specify maximum run time as uint64. * sis.c (run_sim): Change icount to uint64_t. * sis.h: Define uint64 as uint64_t. Change various fields and prototypes to uint64 to support longer simulations.
Diffstat (limited to 'sim/erc32')
-rw-r--r--sim/erc32/ChangeLog11
-rw-r--r--sim/erc32/erc32.c6
-rw-r--r--sim/erc32/func.c22
-rw-r--r--sim/erc32/interf.c8
-rw-r--r--sim/erc32/sis.c2
-rw-r--r--sim/erc32/sis.h47
6 files changed, 54 insertions, 42 deletions
diff --git a/sim/erc32/ChangeLog b/sim/erc32/ChangeLog
index d6f0cafca6..1c304c50b6 100644
--- a/sim/erc32/ChangeLog
+++ b/sim/erc32/ChangeLog
@@ -1,3 +1,14 @@
+2010-04-20 Tiemen Schut <T.Schut@sron.nl>
+
+ * erc32.c (sis_memory_write): Change prototype to const unsigned char *.
+ * func.c (exec_cmd, event, advance_time, wait_for_irq): Use uint64
+ for counts.
+ * interf.c (run_sim): Change icount to uint64_t. Use strtol directly.
+ (sim_resume): Specify maximum run time as uint64.
+ * sis.c (run_sim): Change icount to uint64_t.
+ * sis.h: Define uint64 as uint64_t. Change various fields and
+ prototypes to uint64 to support longer simulations.
+
2010-04-14 Mike Frysinger <vapier@gentoo.org>
* interp.c (sim_write): Add const to buf arg.
diff --git a/sim/erc32/erc32.c b/sim/erc32/erc32.c
index c79dfd63f6..0e892736f2 100644
--- a/sim/erc32/erc32.c
+++ b/sim/erc32/erc32.c
@@ -1860,9 +1860,9 @@ get_mem_ptr(addr, size)
int
sis_memory_write(addr, data, length)
- uint32 addr;
- char *data;
- uint32 length;
+ uint32 addr;
+ const unsigned char *data;
+ uint32 length;
{
char *mem;
diff --git a/sim/erc32/func.c b/sim/erc32/func.c
index bf898bba6c..80fbbe1e48 100644
--- a/sim/erc32/func.c
+++ b/sim/erc32/func.c
@@ -421,7 +421,7 @@ exec_cmd(sregs, cmd)
}
} else if (strncmp(cmd1, "cont", clen) == 0) {
if ((cmd1 = strtok(NULL, " \t\n\r")) == NULL) {
- stat = run_sim(sregs, -1, 0);
+ stat = run_sim(sregs, UINT64_MAX, 0);
} else {
stat = run_sim(sregs, VAL(cmd1), 0);
}
@@ -472,7 +472,7 @@ exec_cmd(sregs, cmd)
if ((cmd2 = strtok(NULL, " \t\n\r")) != NULL) {
stat = run_sim(sregs, VAL(cmd2), 0);
} else {
- stat = run_sim(sregs, -1, 0);
+ stat = run_sim(sregs, UINT64_MAX, 0);
}
daddr = sregs->pc;
sim_halt();
@@ -544,7 +544,7 @@ exec_cmd(sregs, cmd)
reset_all();
reset_stat(sregs);
if ((cmd1 = strtok(NULL, " \t\n\r")) == NULL) {
- stat = run_sim(sregs, -1, 0);
+ stat = run_sim(sregs, UINT64_MAX, 0);
} else {
stat = run_sim(sregs, VAL(cmd1), 0);
}
@@ -560,7 +560,7 @@ exec_cmd(sregs, cmd)
sim_halt();
} else if (strncmp(cmd1, "tcont", clen) == 0) {
sregs->tlimit = limcalc(sregs->freq);
- stat = run_sim(sregs, -1, 0);
+ stat = run_sim(sregs, UINT64_MAX, 0);
daddr = sregs->pc;
sim_halt();
} else if (strncmp(cmd1, "tgo", clen) == 0) {
@@ -573,7 +573,7 @@ exec_cmd(sregs, cmd)
sregs->pc = len & ~3;
sregs->npc = sregs->pc + 4;
printf("resuming at 0x%08x\n",sregs->pc);
- stat = run_sim(sregs, -1, 0);
+ stat = run_sim(sregs, UINT64_MAX, 0);
daddr = sregs->pc;
sim_halt();
} else if (strncmp(cmd1, "tlimit", clen) == 0) {
@@ -583,7 +583,7 @@ exec_cmd(sregs, cmd)
sregs->tlimit / sregs->freq / 1000);
} else if (strncmp(cmd1, "tra", clen) == 0) {
if ((cmd1 = strtok(NULL, " \t\n\r")) == NULL) {
- stat = run_sim(sregs, -1, 1);
+ stat = run_sim(sregs, UINT64_MAX, 1);
} else {
stat = run_sim(sregs, VAL(cmd1), 1);
}
@@ -595,7 +595,7 @@ exec_cmd(sregs, cmd)
reset_all();
reset_stat(sregs);
sregs->tlimit = limcalc(sregs->freq);
- stat = run_sim(sregs, -1, 0);
+ stat = run_sim(sregs, UINT64_MAX, 0);
daddr = sregs->pc;
sim_halt();
} else
@@ -833,7 +833,7 @@ void
event(cfunc, arg, delta)
void (*cfunc) ();
int32 arg;
- uint32 delta;
+ uint64 delta;
{
struct evcell *ev1, *evins;
@@ -900,7 +900,8 @@ advance_time(sregs)
struct evcell *evrem;
void (*cfunc) ();
- uint32 arg, endtime;
+ uint32 arg;
+ uint64 endtime;
#ifdef STAT
sregs->fholdt += sregs->fhold;
@@ -938,7 +939,8 @@ wait_for_irq()
{
struct evcell *evrem;
void (*cfunc) ();
- int32 arg, endtime;
+ int32 arg;
+ uint64 endtime;
if (ebase.eq.nxt == NULL)
printf("Warning: event queue empty - power-down mode not entered\n");
diff --git a/sim/erc32/interf.c b/sim/erc32/interf.c
index c7ffa992ca..edba534735 100644
--- a/sim/erc32/interf.c
+++ b/sim/erc32/interf.c
@@ -37,8 +37,6 @@
#define PSR_CWP 0x7
-#define VAL(x) strtol(x,(char **)NULL,0)
-
extern struct disassemble_info dinfo;
extern struct pstate sregs;
extern struct estate ebase;
@@ -69,7 +67,7 @@ host_callback *sim_callback;
int
run_sim(sregs, icount, dis)
struct pstate *sregs;
- unsigned int icount;
+ uint64 icount;
int dis;
{
int mexc, irq;
@@ -234,7 +232,7 @@ sim_open (kind, callback, abfd, argv)
} else
if (strcmp(argv[stat], "-freq") == 0) {
if ((stat + 1) < argc) {
- freq = VAL(argv[++stat]);
+ freq = strtol(argv[++stat], (char **)NULL, 0);
}
} else {
(*sim_callback->printf_filtered) (sim_callback,
@@ -461,7 +459,7 @@ flush_windows ()
void
sim_resume(SIM_DESC sd, int step, int siggnal)
{
- simstat = run_sim(&sregs, -1, 0);
+ simstat = run_sim(&sregs, UINT64_MAX, 0);
if (sis_gdb_break) flush_windows ();
}
diff --git a/sim/erc32/sis.c b/sim/erc32/sis.c
index 2cb75a62d5..2354df919f 100644
--- a/sim/erc32/sis.c
+++ b/sim/erc32/sis.c
@@ -82,7 +82,7 @@ extern int era;
int
run_sim(sregs, icount, dis)
struct pstate *sregs;
- unsigned int icount;
+ uint64 icount;
int dis;
{
int irq, mexc, deb, asi;
diff --git a/sim/erc32/sis.h b/sim/erc32/sis.h
index 5bdd7704e2..a3973f3144 100644
--- a/sim/erc32/sis.h
+++ b/sim/erc32/sis.h
@@ -23,6 +23,7 @@
#include "ansidecl.h"
#include "gdb/callback.h"
#include "gdb/remote-sim.h"
+#include <stdint.h>
#include "end.h"
@@ -52,8 +53,8 @@ typedef float float32; /* 32-bit float */
typedef double float64; /* 64-bit float */
/* FIXME: what about host compilers that don't support 64-bit ints? */
-typedef unsigned long long uint64; /* 64-bit unsigned int */
-typedef long long int64; /* 64-bit signed int */
+typedef uint64_t uint64; /* 64-bit unsigned int */
+typedef int64_t int64; /* 64-bit signed int */
struct pstate {
@@ -108,22 +109,22 @@ struct pstate {
float32 freq; /* Simulated processor frequency */
- uint32 tottime;
- uint32 ninst;
- uint32 fholdt;
- uint32 holdt;
- uint32 icntt;
- uint32 finst;
- uint32 simstart;
- uint32 starttime;
- uint32 tlimit; /* Simulation time limit */
- uint32 pwdtime; /* Cycles in power-down mode */
- uint32 nstore; /* Number of load instructions */
- uint32 nload; /* Number of store instructions */
- uint32 nannul; /* Number of annuled instructions */
- uint32 nbranch; /* Number of branch instructions */
+ uint64 tottime;
+ uint64 ninst;
+ uint64 fholdt;
+ uint64 holdt;
+ uint64 icntt;
+ uint64 finst;
+ uint64 simstart;
+ uint64 starttime;
+ uint64 tlimit; /* Simulation time limit */
+ uint64 pwdtime; /* Cycles in power-down mode */
+ uint64 nstore; /* Number of load instructions */
+ uint64 nload; /* Number of store instructions */
+ uint64 nannul; /* Number of annuled instructions */
+ uint64 nbranch; /* Number of branch instructions */
uint32 ildreg; /* Destination of last load instruction */
- uint32 ildtime; /* Last time point for load dependency */
+ uint64 ildtime; /* Last time point for load dependency */
int rett_err; /* IU in jmpl/restore error state (Rev.0) */
int jmpltime;
@@ -132,14 +133,14 @@ struct pstate {
struct evcell {
void (*cfunc) ();
int32 arg;
- uint32 time;
+ uint64 time;
struct evcell *nxt;
};
struct estate {
struct evcell eq;
struct evcell *freeq;
- uint32 simtime;
+ uint64 simtime;
};
struct irqcell {
@@ -168,8 +169,8 @@ extern int memory_read PARAMS ((int32 asi, uint32 addr, uint32 *data,
int32 sz, int32 *ws));
extern int memory_write PARAMS ((int32 asi, uint32 addr, uint32 *data,
int32 sz, int32 *ws));
-extern int sis_memory_write PARAMS ((uint32 addr, char *data,
- uint32 length));
+extern int sis_memory_write PARAMS ((uint32 addr,
+ const unsigned char *data, uint32 length));
extern int sis_memory_read PARAMS ((uint32 addr, char *data,
uint32 length));
@@ -186,7 +187,7 @@ extern void init_signals PARAMS ((void));
struct disassemble_info;
extern void dis_mem PARAMS ((uint32 addr, uint32 len,
struct disassemble_info *info));
-extern void event PARAMS ((void (*cfunc) (), int32 arg, uint32 delta));
+extern void event PARAMS ((void (*cfunc) (), int32 arg, uint64 delta));
extern void set_int PARAMS ((int32 level, void (*callback) (), int32 arg));
extern void advance_time PARAMS ((struct pstate *sregs));
extern uint32 now PARAMS ((void));
@@ -205,7 +206,7 @@ extern void init_regs PARAMS ((struct pstate *sregs));
/* interf.c */
extern int run_sim PARAMS ((struct pstate *sregs,
- unsigned int icount, int dis));
+ uint64 icount, int dis));
/* float.c */
extern int get_accex PARAMS ((void));
OpenPOWER on IntegriCloud