H8/300 simulator
This commit is contained in:
parent
a9b37611e7
commit
a154eea78c
41
sim/h8300/.Sanitize
Normal file
41
sim/h8300/.Sanitize
Normal file
@ -0,0 +1,41 @@
|
||||
# Sanitize.in for devo.
|
||||
# $Id$
|
||||
#
|
||||
|
||||
# Each directory to survive it's way into a release will need a file
|
||||
# like this one called "./.Sanitize". All keyword lines must exist,
|
||||
# and must exist in the order specified by this file. Each directory
|
||||
# in the tree will be processed, top down, in the following order.
|
||||
|
||||
# Hash started lines like this one are comments and will be deleted
|
||||
# before anything else is done. Blank lines will also be squashed
|
||||
# out.
|
||||
|
||||
# The lines between the "Do-first:" line and the "Things-to-keep:"
|
||||
# line are executed as a /bin/sh shell script before anything else is
|
||||
# done in this
|
||||
|
||||
Do-first:
|
||||
|
||||
echo Sanitizing `pwd`...
|
||||
|
||||
# All files listed between the "Things-to-keep:" line and the
|
||||
# "Files-to-sed:" line will be kept. All other files will be removed.
|
||||
# Directories listed in this section will have their own Sanitize
|
||||
# called. Directories not listed will be removed in their entirety
|
||||
# with rm -rf.
|
||||
|
||||
Things-to-keep:
|
||||
|
||||
ChangeLog
|
||||
Makefile.in
|
||||
configure.in
|
||||
writecode.c
|
||||
run.c
|
||||
|
||||
Do-last:
|
||||
|
||||
echo Done in `pwd`.
|
||||
|
||||
|
||||
# End of file.
|
4
sim/h8300/ChangeLog
Normal file
4
sim/h8300/ChangeLog
Normal file
@ -0,0 +1,4 @@
|
||||
Tue Dec 22 13:56:48 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* new
|
||||
|
191
sim/h8300/Makefile.in
Normal file
191
sim/h8300/Makefile.in
Normal file
@ -0,0 +1,191 @@
|
||||
# Makefile template for Configure for the h8300sim library.
|
||||
# Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
|
||||
# Written by Cygnus Support.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
srcdir = .
|
||||
|
||||
prefix = /usr/local
|
||||
|
||||
exec_prefix = $(prefix)
|
||||
bindir = $(exec_prefix)/bin
|
||||
libdir = $(exec_prefix)/lib
|
||||
|
||||
datadir = $(prefix)/lib
|
||||
mandir = $(prefix)/man
|
||||
man1dir = $(mandir)/man1
|
||||
man2dir = $(mandir)/man2
|
||||
man3dir = $(mandir)/man3
|
||||
man4dir = $(mandir)/man4
|
||||
man5dir = $(mandir)/man5
|
||||
man6dir = $(mandir)/man6
|
||||
man7dir = $(mandir)/man7
|
||||
man8dir = $(mandir)/man8
|
||||
man9dir = $(mandir)/man9
|
||||
infodir = $(prefix)/info
|
||||
includedir = $(prefix)/include
|
||||
oldincludedir =
|
||||
docdir = $(srcdir)/doc
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
INSTALL = install -c
|
||||
INSTALL_PROGRAM = $(INSTALL)
|
||||
INSTALL_DATA = $(INSTALL)
|
||||
|
||||
AR = ar
|
||||
AR_FLAGS = qc
|
||||
CFLAGS = -g
|
||||
BISON = bison
|
||||
MAKEINFO = makeinfo
|
||||
RANLIB = ranlib
|
||||
|
||||
INCDIR = $(srcdir)/../include
|
||||
CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
|
||||
DEP = mkdep
|
||||
|
||||
|
||||
TARGETLIB = libsim.a
|
||||
|
||||
run: code.o run.o
|
||||
$(CC) -o run code.o run.o ../bfd/libbfd.a ../libiberty/libiberty.a
|
||||
|
||||
code.c:p1.c p2.c p3.c
|
||||
cat p1.c p2.c p3.c | cb >code.c
|
||||
indent code.c
|
||||
|
||||
p2.c:writecode
|
||||
./writecode >p2.c
|
||||
|
||||
|
||||
writecode:writecode.o
|
||||
|
||||
writecode.o:writecode.c
|
||||
$(CC) -g -I$(INCDIR) -c writecode.c
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#### host and target dependent Makefile fragments come in here.
|
||||
###
|
||||
|
||||
FLAGS_TO_PASS = \
|
||||
"against=$(against)" \
|
||||
"AR=$(AR)" \
|
||||
"AR_FLAGS=$(AR_FLAGS)" \
|
||||
"CC=$(CC)" \
|
||||
"CFLAGS=$(CFLAGS)" \
|
||||
"RANLIB=$(RANLIB)" \
|
||||
"MAKEINFO=$(MAKEINFO)" \
|
||||
"INSTALL=$(INSTALL)" \
|
||||
"INSTALL_DATA=$(INSTALL_DATA)" \
|
||||
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
|
||||
"BISON=$(BISON)"
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(CFLAGS) $(HDEFINES) $(TDEFINES) $(CSEARCH) $(CSWITCHES) $<
|
||||
|
||||
|
||||
# C source files that correspond to .o's.
|
||||
CFILES = z8k-dis.c
|
||||
|
||||
STAGESTUFF = $(TARGETLIB) $(OFILES)
|
||||
|
||||
all: $(TARGETLIB)
|
||||
|
||||
|
||||
.NOEXPORT:
|
||||
|
||||
check:
|
||||
|
||||
info:
|
||||
clean-info:
|
||||
install-info:
|
||||
|
||||
# HDEPFILES comes from the host config; TDEPFILES from the target config.
|
||||
|
||||
|
||||
$(TARGETLIB): $(OFILES)
|
||||
rm -f $(TARGETLIB)
|
||||
$(AR) $(AR_FLAGS) $(TARGETLIB) $(OFILES)
|
||||
$(RANLIB) $(TARGETLIB)
|
||||
|
||||
# Circumvent Sun Make bug with VPATH.
|
||||
sparc-opc.o: sparc-opc.c
|
||||
|
||||
tags etags: TAGS
|
||||
|
||||
TAGS: force
|
||||
etags $(INCDIR)/*.h $(srcdir)/*.h $(srcdir)/*.c
|
||||
|
||||
clean:
|
||||
rm -f *.[oa] *~ core *.E *.p *.ip aout-params.h gen-aout
|
||||
|
||||
clobber realclean: clean
|
||||
rm -f libbfd.a TAGS
|
||||
|
||||
# Mark everything as depending on config.status, since the timestamp on
|
||||
# sysdep.h might actually move backwards if we reconfig and relink it
|
||||
# to a different hosts/h-xxx.h file. This will force a recompile anyway.
|
||||
RECONFIG = config.status
|
||||
|
||||
|
||||
|
||||
# This target should be invoked before building a new release.
|
||||
# 'VERSION' file must be present and contain a string of the form "x.y"
|
||||
#
|
||||
roll:
|
||||
@V=`cat VERSION` ; \
|
||||
MAJ=`sed 's/\..*//' VERSION` ; \
|
||||
MIN=`sed 's/.*\.//' VERSION` ; \
|
||||
V=$$MAJ.`expr $$MIN + 1` ; \
|
||||
rm -f VERSION ; \
|
||||
echo $$V >VERSION ; \
|
||||
echo Version $$V
|
||||
|
||||
# Dummy target to force execution of dependent targets.
|
||||
#
|
||||
force:
|
||||
|
||||
install:
|
||||
-parent=`echo $(bindir)|sed -e 's@/[^/]*$$@@'`; \
|
||||
if [ -d $$parent ] ; then true ; else mkdir $$parent ; fi
|
||||
-if [ -d $(bindir) ] ; then true ; else mkdir $(bindir) ; fi
|
||||
-parent=`echo $(man1dir)|sed -e 's@/[^/]*$$@@'`; \
|
||||
if [ -d $$parent ] ; then true ; else mkdir $$parent ; fi
|
||||
-if [ -d $(man1dir) ] ; then true ; else mkdir $(man1dir) ; fi
|
||||
-n=`t='$(program_transform_name)'; echo run | sed -e "" $$t`; \
|
||||
$(INSTALL_PROGRAM) run $(bindir)/$$n; \
|
||||
$(M_INSTALL)
|
||||
|
||||
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) $(target_makefile_frag)
|
||||
$(SHELL) ./config.status
|
||||
|
||||
dep: $(CFILES)
|
||||
mkdep $(CFLAGS) $?
|
||||
|
||||
|
||||
# What appears below is generated by a hacked mkdep using gcc -MM.
|
||||
|
||||
# DO NOT DELETE THIS LINE -- mkdep uses it.
|
||||
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
|
||||
|
||||
|
||||
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
|
||||
|
31
sim/h8300/configure.in
Normal file
31
sim/h8300/configure.in
Normal file
@ -0,0 +1,31 @@
|
||||
# This file is a shell script that supplies the information necessary
|
||||
# to tailor a template configure script into the configure script
|
||||
# appropriate for this directory. For more information, check any
|
||||
# existing configure script.
|
||||
|
||||
srctrigger=writecode.c
|
||||
srcname="sim"
|
||||
|
||||
# per-host:
|
||||
|
||||
. ${srcdir}/../bfd/configure.host
|
||||
|
||||
# Set up to make a link between the host's include file and "sysdep.h".
|
||||
files="../bfd/hosts/${my_host}.h"
|
||||
|
||||
links="sysdep.h"
|
||||
|
||||
if [ ! -f ${srcdir}/${files} ] ; then
|
||||
if [ -n "${my_host}" ] ; then
|
||||
echo '***' No file ${srcdir}/${files} 1>&2
|
||||
fi
|
||||
echo '***' ${srcname} does not support host ${host} 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
host_makefile_frag=
|
||||
if [ -f ${srcdir}/../bfd/config/${my_host}.mh ] ; then
|
||||
host_makefile_frag=../bfd/config/${my_host}.mh
|
||||
fi
|
||||
|
||||
# per-target:
|
81
sim/h8300/run.c
Normal file
81
sim/h8300/run.c
Normal file
@ -0,0 +1,81 @@
|
||||
/* run front end support for H8/300
|
||||
Copyright (C) 1987, 1992 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of H8300 SIM
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
|
||||
/* Steve Chamberlain
|
||||
sac@cygnus.com */
|
||||
|
||||
#include "bfd.h"
|
||||
#include "sysdep.h"
|
||||
|
||||
int
|
||||
main(ac,av)
|
||||
int ac;
|
||||
char **av;
|
||||
{
|
||||
bfd *abfd;
|
||||
bfd_vma start_address;
|
||||
asection *s;
|
||||
int i;
|
||||
int verbose = 0;
|
||||
int trace = 0;
|
||||
char *name = "";
|
||||
for (i = 1; i < ac; i++)
|
||||
{
|
||||
if (strcmp(av[i],"-v") == 0)
|
||||
{
|
||||
verbose = 1;
|
||||
}
|
||||
else if (strcmp(av[i],"-t") == 0)
|
||||
{
|
||||
trace = 1;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
name = av[i];
|
||||
}
|
||||
}
|
||||
if (verbose)
|
||||
{
|
||||
printf("run %s\n", name);
|
||||
}
|
||||
abfd = bfd_openr(name,"coff-h8300");
|
||||
|
||||
if (abfd) {
|
||||
|
||||
if (bfd_check_format(abfd, bfd_object))
|
||||
{
|
||||
|
||||
for (s = abfd->sections; s; s=s->next)
|
||||
{
|
||||
char *buffer = malloc(bfd_section_size(abfd,s));
|
||||
bfd_get_section_contents(abfd, s, buffer, 0, bfd_section_size(abfd,s));
|
||||
sim_write(s->vma, buffer, bfd_section_size(abfd,s));
|
||||
}
|
||||
|
||||
start_address = bfd_get_start_address(abfd);
|
||||
sim_store_register(start_address);
|
||||
sim_resume(0,0);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
1396
sim/h8300/writecode.c
Normal file
1396
sim/h8300/writecode.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user