* interp.c: (SIGBUS, SIGTERM): Define if not.

(sim_memory_size): default to 2^19 on PCs.
	(sim_resume): Poll for quits on win32.
This commit is contained in:
Steve Chamberlain 1995-06-21 22:05:47 +00:00
parent 652970ff68
commit edf6a84356
3 changed files with 48 additions and 14 deletions

View File

@ -1,3 +1,13 @@
Wed Jun 21 15:03:49 1995 Steve Chamberlain <sac@slash.cygnus.com>
* interp.c: (SIGBUS, SIGTERM): Define if not.
(sim_memory_size): default to 2^19 on PCs.
(sim_resume): Poll for quits on win32.
Wed May 24 16:22:48 1995 Jim Wilson <wilson@chestnut.cygnus.com>
* gencode.c (op_tab): Add SH3 support.
Wed May 24 14:07:11 1995 Steve Chamberlain <sac@slash.cygnus.com> Wed May 24 14:07:11 1995 Steve Chamberlain <sac@slash.cygnus.com>
* gencode.c (tab): Add bsrf and braf. * gencode.c (tab): Add bsrf and braf.

View File

@ -68,7 +68,8 @@ XL=-lX11
X= X=
XL= XL=
INCDIR = $(srcdir)/../../include INCDIR = $(srcdir)/../../include
CSEARCH = -I. -I$(srcdir) -I../../include -I../../bfd -I$(INCDIR) -I$(srcdir)/../../bfd -I$(srcdir)/../../gdb CSEARCH = -I. -I$(srcdir) -I../../include \
-I../../bfd -I$(INCDIR) -I$(srcdir)/../../bfd -I$(srcdir)/../../gdb -I$(srcdir)/../../newlib/libc/sys/sh
DEP = mkdep DEP = mkdep
#### host, target, and site specific Makefile frags come in here. #### host, target, and site specific Makefile frags come in here.
@ -95,7 +96,7 @@ table.c:gencode
# indent table.c # indent table.c
gencode:gencode.c gencode:gencode.c
$(CC_FOR_BUILD) -o gencode $< $(CC_FOR_BUILD) -o gencode $(srcdir)/gencode.c
#### host and target dependent Makefile fragments come in here. #### host and target dependent Makefile fragments come in here.

View File

@ -20,16 +20,25 @@
#include <signal.h> #include <signal.h>
#include "sysdep.h" #include "sysdep.h"
#include <sys/times.h> //#include <sys/times.h>
#include <sys/param.h> //#include <sys/param.h>
#include "bfd.h" #include "bfd.h"
#include "remote-sim.h" #include "remote-sim.h"
#include "../../newlib/libc/sys/sh/sys/syscall.h" #include <sys/syscall.h>
#ifndef SIGBUS
#define SIGBUS SIGSEGV
#endif
#ifndef SIGQUIT
#define SIGQUIT SIGTERM
#endif
#define O_RECOMPILE 85 #define O_RECOMPILE 85
#define DEFINE_TABLE #define DEFINE_TABLE
/*#define ACE_FAST*/
#define DISASSEMBLER_TABLE #define DISASSEMBLER_TABLE
#define SBIT(x) ((x)&sbit) #define SBIT(x) ((x)&sbit)
#define R0 saved_state.asregs.regs[0] #define R0 saved_state.asregs.regs[0]
#define Rn saved_state.asregs.regs[n] #define Rn saved_state.asregs.regs[n]
@ -142,7 +151,7 @@ typedef union
} }
asregs; asregs;
int asints[28]; int asints[28];
} saved_state_type; } saved_state_type;
saved_state_type saved_state; saved_state_type saved_state;
@ -305,7 +314,7 @@ int empty[16];
#define TL(x) if ((x) == prevlock) stalls++; #define TL(x) if ((x) == prevlock) stalls++;
#define TB(x,y) if ((x) == prevlock || (y)==prevlock) stalls++; #define TB(x,y) if ((x) == prevlock || (y)==prevlock) stalls++;
#ifdef __GO32__ #if defined(__GO32__) || defined(WIN32)
int sim_memory_size = 19; int sim_memory_size = 19;
#else #else
int sim_memory_size = 24; int sim_memory_size = 24;
@ -467,7 +476,7 @@ trap (i, regs, memory, maskl, maskw, little_endian)
switch (regs[4]) switch (regs[4])
{ {
#ifndef __GO32__ #if !defined(__GO32__) && !defined(WIN32)
case SYS_fork: case SYS_fork:
regs[0] = fork (); regs[0] = fork ();
@ -758,8 +767,11 @@ macw (regs, memory, n, m)
} }
else else
{ {
long mach;
/* Add to MACH the sign extended product, and carry from low sum. */ /* Add to MACH the sign extended product, and carry from low sum. */
MACH += (-(prod < 0)) + ((unsigned long) sum < prod); mach = MACH + (-(prod < 0)) + ((unsigned long) sum < prod);
/* Sign extend at 10:th bit in MACH. */
MACH = (mach & 0x1ff) | -(mach & 0x200);
} }
MACL = sum; MACL = sum;
} }
@ -796,7 +808,7 @@ sim_size (power)
} }
extern int target_byte_order; int target_byte_order;
static void static void
set_static_little_endian(x) set_static_little_endian(x)
@ -885,7 +897,7 @@ sim_resume (step, siggnal)
register int prevlock; register int prevlock;
register int thislock; register int thislock;
register unsigned int doprofile; register unsigned int doprofile;
#ifdef __GO32__ #if defined(__GO32__) || defined(WIN32)
register int pollcount = 0; register int pollcount = 0;
#endif #endif
register int little_endian = target_byte_order == 1234; register int little_endian = target_byte_order == 1234;
@ -961,6 +973,17 @@ sim_resume (step, siggnal)
} }
} }
#endif #endif
#if defined (WIN32)
pollcount++;
if (pollcount > 1000)
{
pollcount = 0;
if (win32pollquit())
{
control_c();
}
}
#endif
#ifndef ACE_FAST #ifndef ACE_FAST
prevlock = thislock; prevlock = thislock;
@ -989,8 +1012,7 @@ sim_resume (step, siggnal)
while (!saved_state.asregs.exception); while (!saved_state.asregs.exception);
if (saved_state.asregs.exception == SIGILL if (saved_state.asregs.exception == SIGILL
|| saved_state.asregs.exception == SIGBUS || saved_state.asregs.exception == SIGBUS)
|| (saved_state.asregs.exception == SIGTRAP && !step))
{ {
pc -= 2; pc -= 2;
} }
@ -1163,3 +1185,4 @@ sim_kill ()
{ {
/* nothing to do */ /* nothing to do */
} }