mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-21 10:02:26 +00:00
7/30 release from Andrew
This commit is contained in:
parent
5fac6a39dc
commit
2e913166b1
@ -1,3 +1,241 @@
|
||||
Tue Aug 6 09:28:22 1996 Michael Meissner <meissner@tiktok.cygnus.com>
|
||||
|
||||
* configure.in (--enable-sim-{hardware,packages}): Fix typos.
|
||||
* configure: Regenerate.
|
||||
|
||||
* device.c (device_instance_call_method): Fixup format message in
|
||||
error case. Return 0 in case of error to shut up compiler
|
||||
warnings.
|
||||
|
||||
Wed Jul 31 00:02:30 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* device_table.h (device_instance_callbacks): Relace the claim and
|
||||
release methods with a more general table mapping from method-name
|
||||
to method-function.
|
||||
|
||||
* device.c (device_instance_call_method): New function. Implement
|
||||
the OpenBoot call-method client interface. Attempts to locate the
|
||||
instances method in the callback table.
|
||||
(device_instance_claim, device_instance_release): Delete.
|
||||
Replaced with call-method and a lookup table.
|
||||
|
||||
* emul_chirp.c (chirp_emul_call_method): Use the new device
|
||||
instance call method and let that handle a client claim call.
|
||||
|
||||
* hw_htab.c (claim_memory): Wrapper function to call the memory
|
||||
devices "claim" method using the new device-instance call-method
|
||||
interface. Replaces the previous direct calls to claim.
|
||||
(htab_map_region): Use claim_memory.
|
||||
(htab_init_data_callback): Ditto.
|
||||
|
||||
* hw_memory.c (hw_memory_instance_claim): Update function
|
||||
interface so that it is compatible with call-method.
|
||||
(hw_memory_instance_release): Ditto.
|
||||
(hw_memory_instance_methods): New table of memory specific
|
||||
methods claim and release. Add to the hw_memory_callback
|
||||
table.
|
||||
|
||||
Tue Jul 30 21:26:14 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* psim.c (psim_init): Back out of change to initial value of
|
||||
system->last_cpu.
|
||||
|
||||
Tue Jul 30 21:12:24 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* sim_callbacks.h (sim_io_printf_filtered): Replace
|
||||
printf_filtered with a local simulator specific version. Add
|
||||
#define printf_filtered to simplify updating of existing code.
|
||||
|
||||
* sim_callbacks.h (sim_io_write_stdout, sim_io_read_stdin,
|
||||
sim_io_write_stderr): New functions. Read / write to the
|
||||
simulations stdin and stdout and stderr interfaces. Merge in code
|
||||
from hw_pal that previously handled async I/O.
|
||||
(sim_io_flush_stdoutput): Rename flush_stdoutput. Add #define
|
||||
flush_stdoutput to simplify updating of existing code.
|
||||
|
||||
* hw_pal.c (scan_hw_pal, write_hw_pal,
|
||||
hw_pal_instance_write_callback): Use the new sim_io functions.
|
||||
|
||||
* main.c: Implement standalone versions of the new sim_io
|
||||
functions. Include support for async I/O.
|
||||
* sim_calls.c: Ditto. This time using the gdb callback table.
|
||||
|
||||
* std-config.h (CURRENT_STDIO, current_stdio): New macro. Set up
|
||||
stdio configuration so that it works in the same way as the rest
|
||||
of the simulation.
|
||||
* psim.c (psim_create): Initialize current_stdio from the device
|
||||
tree.
|
||||
* emul_generic.c (emul_add_tree_options): Enter a default value
|
||||
for use-stdio in the device tree.
|
||||
|
||||
Fri Jul 26 19:43:03 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* gen-idecode.c (print_jump): Was always generating a jump back to
|
||||
idecode. Only necessary at tail of semantic code.
|
||||
(print_jump): Was always setting the processor's cia, even during
|
||||
startup when the processor was still undefined.
|
||||
(print_jump): For safety, restart smp loop when cpu_nr >= nr_cpus,
|
||||
not just equal.
|
||||
|
||||
* options.c (print_options): Add printing of WITH_REGPARM and
|
||||
WITH_STDCALL.
|
||||
|
||||
* std-config.h (WITH_REGPARM, WITH_STDCALL): Provide default
|
||||
(disabled) values if not defined.
|
||||
|
||||
Fri Jul 26 00:36:35 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* ppc-cache-rules (cache): Change RS and RB to cache instead of
|
||||
compute. The block move instructions use them.
|
||||
|
||||
* idecode_expression.h (FPSCR_SET): New macro, set specific FPSCR
|
||||
register.
|
||||
(CR_FIELD): New macro, extract specific CR register.
|
||||
(FPSCR_FIELD): New macro, extract specific FPSCR register.
|
||||
|
||||
* registers.h (GPR): New macro, simplify accesses to GPR[i].
|
||||
|
||||
* bits.c (INSERTED): Covert INSERTED macro into a function.
|
||||
(EXTRACTED): Conditionally compile on correct bit size macro.
|
||||
|
||||
* bits.h (BIT8): New macro, set a single bit in an 8 bit byte.
|
||||
|
||||
* ppc-instructions: With hints from Paul Martin, type in missing
|
||||
some instruction semantics. Leave disabled for the moment.
|
||||
(Load Multiple Word): Ditto.
|
||||
(Store Multiple Word): Ditto.
|
||||
(Load String Word Immediate): Ditto.
|
||||
(Load String Word Indexed): Ditto.
|
||||
(Store String Word Immedate): Ditto.
|
||||
(Store String Word Indexed): Ditto.
|
||||
(Move to Condition Register from XER): Ditto.
|
||||
(Move From Condition Register): Ditto.
|
||||
(Move From FPSCR): Ditto.
|
||||
(Move to Condition Register from FPSCR): Ditto.
|
||||
(Move To FPSCR Field Immediate): Ditto.
|
||||
(Move To FPSCR Fields): Ditto.
|
||||
(Move To FPSCR Bit 0): Ditto.
|
||||
(Move To FPSCR Bit 1): Ditto.
|
||||
|
||||
Thu Jul 25 22:10:40 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* std-config.h (SEMANTICS_INLINE): By default, mask out the
|
||||
inlining of semantic functions from DEFAULT_INLINE. Almost all
|
||||
configurations call the semantic code via a pointer so there is
|
||||
little benefit.
|
||||
|
||||
* std-config.h (ICACHE_INLINE): Ditto.
|
||||
|
||||
Thu Jul 25 20:07:30 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* configure.in (sim_regparm): Add configuration option for
|
||||
enabling GCC's regparm attribute.
|
||||
* (sim_stdcall): Add configuration option for enabling GCC's
|
||||
stdcall attribute.
|
||||
|
||||
* Makefile.in (REGPARM_CFLAGS): Pass regparam configuration onto
|
||||
compilations.
|
||||
* (STDCALL_CFLAGS): Pass stdcall configuration onto compilations.
|
||||
|
||||
* std-config.h (REGPARM): Extend construction of REGPARM macro so
|
||||
that it can include __stdcall__ function attribute.
|
||||
|
||||
Wed Jul 24 19:04:20 1996 Andrew Cagney <cagney@sawnoff>
|
||||
|
||||
* options.c (print_options): Include SUPPORT_INLINE in information
|
||||
dump.
|
||||
|
||||
* gen-idecode.c (print_run_until_stop_body): Only generate loop
|
||||
termination test if creating idecode_run_until_stop. Push the
|
||||
loop termination test back into each alternative branch.
|
||||
|
||||
Wed Jul 24 15:47:09 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* gen-icache.c (print_icache_function): Have the cache function
|
||||
always update the cache_entries semantic and address fields.
|
||||
|
||||
* gen-idecode.c (print_idecode_switch_illegal): Include a break
|
||||
when generating illegal instructions. This was commented out
|
||||
which is a hangover from looking a at switch statements generated
|
||||
using indirect jumps.
|
||||
|
||||
Tue Jul 23 20:57:01 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* igen.c (print_my_defines): Replaces print_define_my_index.
|
||||
Print both a definition for MY_INDEX and MY_PREFIX.
|
||||
* gen-icache.c (print_icache_function): Adjust.
|
||||
* gen-idecode.c (print_jump_insn): Adjust.
|
||||
* gen-semantics.c (print_c_semantic): Adjust.
|
||||
|
||||
* gen-support.c (gen_support_h): Add optional include to created
|
||||
support.h so that, like cpu, it is optionally inlined for all
|
||||
modules that include it.
|
||||
* inline.h, inline.c: Adjust so that support.[hc] is handled the
|
||||
same as cpu.[hc].
|
||||
|
||||
* idecode_fields.h (LABEL, GOTO): Macro's that create a unique
|
||||
name for a lable and then branch to it.
|
||||
|
||||
* ppc-instructions (convert_to_integer, Floating Round to
|
||||
Single-Precision, Floating Convert from Integer Doubleword): Use
|
||||
LABEL and GOTO instead of the recently added switch statements.
|
||||
|
||||
Wed Jul 24 14:02:42 1996 Andrew Cagney <cagney@sawnoff.highland.com.au>
|
||||
|
||||
* gen-idecode.c (print_run_until_stop_body): Too many rparen in
|
||||
generated code.
|
||||
|
||||
Tue Jul 23 20:57:01 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* configure.in (--enable-sim-line-nr): Typo - sim_line-nr.
|
||||
* (--enable-sim-inline): Reorder patern matching of arguments so
|
||||
that SUPPORT=ALL_INLINE is reconized as *=* and not *_INLINE.
|
||||
|
||||
* configure: rebuild.
|
||||
|
||||
Mon Jul 22 23:25:08 1996 Andrew Cagney <cagney@highland.com.au>
|
||||
|
||||
* configure.in (--enable-sim-hardware, --enable-sim-packages): New
|
||||
configuration options. Let the user specify the packages or
|
||||
hardware devices that are to be included in the build. Makes it
|
||||
possible for user packages to be specified.
|
||||
|
||||
* Makefile.in (tmp-pk, tmp-hw): Just use the list of packages and
|
||||
hardware instead of checking it using ls. configure.in should
|
||||
have taken care of any problems.
|
||||
(HW_SRC, HW_OBJ, PACKAGE_SRC, PACKAGE_OBJ): Set by configure.
|
||||
|
||||
Mon Jul 22 22:38:59 1996 Andrew Cagney <cagney@highland.com.au>
|
||||
|
||||
* psim.c (psim_options): Enter the argument to the memory size
|
||||
option directly into the device tree. Was using atol() which is
|
||||
dangerously non portable.
|
||||
|
||||
Mon Jul 22 22:17:08 1996 Andrew Cagney <cagney@highland.com.au>
|
||||
|
||||
* configure.in (icache): Extend icache flag to include an insn
|
||||
option. If specifyed the insn - aka instruction - is included in
|
||||
the instruction cache. Make this the default.
|
||||
* configure: re-generate.
|
||||
|
||||
* igen.c (main), igen.h: Add option -S - inSn - for specifying
|
||||
that the instruction should be included in the icache.
|
||||
|
||||
* gen-icache.c (print_icache_body): If enabled, output code to put
|
||||
the instruction into the icache.
|
||||
(print_icache_struct): If enabled, add insn to the icache struct.
|
||||
|
||||
Mon Jul 22 20:46:12 1996 Andrew Cagney <cagney@highland.com.au>
|
||||
|
||||
* Makefile.in (BUILD_CFLAGS): Include -g when building the
|
||||
generators.
|
||||
|
||||
Mon Jul 22 20:00:25 1996 Andrew Cagney <cagney@highland.com.au>
|
||||
|
||||
* emul_generic.c (emul_add_tree_options): Was incorrectly setting
|
||||
the strict-alignment option when hardwired for non-strict
|
||||
alignment.
|
||||
|
||||
Sun Jul 21 21:18:05 1996 Andrew Cagney <cagney@kremvax.highland.com.au>
|
||||
|
||||
* gen-semantics.c: Make the my_index variable a macro MY_INDEX.
|
||||
|
@ -69,6 +69,8 @@ SIM_CFLAGS = @sim_cflags@
|
||||
INLINE_CFLAGS = @sim_inline@
|
||||
BSWAP_CFLAGS = @sim_bswap@
|
||||
ENDIAN_CFLAGS = @sim_endian@
|
||||
REGPARM_CFLAGS = @sim_regparm@
|
||||
STDCALL_CFLAGS = @sim_stdcall@
|
||||
HOSTENDIAN_CFLAGS = @sim_hostendian@
|
||||
SMP_CFLAGS = @sim_smp@
|
||||
XOR_ENDIAN_CFLAGS = @sim_xor_endian@
|
||||
@ -88,6 +90,8 @@ TERMIO_CFLAGS = @sim_termio@
|
||||
WARNING_CFLAGS = @sim_warnings@
|
||||
CONFIG_CFLAGS = $(BSWAP_CFLAGS) \
|
||||
$(ENDIAN_CFLAGS) \
|
||||
$(REGPARM_CFLAGS) \
|
||||
$(STDCALL_CFLAGS) \
|
||||
$(HOSTENDIAN_CFLAGS) \
|
||||
$(SMP_CFLAGS) \
|
||||
$(XOR_ENDIAN_CFLAGS) \
|
||||
@ -107,7 +111,7 @@ CONFIG_CFLAGS = $(BSWAP_CFLAGS) \
|
||||
|
||||
STD_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARNING_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES)
|
||||
NOWARN_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES)
|
||||
BUILD_CFLAGS = -O $(INCLUDES) $(WARNING_CFLAGS)
|
||||
BUILD_CFLAGS = -g -O $(INCLUDES) $(WARNING_CFLAGS)
|
||||
|
||||
BUILD_LDFLAGS =
|
||||
|
||||
@ -292,39 +296,11 @@ LIB_OBJ = \
|
||||
|
||||
GDB_OBJ = sim_calls.o
|
||||
|
||||
HW_SRC = \
|
||||
hw_cpu.c \
|
||||
hw_memory.c \
|
||||
hw_nvram.c \
|
||||
hw_iobus.c \
|
||||
hw_htab.c \
|
||||
hw_disk.c \
|
||||
hw_trace.c \
|
||||
hw_register.c \
|
||||
hw_vm.c \
|
||||
hw_init.c \
|
||||
hw_core.c \
|
||||
hw_pal.c
|
||||
HW_SRC = @sim_hw_src@
|
||||
HW_OBJ = @sim_hw_obj@
|
||||
|
||||
HW_OBJ = \
|
||||
hw_cpu.o \
|
||||
hw_memory.o \
|
||||
hw_nvram.o \
|
||||
hw_iobus.o \
|
||||
hw_htab.o \
|
||||
hw_disk.o \
|
||||
hw_trace.o \
|
||||
hw_register.o \
|
||||
hw_vm.o \
|
||||
hw_init.o \
|
||||
hw_core.o \
|
||||
hw_pal.o
|
||||
|
||||
PACKAGE_SRC = \
|
||||
pk_disklabel.c
|
||||
|
||||
PACKAGE_OBJ = \
|
||||
pk_disklabel.o
|
||||
PACKAGE_SRC = @sim_pk_src@
|
||||
PACKAGE_OBJ = @sim_pk_obj@
|
||||
|
||||
|
||||
psim: $(TARGETLIB) main.o $(LIBIBERTY_LIB) $(BFD_LIB) $(LIBS)
|
||||
@ -531,12 +507,14 @@ misc.o: misc.c misc.h filter_filename.h
|
||||
|
||||
# real hardware
|
||||
tmp-hw: Makefile $(HW_SRC) $(srcdir)/../../move-if-change
|
||||
(cd $(srcdir); ls $(HW_SRC)) \
|
||||
for hw in $(HW_SRC) ; do echo $$hw ; done \
|
||||
| sort -u \
|
||||
| sed -e 's/^.*\(hw_.*\)\.c/\1/' \
|
||||
-e 's/^/extern const device_descriptor /' \
|
||||
-e 's/$$/_device_descriptor\[\];/' \
|
||||
> tmp-hw.h
|
||||
(cd $(srcdir); ls $(HW_SRC)) \
|
||||
for hw in $(HW_SRC) ; do echo $$hw ; done \
|
||||
| sort -u \
|
||||
| sed -e 's/^.*\(hw_.*\)\.c/\1/' \
|
||||
-e 's/^/ /' \
|
||||
-e 's/$$/_device_descriptor,/' \
|
||||
@ -563,7 +541,8 @@ hw_init.o: hw_init.c $(DEVICE_TABLE_H)
|
||||
|
||||
# real packages
|
||||
tmp-pk: Makefile $(PACKAGE_SRC) $(srcdir)/../../move-if-change
|
||||
(cd $(srcdir); ls $(PACKAGE_SRC)) \
|
||||
for pk in $(PACKAGE_SRC) ; do echo $$pk ; done \
|
||||
| sort -u \
|
||||
| sed -e 's/^pk_\(.*\)\.c/\1/' \
|
||||
-e 's/^/extern package_create_instance_callback pk_/' \
|
||||
-e 's/$$/_create_instance;/' \
|
||||
|
230
sim/ppc/configure
vendored
230
sim/ppc/configure
vendored
@ -31,12 +31,20 @@ ac_help="$ac_help
|
||||
--enable-sim-filter=rule Specify filter rules."
|
||||
ac_help="$ac_help
|
||||
--enable-sim-icache=size Specify instruction cache size."
|
||||
ac_help="$ac_help
|
||||
--enable-sim-hardware=list Specify the hardware to be included in the build."
|
||||
ac_help="$ac_help
|
||||
--enable-sim-packages=list Specify the packages to be included in the build."
|
||||
ac_help="$ac_help
|
||||
--enable-sim-inline=inlines Specify which functions should be inlined."
|
||||
ac_help="$ac_help
|
||||
--enable-sim-bswap Use the BSWAP instruction on Intel 486s and Pentiums."
|
||||
ac_help="$ac_help
|
||||
--enable-sim-endian=endian Specify target byte endian orientation."
|
||||
ac_help="$ac_help
|
||||
--enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific."
|
||||
ac_help="$ac_help
|
||||
--enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific."
|
||||
ac_help="$ac_help
|
||||
--enable-sim-hostendain=end Specify host byte endian orientation."
|
||||
ac_help="$ac_help
|
||||
@ -737,7 +745,7 @@ else
|
||||
yes;
|
||||
#endif
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:741: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
||||
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
||||
ac_cv_prog_gcc=yes
|
||||
else
|
||||
ac_cv_prog_gcc=no
|
||||
@ -785,11 +793,11 @@ else
|
||||
ac_cv_c_cross=yes
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 789 "configure"
|
||||
#line 797 "configure"
|
||||
#include "confdefs.h"
|
||||
main(){return(0);}
|
||||
EOF
|
||||
{ (eval echo configure:793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
{ (eval echo configure:801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
if test -s conftest && (./conftest; exit) 2>/dev/null; then
|
||||
ac_cv_c_cross=no
|
||||
else
|
||||
@ -850,7 +858,7 @@ if test x"$silent" != x"yes" && test x"$sim_line_nr" != x""; then
|
||||
echo "Setting warning flags = $sim_line_nr" 6>&1
|
||||
fi
|
||||
else
|
||||
sim_line-nr=""
|
||||
sim_line_nr=""
|
||||
fi
|
||||
|
||||
# Check whether --enable-sim-config or --disable-sim-config was given.
|
||||
@ -977,7 +985,7 @@ fi
|
||||
if test "${enable_sim_icache+set}" = set; then
|
||||
enableval="$enable_sim_icache"
|
||||
icache=""
|
||||
case "${enableval}" in
|
||||
case "${enableval}" in
|
||||
yes) icache="1024"; sim_icache="-I $icache";;
|
||||
no) sim_icache="";;
|
||||
*) icache=1024
|
||||
@ -986,6 +994,7 @@ case "${enableval}" in
|
||||
case "$x" in
|
||||
define) sim_icache="${sim_icache}R";;
|
||||
semantic) sim_icache="${sim_icache}C";;
|
||||
insn) sim_icache="${sim_icache}S";;
|
||||
0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) icache=$x;;
|
||||
*) { echo "configure: error: "Unknown value $x for --enable-sim-icache"" 1>&2; exit 1; }; sim_icache="";;
|
||||
esac
|
||||
@ -996,12 +1005,61 @@ if test x"$silent" != x"yes" && test x"$icache" != x""; then
|
||||
echo "Setting instruction cache size to $icache ($sim_icache)"
|
||||
fi
|
||||
else
|
||||
sim_icache="-CI 1024"
|
||||
sim_icache="-CSI 1024"
|
||||
if test x"$silent" != x"yes"; then
|
||||
echo "Setting instruction cache size to 1024 ($sim_icache)"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check whether --enable-sim-hardware or --disable-sim-hardware was given.
|
||||
if test "${enable_sim_hardware+set}" = set; then
|
||||
enableval="$enable_sim_hardware"
|
||||
hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal"
|
||||
case "${enableval}" in
|
||||
yes) ;;
|
||||
no) { echo "configure: error: "List of hardware must be specified for --enable-sim-hardware"" 1>&2; exit 1; }; hardware="";;
|
||||
,*) hardware="${hardware}${enableval}";;
|
||||
*) hardware="${enableval}";;
|
||||
esac
|
||||
sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
|
||||
sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
|
||||
if test x"$silent" != x"yes" && test x"$hardware" != x""; then
|
||||
echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
|
||||
fi
|
||||
else
|
||||
hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal"
|
||||
sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
|
||||
sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
|
||||
if test x"$silent" != x"yes"; then
|
||||
echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# Check whether --enable-sim-packages or --disable-sim-packages was given.
|
||||
if test "${enable_sim_packages+set}" = set; then
|
||||
enableval="$enable_sim_packages"
|
||||
packages=disklabel
|
||||
case "${enableval}" in
|
||||
yes) ;;
|
||||
no) { echo "configure: error: "List of packages must be specified for --enable-sim-packages"" 1>&2; exit 1; }; packages="";;
|
||||
,*) packages="${packages}${enableval}";;
|
||||
*) packages="${enableval}"''
|
||||
esac
|
||||
sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
|
||||
sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
|
||||
if test x"$silent" != x"yes" && test x"$packages" != x""; then
|
||||
echo "Setting packages to $sim_pk_src, $sim_pk_obj"
|
||||
fi
|
||||
else
|
||||
packages=disklabel
|
||||
sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
|
||||
sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
|
||||
if test x"$silent" != x"yes"; then
|
||||
echo "Setting packages to $sim_pk_src, $sim_pk_obj"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check whether --enable-sim-inline or --disable-sim-inline was given.
|
||||
if test "${enable_sim_inline+set}" = set; then
|
||||
enableval="$enable_sim_inline"
|
||||
@ -1015,8 +1073,8 @@ case "$enableval" in
|
||||
new_flag=""
|
||||
case "$x" in
|
||||
*_INLINE=*) new_flag="-D$x";;
|
||||
*_INLINE) new_flag="-D$x=ALL_INLINE";;
|
||||
*=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
|
||||
*_INLINE) new_flag="-D$x=ALL_INLINE";;
|
||||
*) new_flag="-D$x""_INLINE=ALL_INLINE";;
|
||||
esac
|
||||
if test x"$sim_inline" = x""; then
|
||||
@ -1076,6 +1134,38 @@ else
|
||||
sim_endian=""
|
||||
fi
|
||||
|
||||
# Check whether --enable-sim-regparm or --disable-sim-regparm was given.
|
||||
if test "${enable_sim_regparm+set}" = set; then
|
||||
enableval="$enable_sim_regparm"
|
||||
case "${enableval}" in
|
||||
0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
|
||||
no) sim_regparm="" ;;
|
||||
yes) sim_regparm="-DWITH_REGPARM=3";;
|
||||
*) { echo "configure: error: "Unknown value $enableval for --enable-sim-regparm"" 1>&2; exit 1; }; sim_regparm="";;
|
||||
esac
|
||||
if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
|
||||
echo "Setting regparm flags = $sim_regparm" 6>&1
|
||||
fi
|
||||
else
|
||||
sim_regparm=""
|
||||
fi
|
||||
|
||||
# Check whether --enable-sim-stdcall or --disable-sim-stdcall was given.
|
||||
if test "${enable_sim_stdcall+set}" = set; then
|
||||
enableval="$enable_sim_stdcall"
|
||||
case "${enableval}" in
|
||||
no) sim_stdcall="" ;;
|
||||
std*) sim_stdcall="-DWITH_STDCALL=1";;
|
||||
yes) sim_stdcall="-DWITH_STDCALL=1";;
|
||||
*) { echo "configure: error: "Unknown value $enableval for --enable-sim-stdcall"" 1>&2; exit 1; }; sim_stdcall="";;
|
||||
esac
|
||||
if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
|
||||
echo "Setting function call flags = $sim_stdcall" 6>&1
|
||||
fi
|
||||
else
|
||||
sim_stdcall=""
|
||||
fi
|
||||
|
||||
# Check whether --enable-sim-hostendian or --disable-sim-hostendian was given.
|
||||
if test "${enable_sim_hostendian+set}" = set; then
|
||||
enableval="$enable_sim_hostendian"
|
||||
@ -1098,7 +1188,7 @@ else
|
||||
ac_cv_c_bigendian=unknown
|
||||
# See if sys/param.h defines the BYTE_ORDER macro.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1102 "configure"
|
||||
#line 1192 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
@ -1110,11 +1200,11 @@ int t() {
|
||||
#endif
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1114: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1204: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
# It does; now see whether it defined to BIG_ENDIAN or not.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1118 "configure"
|
||||
#line 1208 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
@ -1126,7 +1216,7 @@ int t() {
|
||||
#endif
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1130: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1220: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_c_bigendian=yes
|
||||
else
|
||||
@ -1143,7 +1233,7 @@ if test "$cross_compiling" = yes; then
|
||||
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1147 "configure"
|
||||
#line 1237 "configure"
|
||||
#include "confdefs.h"
|
||||
main () {
|
||||
/* Are we little or big endian? From Harbison&Steele. */
|
||||
@ -1156,7 +1246,7 @@ main () {
|
||||
exit (u.c[sizeof (long) - 1] == 1);
|
||||
}
|
||||
EOF
|
||||
{ (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
{ (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
if test -s conftest && (./conftest; exit) 2>/dev/null; then
|
||||
ac_cv_c_bigendian=no
|
||||
else
|
||||
@ -1563,7 +1653,7 @@ if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1567 "configure"
|
||||
#line 1657 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@ -1572,7 +1662,7 @@ int t() {
|
||||
struct stat s; s.st_blksize;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1576: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_struct_st_blksize=yes
|
||||
else
|
||||
@ -1596,7 +1686,7 @@ if eval "test \"`echo '$''{'ac_cv_struct_st_blocks'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1600 "configure"
|
||||
#line 1690 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@ -1605,7 +1695,7 @@ int t() {
|
||||
struct stat s; s.st_blocks;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_struct_st_blocks=yes
|
||||
else
|
||||
@ -1631,7 +1721,7 @@ if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1635 "configure"
|
||||
#line 1725 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@ -1640,7 +1730,7 @@ int t() {
|
||||
struct stat s; s.st_rdev;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1734: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_struct_st_rdev=yes
|
||||
else
|
||||
@ -1664,7 +1754,7 @@ if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1668 "configure"
|
||||
#line 1758 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
@ -1673,7 +1763,7 @@ int t() {
|
||||
struct tm *tp; tp->tm_sec;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_struct_tm=time.h
|
||||
else
|
||||
@ -1697,7 +1787,7 @@ if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1701 "configure"
|
||||
#line 1791 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <$ac_cv_struct_tm>
|
||||
@ -1706,7 +1796,7 @@ int t() {
|
||||
struct tm tm; tm.tm_zone;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1800: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_struct_tm_zone=yes
|
||||
else
|
||||
@ -1729,7 +1819,7 @@ if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1733 "configure"
|
||||
#line 1823 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <time.h>
|
||||
#ifndef tzname /* For SGI. */
|
||||
@ -1740,7 +1830,7 @@ int t() {
|
||||
atoi(*tzname);
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:1834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_var_tzname=yes
|
||||
else
|
||||
@ -1776,13 +1866,13 @@ else
|
||||
# On the NeXT, cc -E runs the code through the compiler's parser,
|
||||
# not just through cpp.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1780 "configure"
|
||||
#line 1870 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <assert.h>
|
||||
Syntax Error
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:1786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:1876: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out`
|
||||
if test -z "$ac_err"; then
|
||||
:
|
||||
@ -1791,13 +1881,13 @@ else
|
||||
rm -rf conftest*
|
||||
CPP="${CC-cc} -E -traditional-cpp"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1795 "configure"
|
||||
#line 1885 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <assert.h>
|
||||
Syntax Error
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:1801: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:1891: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out`
|
||||
if test -z "$ac_err"; then
|
||||
:
|
||||
@ -1822,7 +1912,7 @@ if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1826 "configure"
|
||||
#line 1916 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
EOF
|
||||
@ -1858,7 +1948,7 @@ else
|
||||
ac_cv_type_getgroups=cross
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1862 "configure"
|
||||
#line 1952 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
/* Thanks to Mike Rendell for this test. */
|
||||
@ -1883,7 +1973,7 @@ main()
|
||||
}
|
||||
|
||||
EOF
|
||||
{ (eval echo configure:1887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
{ (eval echo configure:1977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
if test -s conftest && (./conftest; exit) 2>/dev/null; then
|
||||
ac_cv_type_getgroups=gid_t
|
||||
else
|
||||
@ -1893,7 +1983,7 @@ fi
|
||||
rm -fr conftest*
|
||||
if test $ac_cv_type_getgroups = cross; then
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1897 "configure"
|
||||
#line 1987 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <unistd.h>
|
||||
EOF
|
||||
@ -1921,7 +2011,7 @@ if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1925 "configure"
|
||||
#line 2015 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
@ -1929,7 +2019,7 @@ else
|
||||
#include <float.h>
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:1933: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:2023: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out`
|
||||
if test -z "$ac_err"; then
|
||||
rm -rf conftest*
|
||||
@ -1944,7 +2034,7 @@ rm -f conftest*
|
||||
if test $ac_cv_header_stdc = yes; then
|
||||
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1948 "configure"
|
||||
#line 2038 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <string.h>
|
||||
EOF
|
||||
@ -1962,7 +2052,7 @@ fi
|
||||
if test $ac_cv_header_stdc = yes; then
|
||||
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1966 "configure"
|
||||
#line 2056 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdlib.h>
|
||||
EOF
|
||||
@ -1983,7 +2073,7 @@ if test "$cross_compiling" = yes; then
|
||||
:
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1987 "configure"
|
||||
#line 2077 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <ctype.h>
|
||||
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
|
||||
@ -1994,7 +2084,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
|
||||
exit (0); }
|
||||
|
||||
EOF
|
||||
{ (eval echo configure:1998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
{ (eval echo configure:2088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
if test -s conftest && (./conftest; exit) 2>/dev/null; then
|
||||
:
|
||||
else
|
||||
@ -2018,7 +2108,7 @@ if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2022 "configure"
|
||||
#line 2112 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -2049,7 +2139,7 @@ if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2053 "configure"
|
||||
#line 2143 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -2080,7 +2170,7 @@ if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2084 "configure"
|
||||
#line 2174 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -2111,7 +2201,7 @@ if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2115 "configure"
|
||||
#line 2205 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
@ -2129,7 +2219,7 @@ int t() {
|
||||
int i;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2223: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_type_signal=void
|
||||
else
|
||||
@ -2151,7 +2241,7 @@ if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2155 "configure"
|
||||
#line 2245 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -2182,7 +2272,7 @@ if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2186 "configure"
|
||||
#line 2276 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
EOF
|
||||
@ -2218,7 +2308,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2222 "configure"
|
||||
#line 2312 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char $ac_func(); below. */
|
||||
@ -2242,7 +2332,7 @@ $ac_func();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:2336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_$ac_func=yes"
|
||||
else
|
||||
@ -2273,12 +2363,12 @@ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2277 "configure"
|
||||
#line 2367 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <$ac_hdr>
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:2282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:2372: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out`
|
||||
if test -z "$ac_err"; then
|
||||
rm -rf conftest*
|
||||
@ -2311,7 +2401,7 @@ if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2315 "configure"
|
||||
#line 2405 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <$ac_hdr>
|
||||
@ -2320,7 +2410,7 @@ int t() {
|
||||
DIR *dirp = 0;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2324: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_header_dirent_$ac_safe=yes"
|
||||
else
|
||||
@ -2351,7 +2441,7 @@ else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-ldir $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2355 "configure"
|
||||
#line 2445 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
@ -2363,7 +2453,7 @@ int t() {
|
||||
opendir()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:2457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
@ -2390,7 +2480,7 @@ else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lx $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2394 "configure"
|
||||
#line 2484 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
@ -2402,7 +2492,7 @@ int t() {
|
||||
opendir()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:2496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
@ -2429,7 +2519,7 @@ if eval "test \"`echo '$''{'ac_cv_termios_struct'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2433 "configure"
|
||||
#line 2523 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/termios.h>
|
||||
@ -2443,7 +2533,7 @@ static struct termios x;
|
||||
x.c_cc[NCCS] = 0;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2447: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_termios_struct=yes
|
||||
else
|
||||
@ -2465,7 +2555,7 @@ if test "$ac_cv_termios_struct" = "yes"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2469 "configure"
|
||||
#line 2559 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/termios.h>
|
||||
@ -2474,7 +2564,7 @@ int t() {
|
||||
static struct termios x; x.c_line = 0;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_termios_cline=yes
|
||||
else
|
||||
@ -2500,7 +2590,7 @@ if test "$ac_cv_termios_struct" != "yes"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2504 "configure"
|
||||
#line 2594 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/termio.h>
|
||||
@ -2514,7 +2604,7 @@ static struct termio x;
|
||||
x.c_cc[NCC] = 0;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_termio_struct=yes
|
||||
else
|
||||
@ -2539,7 +2629,7 @@ if test "$ac_cv_termio_struct" = "yes"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2543 "configure"
|
||||
#line 2633 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/termio.h>
|
||||
@ -2548,7 +2638,7 @@ int t() {
|
||||
static struct termio x; x.c_line = 0;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2552: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_termio_cline=yes
|
||||
else
|
||||
@ -2627,6 +2717,12 @@ fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2785,9 +2881,15 @@ s%@sim_dup@%$sim_dup%g
|
||||
s%@sim_jump@%$sim_jump%g
|
||||
s%@sim_filter@%$sim_filter%g
|
||||
s%@sim_icache@%$sim_icache%g
|
||||
s%@sim_hw_src@%$sim_hw_src%g
|
||||
s%@sim_hw_obj@%$sim_hw_obj%g
|
||||
s%@sim_pk_src@%$sim_pk_src%g
|
||||
s%@sim_pk_obj@%$sim_pk_obj%g
|
||||
s%@sim_inline@%$sim_inline%g
|
||||
s%@sim_bswap@%$sim_bswap%g
|
||||
s%@sim_endian@%$sim_endian%g
|
||||
s%@sim_regparm@%$sim_regparm%g
|
||||
s%@sim_stdcall@%$sim_stdcall%g
|
||||
s%@sim_xor_endian@%$sim_xor_endian%g
|
||||
s%@sim_hostendian@%$sim_hostendian%g
|
||||
s%@sim_smp@%$sim_smp%g
|
||||
|
@ -44,7 +44,7 @@ AC_ARG_ENABLE(sim-line-nr,
|
||||
esac
|
||||
if test x"$silent" != x"yes" && test x"$sim_line_nr" != x""; then
|
||||
echo "Setting warning flags = $sim_line_nr" 6>&1
|
||||
fi],[sim_line-nr=""])dnl
|
||||
fi],[sim_line_nr=""])dnl
|
||||
|
||||
AC_ARG_ENABLE(sim-config,
|
||||
[ --enable-sim-config=file Override default config file],
|
||||
@ -144,8 +144,8 @@ fi])dnl
|
||||
|
||||
AC_ARG_ENABLE(sim-icache,
|
||||
[ --enable-sim-icache=size Specify instruction cache size.],
|
||||
icache=""
|
||||
[case "${enableval}" in
|
||||
[icache=""
|
||||
case "${enableval}" in
|
||||
yes) icache="1024"; sim_icache="-I $icache";;
|
||||
no) sim_icache="";;
|
||||
*) icache=1024
|
||||
@ -154,6 +154,7 @@ icache=""
|
||||
case "$x" in
|
||||
define) sim_icache="${sim_icache}R";;
|
||||
semantic) sim_icache="${sim_icache}C";;
|
||||
insn) sim_icache="${sim_icache}S";;
|
||||
0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) icache=$x;;
|
||||
*) AC_MSG_ERROR("Unknown value $x for --enable-sim-icache"); sim_icache="";;
|
||||
esac
|
||||
@ -162,11 +163,52 @@ icache=""
|
||||
esac
|
||||
if test x"$silent" != x"yes" && test x"$icache" != x""; then
|
||||
echo "Setting instruction cache size to $icache ($sim_icache)"
|
||||
fi],[sim_icache="-CI 1024"
|
||||
fi],[sim_icache="-CSI 1024"
|
||||
if test x"$silent" != x"yes"; then
|
||||
echo "Setting instruction cache size to 1024 ($sim_icache)"
|
||||
fi])dnl
|
||||
|
||||
AC_ARG_ENABLE(sim-hardware,
|
||||
[ --enable-sim-hardware=list Specify the hardware to be included in the build.],
|
||||
[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal"
|
||||
case "${enableval}" in
|
||||
yes) ;;
|
||||
no) AC_MSG_ERROR("List of hardware must be specified for --enable-sim-hardware"); hardware="";;
|
||||
,*) hardware="${hardware}${enableval}";;
|
||||
*) hardware="${enableval}";;
|
||||
esac
|
||||
sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
|
||||
sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
|
||||
if test x"$silent" != x"yes" && test x"$hardware" != x""; then
|
||||
echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
|
||||
fi],[hardware="cpu,memory,nvram,iobus,htab,disk,trace,register,vm,init,core,pal"
|
||||
sim_hw_src=`echo $hardware | sed -e 's/,/.c hw_/g' -e 's/^/hw_/' -e s'/$/.c/'`
|
||||
sim_hw_obj=`echo $sim_hw_src | sed -e 's/\.c/.o/g'`
|
||||
if test x"$silent" != x"yes"; then
|
||||
echo "Setting hardware to $sim_hw_src, $sim_hw_obj"
|
||||
fi])dnl
|
||||
|
||||
|
||||
AC_ARG_ENABLE(sim-packages,
|
||||
[ --enable-sim-packages=list Specify the packages to be included in the build.],
|
||||
[packages=disklabel
|
||||
case "${enableval}" in
|
||||
yes) ;;
|
||||
no) AC_MSG_ERROR("List of packages must be specified for --enable-sim-packages"); packages="";;
|
||||
,*) packages="${packages}${enableval}";;
|
||||
*) packages="${enableval}"''
|
||||
esac
|
||||
sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
|
||||
sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
|
||||
if test x"$silent" != x"yes" && test x"$packages" != x""; then
|
||||
echo "Setting packages to $sim_pk_src, $sim_pk_obj"
|
||||
fi],[packages=disklabel
|
||||
sim_pk_src=`echo $packages | sed -e 's/,/.c pk_/g' -e 's/^/pk_/' -e 's/$/.c/'`
|
||||
sim_pk_obj=`echo $sim_pk_src | sed -e 's/\.c/.o/g'`
|
||||
if test x"$silent" != x"yes"; then
|
||||
echo "Setting packages to $sim_pk_src, $sim_pk_obj"
|
||||
fi])dnl
|
||||
|
||||
AC_ARG_ENABLE(sim-inline,
|
||||
[ --enable-sim-inline=inlines Specify which functions should be inlined.],
|
||||
[sim_inline=""
|
||||
@ -179,8 +221,8 @@ case "$enableval" in
|
||||
new_flag=""
|
||||
case "$x" in
|
||||
*_INLINE=*) new_flag="-D$x";;
|
||||
*_INLINE) new_flag="-D$x=ALL_INLINE";;
|
||||
*=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
|
||||
*_INLINE) new_flag="-D$x=ALL_INLINE";;
|
||||
*) new_flag="-D$x""_INLINE=ALL_INLINE";;
|
||||
esac
|
||||
if test x"$sim_inline" = x""; then
|
||||
@ -229,6 +271,30 @@ if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
|
||||
echo "Setting endian flags = $sim_endian" 6>&1
|
||||
fi],[sim_endian=""])dnl
|
||||
|
||||
AC_ARG_ENABLE(sim-regparm,
|
||||
[ --enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific.],
|
||||
[case "${enableval}" in
|
||||
0*|1*|2*|3*|4*|5*|6*|7*|8*|9*) sim_regparm="-DWITH_REGPARM=${enableval}";;
|
||||
no) sim_regparm="" ;;
|
||||
yes) sim_regparm="-DWITH_REGPARM=3";;
|
||||
*) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-regparm"); sim_regparm="";;
|
||||
esac
|
||||
if test x"$silent" != x"yes" && test x"$sim_regparm" != x""; then
|
||||
echo "Setting regparm flags = $sim_regparm" 6>&1
|
||||
fi],[sim_regparm=""])dnl
|
||||
|
||||
AC_ARG_ENABLE(sim-stdcall,
|
||||
[ --enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific.],
|
||||
[case "${enableval}" in
|
||||
no) sim_stdcall="" ;;
|
||||
std*) sim_stdcall="-DWITH_STDCALL=1";;
|
||||
yes) sim_stdcall="-DWITH_STDCALL=1";;
|
||||
*) AC_MSG_ERROR("Unknown value $enableval for --enable-sim-stdcall"); sim_stdcall="";;
|
||||
esac
|
||||
if test x"$silent" != x"yes" && test x"$sim_stdcall" != x""; then
|
||||
echo "Setting function call flags = $sim_stdcall" 6>&1
|
||||
fi],[sim_stdcall=""])dnl
|
||||
|
||||
AC_ARG_ENABLE(sim-hostendian,
|
||||
[ --enable-sim-hostendain=end Specify host byte endian orientation.],
|
||||
[case "${enableval}" in
|
||||
@ -543,9 +609,15 @@ AC_SUBST(sim_dup)
|
||||
AC_SUBST(sim_jump)
|
||||
AC_SUBST(sim_filter)
|
||||
AC_SUBST(sim_icache)
|
||||
AC_SUBST(sim_hw_src)
|
||||
AC_SUBST(sim_hw_obj)
|
||||
AC_SUBST(sim_pk_src)
|
||||
AC_SUBST(sim_pk_obj)
|
||||
AC_SUBST(sim_inline)
|
||||
AC_SUBST(sim_bswap)
|
||||
AC_SUBST(sim_endian)
|
||||
AC_SUBST(sim_regparm)
|
||||
AC_SUBST(sim_stdcall)
|
||||
AC_SUBST(sim_xor_endian)
|
||||
AC_SUBST(sim_hostendian)
|
||||
AC_SUBST(sim_smp)
|
||||
|
@ -282,10 +282,13 @@ emul_add_tree_options(device *tree,
|
||||
device_tree_add_parsed(tree, "/openprom/options/env %s", env);
|
||||
device_tree_add_parsed(tree, "/openprom/options/os-emul %s", emul);
|
||||
device_tree_add_parsed(tree, "/openprom/options/strict-alignment? %s",
|
||||
(WITH_ALIGNMENT == STRICT_ALIGNMENT || little_endian)
|
||||
((WITH_ALIGNMENT == 0 && little_endian)
|
||||
|| (WITH_ALIGNMENT == STRICT_ALIGNMENT))
|
||||
? "true" : "false");
|
||||
device_tree_add_parsed(tree, "/openprom/options/floating-point? %s",
|
||||
WITH_FLOATING_POINT ? "true" : "false");
|
||||
device_tree_add_parsed(tree, "/openprom/options/use-stdio? %s",
|
||||
WITH_STDIO == DO_USE_STDIO ? "true" : "false");
|
||||
device_tree_add_parsed(tree, "/openprom/options/model \"%s",
|
||||
model_name[WITH_DEFAULT_MODEL]);
|
||||
device_tree_add_parsed(tree, "/openprom/options/model-issue %d",
|
||||
|
147
sim/ppc/main.c
147
sim/ppc/main.c
@ -21,6 +21,7 @@
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include "psim.h"
|
||||
#include "options.h"
|
||||
@ -42,10 +43,19 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(O_NDELAY) || !defined(F_GETFL) || !defined(F_SETFL)
|
||||
#undef WITH_STDIO
|
||||
#define WITH_STDIO DO_USE_STDIO
|
||||
#endif
|
||||
|
||||
|
||||
extern char **environ;
|
||||
|
||||
static psim *simulation = NULL;
|
||||
|
||||
|
||||
void
|
||||
printf_filtered(const char *msg, ...)
|
||||
sim_io_printf_filtered(const char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
@ -53,12 +63,6 @@ printf_filtered(const char *msg, ...)
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void
|
||||
flush_stdoutput(void)
|
||||
{
|
||||
fflush (stdout);
|
||||
}
|
||||
|
||||
void
|
||||
error (char *msg, ...)
|
||||
{
|
||||
@ -66,9 +70,125 @@ error (char *msg, ...)
|
||||
va_start(ap, msg);
|
||||
vprintf(msg, ap);
|
||||
va_end(ap);
|
||||
|
||||
/* any final clean up */
|
||||
if (ppc_trace[trace_print_info] && simulation != NULL)
|
||||
psim_print_info (simulation, ppc_trace[trace_print_info]);
|
||||
|
||||
exit (1);
|
||||
}
|
||||
|
||||
int
|
||||
sim_io_write_stdout(const char *buf,
|
||||
int sizeof_buf)
|
||||
{
|
||||
switch (CURRENT_STDIO) {
|
||||
case DO_USE_STDIO:
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < sizeof_buf; i++) {
|
||||
putchar(buf[i]);
|
||||
}
|
||||
return i;
|
||||
}
|
||||
break;
|
||||
case DONT_USE_STDIO:
|
||||
return write(1, buf, sizeof_buf);
|
||||
break;
|
||||
default:
|
||||
error("sim_io_write_stdout: invalid switch\n");
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
sim_io_write_stderr(const char *buf,
|
||||
int sizeof_buf)
|
||||
{
|
||||
switch (CURRENT_STDIO) {
|
||||
case DO_USE_STDIO:
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < sizeof_buf; i++) {
|
||||
fputc(buf[i], stderr);
|
||||
}
|
||||
return i;
|
||||
}
|
||||
break;
|
||||
case DONT_USE_STDIO:
|
||||
return write(2, buf, sizeof_buf);
|
||||
break;
|
||||
default:
|
||||
error("sim_io_write_stdout: invalid switch\n");
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
sim_io_read_stdin(char *buf,
|
||||
int sizeof_buf)
|
||||
{
|
||||
switch (CURRENT_STDIO) {
|
||||
case DO_USE_STDIO:
|
||||
if (fgets(buf, sizeof_buf, stdin) == NULL)
|
||||
return sim_io_eof;
|
||||
else
|
||||
return strlen(buf);
|
||||
break;
|
||||
case DONT_USE_STDIO:
|
||||
{
|
||||
/* check for input */
|
||||
int flags;
|
||||
int status;
|
||||
int nr_read;
|
||||
/* get the old status */
|
||||
flags = fcntl(0, F_GETFL, 0);
|
||||
if (flags == -1) {
|
||||
perror("sim_io_read_stdin");
|
||||
return sim_io_eof;
|
||||
}
|
||||
/* temp, disable blocking IO */
|
||||
status = fcntl(0, F_SETFL, flags | O_NDELAY);
|
||||
if (status == -1) {
|
||||
perror("sim_io_read_stdin");
|
||||
return sim_io_eof;
|
||||
}
|
||||
/* try for input */
|
||||
nr_read = read(0, &buf, sizeof_buf);
|
||||
/* return to regular vewing */
|
||||
status = fcntl(0, F_SETFL, flags);
|
||||
if (status == -1) {
|
||||
perror("sim_io_read_stdin");
|
||||
return sim_io_eof;
|
||||
}
|
||||
if (status > 0)
|
||||
return 1;
|
||||
else if (status < 0)
|
||||
return sim_io_eof;
|
||||
else
|
||||
return sim_io_not_ready;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
error("sim_io_read_stdin: invalid switch\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
sim_io_flush_stdoutput(void)
|
||||
{
|
||||
switch (CURRENT_STDIO) {
|
||||
case DO_USE_STDIO:
|
||||
fflush (stdout);
|
||||
break;
|
||||
case DONT_USE_STDIO:
|
||||
break;
|
||||
default:
|
||||
error("sim_io_flush_stdoutput: invalid switch\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void *
|
||||
zalloc(long size)
|
||||
{
|
||||
@ -88,7 +208,6 @@ zfree(void *chunk)
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
psim *system;
|
||||
const char *name_of_file;
|
||||
char *arg_;
|
||||
psim_status status;
|
||||
@ -104,7 +223,7 @@ main(int argc, char **argv)
|
||||
print_options ();
|
||||
|
||||
/* create the simulator */
|
||||
system = psim_create(name_of_file, root);
|
||||
simulation = psim_create(name_of_file, root);
|
||||
|
||||
/* fudge the environment so that _=prog-name */
|
||||
arg_ = (char*)zalloc(strlen(argv[0]) + strlen("_=") + 1);
|
||||
@ -113,17 +232,17 @@ main(int argc, char **argv)
|
||||
putenv(arg_);
|
||||
|
||||
/* initialize it */
|
||||
psim_init(system);
|
||||
psim_stack(system, argv, environ);
|
||||
psim_init(simulation);
|
||||
psim_stack(simulation, argv, environ);
|
||||
|
||||
psim_run(system);
|
||||
psim_run(simulation);
|
||||
|
||||
/* any final clean up */
|
||||
if (ppc_trace[trace_print_info])
|
||||
psim_print_info (system, ppc_trace[trace_print_info]);
|
||||
psim_print_info (simulation, ppc_trace[trace_print_info]);
|
||||
|
||||
/* why did we stop */
|
||||
status = psim_get_status(system);
|
||||
status = psim_get_status(simulation);
|
||||
switch (status.reason) {
|
||||
case was_continuing:
|
||||
error("psim: continuing while stoped!\n");
|
||||
|
@ -24,7 +24,8 @@
|
||||
#include "cpu.h"
|
||||
#include "options.h"
|
||||
|
||||
STATIC_INLINE const char *
|
||||
STATIC_INLINE_OPTIONS\
|
||||
(const char *)
|
||||
options_byte_order (int order)
|
||||
{
|
||||
switch (order) {
|
||||
@ -36,7 +37,8 @@ options_byte_order (int order)
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
STATIC_INLINE const char *
|
||||
STATIC_INLINE_OPTIONS\
|
||||
(const char *)
|
||||
options_env (int env)
|
||||
{
|
||||
switch (env) {
|
||||
@ -49,7 +51,8 @@ options_env (int env)
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
STATIC_INLINE const char *
|
||||
STATIC_INLINE_OPTIONS\
|
||||
(const char *)
|
||||
options_align (int align)
|
||||
{
|
||||
switch (align) {
|
||||
@ -61,7 +64,8 @@ options_align (int align)
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
STATIC_INLINE const char *
|
||||
STATIC_INLINE_OPTIONS\
|
||||
(const char *)
|
||||
options_float (int float_type)
|
||||
{
|
||||
switch (float_type) {
|
||||
@ -72,7 +76,8 @@ options_float (int float_type)
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
STATIC_INLINE const char *
|
||||
STATIC_INLINE_OPTIONS\
|
||||
(const char *)
|
||||
options_mon (int mon)
|
||||
{
|
||||
switch (mon) {
|
||||
@ -85,7 +90,26 @@ options_mon (int mon)
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
INLINE_OPTIONS void
|
||||
STATIC_INLINE_OPTIONS\
|
||||
(const char *)
|
||||
options_inline (int in)
|
||||
{
|
||||
switch (in) {
|
||||
case /*0*/ 0: return "0";
|
||||
case /*1*/ REVEAL_MODULE: return "REVEAL_MODULE";
|
||||
case /*2*/ INLINE_MODULE: return "INLINE_MODULE";
|
||||
case /*3*/ REVEAL_MODULE|INLINE_MODULE: return "REVEAL_MODULE|INLINE_MODULE";
|
||||
case /*4*/ INLINE_LOCALS: return "LOCALS_INLINE";
|
||||
case /*5*/ INLINE_LOCALS|REVEAL_MODULE: return "INLINE_LOCALS|REVEAL_MODULE";
|
||||
case /*6*/ INLINE_LOCALS|INLINE_MODULE: return "INLINE_LOCALS|INLINE_MODULE";
|
||||
case /*7*/ ALL_INLINE: return "ALL_INLINE";
|
||||
}
|
||||
return "0";
|
||||
}
|
||||
|
||||
|
||||
INLINE_OPTIONS\
|
||||
(void)
|
||||
print_options (void)
|
||||
{
|
||||
#if defined(_GNUC_) && defined(__VERSION__)
|
||||
@ -110,27 +134,30 @@ print_options (void)
|
||||
printf_filtered ("WITH_TRACE = %d\n", WITH_TRACE);
|
||||
printf_filtered ("WITH_ASSERT = %d\n", WITH_ASSERT);
|
||||
printf_filtered ("WITH_MON = %s\n", options_mon (WITH_MON));
|
||||
printf_filtered ("WITH_FUNCTION_UNIT = %d\n", WITH_FUNCTION_UNIT);
|
||||
printf_filtered ("WITH_DEFAULT_MODEL = %s\n", model_name[WITH_DEFAULT_MODEL]);
|
||||
printf_filtered ("WITH_MODEL = %s\n", model_name[WITH_MODEL]);
|
||||
printf_filtered ("WITH_MODEL_ISSUE = %d\n", WITH_MODEL_ISSUE);
|
||||
printf_filtered ("WITH_RESERVED_BITS = %d\n", WITH_RESERVED_BITS);
|
||||
printf_filtered ("DEFAULT_INLINE = %d\n", DEFAULT_INLINE);
|
||||
printf_filtered ("SIM_ENDIAN_INLINE = %d\n", SIM_ENDIAN_INLINE);
|
||||
printf_filtered ("BITS_INLINE = %d\n", BITS_INLINE);
|
||||
printf_filtered ("CPU_INLINE = %d\n", CPU_INLINE);
|
||||
printf_filtered ("VM_INLINE = %d\n", VM_INLINE);
|
||||
printf_filtered ("CORE_INLINE = %d\n", CORE_INLINE);
|
||||
printf_filtered ("EVENTS_INLINE = %d\n", EVENTS_INLINE);
|
||||
printf_filtered ("MON_INLINE = %d\n", MON_INLINE);
|
||||
printf_filtered ("INTERRUPTS_INLINE = %d\n", INTERRUPTS_INLINE);
|
||||
printf_filtered ("REGISTERS_INLINE = %d\n", REGISTERS_INLINE);
|
||||
printf_filtered ("DEVICE_TREE_INLINE = %d\n", DEVICE_TREE_INLINE);
|
||||
printf_filtered ("DEVICES_INLINE = %d\n", DEVICES_INLINE);
|
||||
printf_filtered ("SPREG_INLINE = %d\n", SPREG_INLINE);
|
||||
printf_filtered ("SEMANTICS_INLINE = %d\n", SEMANTICS_INLINE);
|
||||
printf_filtered ("IDECODE_INLINE = %d\n", IDECODE_INLINE);
|
||||
printf_filtered ("FUNCTION_UNIT_INLINE = %d\n", FUNCTION_UNIT_INLINE);
|
||||
printf_filtered ("OPTIONS_INLINE = %d\n", FUNCTION_UNIT_INLINE);
|
||||
printf_filtered ("WITH_STDIO = %d\n", WITH_STDIO);
|
||||
printf_filtered ("WITH_REGPARM = %d\n", WITH_REGPARM);
|
||||
printf_filtered ("WITH_STDCALL = %d\n", WITH_STDCALL);
|
||||
printf_filtered ("DEFAULT_INLINE = %s\n", options_inline (DEFAULT_INLINE));
|
||||
printf_filtered ("SIM_ENDIAN_INLINE = %s\n", options_inline (SIM_ENDIAN_INLINE));
|
||||
printf_filtered ("BITS_INLINE = %s\n", options_inline (BITS_INLINE));
|
||||
printf_filtered ("CPU_INLINE = %s\n", options_inline (CPU_INLINE));
|
||||
printf_filtered ("VM_INLINE = %s\n", options_inline (VM_INLINE));
|
||||
printf_filtered ("CORE_INLINE = %s\n", options_inline (CORE_INLINE));
|
||||
printf_filtered ("EVENTS_INLINE = %s\n", options_inline (EVENTS_INLINE));
|
||||
printf_filtered ("MON_INLINE = %s\n", options_inline (MON_INLINE));
|
||||
printf_filtered ("INTERRUPTS_INLINE = %s\n", options_inline (INTERRUPTS_INLINE));
|
||||
printf_filtered ("REGISTERS_INLINE = %s\n", options_inline (REGISTERS_INLINE));
|
||||
printf_filtered ("DEVICE_INLINE = %s\n", options_inline (DEVICE_INLINE));
|
||||
printf_filtered ("SPREG_INLINE = %s\n", options_inline (SPREG_INLINE));
|
||||
printf_filtered ("SEMANTICS_INLINE = %s\n", options_inline (SEMANTICS_INLINE));
|
||||
printf_filtered ("IDECODE_INLINE = %s\n", options_inline (IDECODE_INLINE));
|
||||
printf_filtered ("OPTIONS_INLINE = %s\n", options_inline (OPTIONS_INLINE));
|
||||
printf_filtered ("OS_EMUL_INLINE = %s\n", options_inline (OS_EMUL_INLINE));
|
||||
printf_filtered ("SUPPORT_INLINE = %s\n", options_inline (SUPPORT_INLINE));
|
||||
|
||||
#ifdef OPCODE_RULES
|
||||
printf_filtered ("OPCODE rules = %s\n", OPCODE_RULES);
|
||||
|
@ -23,10 +23,10 @@ cache:RA:RA_BITMASK:unsigned32:(1 << RA)
|
||||
cache:RT:RT::
|
||||
cache:RT:rT:signed_word *:(cpu_registers(processor)->gpr + RT)
|
||||
cache:RT:RT_BITMASK:unsigned32:(1 << RT)
|
||||
compute:RS:RS::
|
||||
cache:RS:RS::
|
||||
cache:RS:rS:signed_word *:(cpu_registers(processor)->gpr + RS)
|
||||
cache:RS:RS_BITMASK:unsigned32:(1 << RS)
|
||||
compute:RB:RB::
|
||||
cache:RB:RB::
|
||||
cache:RB:rB:signed_word *:(cpu_registers(processor)->gpr + RB)
|
||||
cache:RB:RB_BITMASK:unsigned32:(1 << RB)
|
||||
compute:FRA:FRA::
|
||||
|
@ -289,13 +289,21 @@ extern int current_model_issue;
|
||||
|
||||
/* Whether or not input/output just uses stdio, or uses printf_filtered for
|
||||
output, and polling input for input. */
|
||||
#define DONT_USE_STDIO 0
|
||||
|
||||
#define DONT_USE_STDIO 2
|
||||
#define DO_USE_STDIO 1
|
||||
|
||||
#ifndef WITH_STDIO
|
||||
#define WITH_STDIO DONT_USE_STDIO
|
||||
#define WITH_STDIO DO_USE_STDIO
|
||||
#endif
|
||||
|
||||
extern int current_stdio;
|
||||
#define CURRENT_STDIO (WITH_STDIO \
|
||||
? WITH_STDIO \
|
||||
: current_stdio)
|
||||
|
||||
|
||||
|
||||
/* INLINE CODE SELECTION:
|
||||
|
||||
GCC -O3 attempts to inline any function or procedure in scope. The
|
||||
@ -454,15 +462,34 @@ extern int current_model_issue;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/* Your compilers pass parameters in registers reserved word */
|
||||
|
||||
#ifndef WITH_REGPARM
|
||||
#define WITH_REGPARM 0
|
||||
#endif
|
||||
|
||||
#ifndef WITH_STDCALL
|
||||
#define WITH_STDCALL 0
|
||||
#endif
|
||||
|
||||
#if !defined REGPARM
|
||||
#if (defined(i386) || defined(i486) || defined(i586) || defined(__i386__) || defined(__i486__) || defined(__i586__)) && WITH_REGPARM
|
||||
#if (defined(i386) || defined(i486) || defined(i586) || defined(__i386__) || defined(__i486__) || defined(__i586__))
|
||||
#if (WITH_REGPARM && WITH_STDCALL)
|
||||
#define REGPARM __attribute__((__regparm__(WITH_REGPARM),__stdcall__))
|
||||
#else
|
||||
#if (WITH_REGPARM && !WITH_STDCALL)
|
||||
#define REGPARM __attribute__((__regparm__(WITH_REGPARM)))
|
||||
#else
|
||||
#if (!WITH_REGPARM && WITH_STDCALL)
|
||||
#define REGPARM __attribute__((__stdcall__))
|
||||
#else
|
||||
#define REGPARM
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@ -572,7 +599,7 @@ extern int current_model_issue;
|
||||
inline all of their called functions */
|
||||
|
||||
#ifndef SEMANTICS_INLINE
|
||||
#define SEMANTICS_INLINE DEFAULT_INLINE
|
||||
#define SEMANTICS_INLINE (DEFAULT_INLINE & ~INLINE_MODULE)
|
||||
#endif
|
||||
|
||||
/* When using the instruction cache, code to decode an instruction and
|
||||
@ -580,7 +607,7 @@ extern int current_model_issue;
|
||||
miss in the instruction cache. */
|
||||
|
||||
#ifndef ICACHE_INLINE
|
||||
#define ICACHE_INLINE DEFAULT_INLINE
|
||||
#define ICACHE_INLINE (DEFAULT_INLINE & ~INLINE_MODULE)
|
||||
#endif
|
||||
|
||||
/* General functions called by semantics functions but part of the
|
||||
|
Loading…
x
Reference in New Issue
Block a user