Age | Commit message (Collapse) | Author | Files | Lines |
|
The "MACH" and "MODEL" names are a bit generic and collide with symbols
used by other sections of code (like h8300's opcodes). Since these are
sim-specific types, they really should have a "SIM_" prefix.
|
|
These vestiges of the 20 year old emulator are just getting in the way.
Punt all the dead code we either don't compile or don't use.
|
|
This helps us break up tconfig.h more. Any file using this define should
be pulling in sim-main.h already, so things should continue working.
|
|
Only four targets implement this function, and three of them do nothing.
The 4th merely calls abort. Since calls to this function are followed
by calls to sim_hw_abort or sim_io_error, this is largely useless. In
the two places where we don't, replace the call with sim_engine_abort.
We want to kill off the WITH_DEVICES logic in favor of WITH_HW, so this
is a good first step.
|
|
We enable WITH_CALLBACK_MEMORY everywhere and don't provide a way to
turn it off, and no target does so. Make it unconditional for all
to keep things simple.
|
|
Since the core always provides CPU_INDEX, use it. The current code
doesn't actually use it even though it should since it doesn't include
the right headers.
|
|
With the LMA cleanup, we no longer need this define.
|
|
We want to kill off tconfig.h, so move the one define mips still uses
to sim-main.h.
|
|
Most targets already default to loading code via their LMA, but for
a few, this means the default changes from loading VMA to LMA. It's
better to have the different targets be consistent, and allows some
code clean up.
|
|
We've moved custom option install for other targets to sim_open, so update
cris too. It's the last one using MODULE_LIST, so we can drop that from
the common code too.
|
|
This code relies on the old sim-break module, but that was deleted in 2003.
The module only existed for gdb to tell the sim to set breakpoints on its
behalf, but then that logic was abandoned in favor of gdb knowing all about
proper breakpoints (since it does already for non-sim targets). Some dead
code lived on in the older ports though -- clean it up now.
|
|
Register the options in sim_open like other arches to avoid having to hack
up the common modules.
|
|
We build & bundle the watchpoint module everywhere, but we don't make
the command line flags available by default. A few targets opted in,
but most did not. Just enable the flag for everyone. Not all targets
will respect the flags (making them nops), but shouldn't be a big deal.
This is how we handle other common modules already.
|
|
No target has used this, and it's a cheap hack in place in using the
common memory module. We want everyone using that though, so drop
support for flatmem entirely.
|
|
This define isn't used anywhere (doesn't seem to ever have been used by
versions committed), so delete the commented out code as it's dead.
|
|
This was used by the old run interface, but we punted that awhile ago,
so drop this define too.
|
|
Fix occurrences of left-shifting negative constants in C code.
sim/arm/ChangeLog:
* thumbemu.c (handle_T2_insn): Fix left shift of negative value.
* armemu.c (handle_v6_insn): Likewise.
sim/avr/ChangeLog:
* interp.c (sign_ext): Fix left shift of negative value.
sim/mips/ChangeLog:
* micromips.igen (process_isa_mode): Fix left shift of negative
value.
sim/msp430/ChangeLog:
* msp430-sim.c (get_op, put_op): Fix left shift of negative value.
sim/v850/ChangeLog:
* simops.c (v850_bins): Fix left shift of negative value.
|
|
* aarch64/simulator.c (system_get): New function. Provides read
access to the dczid system register.
(do_mrs): New function - implements the MRS instruction.
(dexSystem): Call do_mrs for the MRS instruction. Halt on
unimplemented system instructions.
|
|
* msp430-sim.c (sim_open): Check for needed memory at address
0x500 not 0x200.
(get_op): Add support for F5 hardware multiply addresses.
(put_op): Likewise.
|
|
sim * configure.tgt: Add aarch64 entry.
* configure: Regenerate.
* sim/aarch64/configure.ac: New configure template.
* sim/aarch64/aclocal.m4: Generate.
* sim/aarch64/config.in: Generate.
* sim/aarch64/configure: Generate.
* sim/aarch64/cpustate.c: New file - functions for accessing
AArch64 registers.
* sim/aarch64/cpustate.h: New header.
* sim/aarch64/decode.h: New header.
* sim/aarch64/interp.c: New file - interface between GDB and
simulator.
* sim/aarch64/Makefile.in: New makefile template.
* sim/aarch64/memory.c: New file - functions for simulating
aarch64 memory accesses.
* sim/aarch64/memory.h: New header.
* sim/aarch64/sim-main.h: New header.
* sim/aarch64/simulator.c: New file - aarch64 simulator
functions.
* sim/aarch64/simulator.h: New header.
include/gdb * sim-aarch64.h: New file.
sim/test * configure: Regenerate.
* sim/aarch64: New directory.
|
|
Make sure we pass down the CPP/CXX/LD flags that configure set up for us
like we already do for C flags.
|
|
Make sure we call va_end even in the error case.
|
|
POSIX does not define $< behavior in ordinary rules, so avoid its use
to fix building on non-GNU make setups.
Reported-by: Christopher January <chris.january@allinea.com>
|
|
Keeping track of the right printf formats for the various types can be
a pretty big hassle, especially in common code which has to support a
variety of bitsizes. Take a page from the existing standards and add
a set of PRI macros which hide the details in a common header.
|
|
We don't want global variables in the sim as all state should be in the
sim state or in the cpu state. This pushes down all that logic for avr.
|
|
This is not entirely useful as avr doesn't (yet) store its register
state in the cpu state, but it does allow for switching to the common
code for these functions.
|
|
We can use the sim state everywhere now to get these values on the fly.
|
|
We can use the sim state everywhere now to get these values on the fly.
|
|
It's used in one place and can easily be replaced by using the sim state.
|
|
This was dropped from the sim core in 1997, so no point in having these
sim ports continue to define it.
|
|
Having this be a config option doesn't make sense: the code size is
pretty much the same (as all the logic is still active), and if it's
disabled, the sim throws an error if you try to use it. That means
we can't break sims that weren't using it before by enabling it all
the time.
|
|
Building a gdb that includes the PPC sim in C++ mode fails to link with:
(...)s.o compile-object-load.o compile-object-run.o compile-loc2c.o compile-c-support.o inflow.o init.o \
../sim/ppc/libsim.a ../readline/libreadline.a ../opcodes/libopcodes.a ../bfd/libbfd.a -lz ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -ldl -ldl -lncurses -lm -ldl -lguile-2.0 -lgc -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic -lexpat -llzma -lbabeltrace -lbabeltrace-ctf ../libiberty/libiberty.a build-gnulib/import/libgnu.a
../sim/ppc/libsim.a(sim_calls.o): In function `sim_open':
/home/pedro/gdb/mygit/cxx-convertion/src/sim/ppc/sim_calls.c:73: undefined reference to `printf_filtered'
/home/pedro/gdb/mygit/cxx-convertion/src/sim/ppc/sim_calls.c:73: undefined reference to `printf_filtered'
../sim/ppc/libsim.a(sim_calls.o): In function `sim_close':
/home/pedro/gdb/mygit/cxx-convertion/src/sim/ppc/sim_calls.c:93: undefined reference to `printf_filtered'
/home/pedro/gdb/mygit/cxx-convertion/src/sim/ppc/sim_calls.c:93: undefined reference to `printf_filtered'
../sim/ppc/libsim.a(sim_calls.o): In function `sim_load':
/home/pedro/gdb/mygit/cxx-convertion/src/sim/ppc/sim_calls.c:102: undefined reference to `printf_filtered'
../sim/ppc/libsim.a(sim_calls.o):/home/pedro/gdb/mygit/cxx-convertion/src/sim/ppc/sim_calls.c:102: more undefined references to `printf_filtered' follow
collect2: error: ld returned 1 exit status
The undefined references come from TRACE macro calls, which expand to
calls to printf_filtered.
But note that the sim's 'printf_filtered' is actually a #define to
'sim_io_printf_filtered', in sim_callbacks.h :
#define printf_filtered sim_io_printf_filtered
AFAICS, this is not meant to call gdb's printf_filtered function. The
ChangeLog entry that added the printf_filtered macro reads:
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.
That is, just another incomplete/partial transition. Maybe prior to
1996 this was really meant to call gdb's printf_filtered version.
The reference to printf_filtered appears because sim_calls.c, the
compilation unit that fails to link, has this at the top:
#undef printf_filtered /* blow away the mapping */
presumably so that this further below:
void
sim_io_printf_filtered(const char *fmt,
...)
{
(...)
callbacks->printf_filtered(callbacks, "%s", message);
}
works. So those TRACE macros instances in sim_calls.c just happen to
work because gdb is linked in, which satisfies the 'printf_filtered'
reference, when GDB is built in C mode. When built in C++ mode, the
problem is exposed, as GDB's printf_filtered is mangled.
The fix here is to make the TRACE macro call sim_io_printf_filtered
directly.
(Standalone "run" doesn't fail to link simply because the offending
routines are not part of its link.)
sim/ppc/ChangeLog
2015-11-17 Pedro Alves <palves@redhat.com>
* debug.h (TRACE, ITRACE, DTRACE, DITRACE, PTRACE): Call
sim_io_printf_filtered instead of printf_filtered.
|
|
No point in open coding this logic when we've got nifty helpers to do it.
|
|
Now that all arches (for the most part) have moved over, move sim-stop.o,
sim-reason.o, and sim-reg.o to the common object list and out of all the
arch ports.
|
|
Now that we have access to the sim state in all the right places,
use existing sim helpers in place of cr16_callback directly.
|
|
Now that we have access to the sim state everywhere, we can convert to
the common engine logic for overall processing. This frees us up from
tracking exception state ourselves.
|
|
The cr16 port has a lot of translation/offset logic baked into it, but
it all looks like copy & paste from the d10v port rather than something
the cr16 port wants.
|
|
By itself, this commit doesn't really change anything. It lays the
groundwork for using the cpu state in follow up commits, both for
engine state and for cpu state. Splitting things up this way so it
is easier to see how things have changed.
|
|
These aren't used anywhere and are just leftover from the d10v port.
Delete them so follow up commits are easier to follow.
|
|
This is mostly to get us off the weird cr16 specific memory functions,
but it's also a good clean up to move to the common core.
|
|
With the conversion to the nrun frontend, this call should no longer be
necessary. It also actively crashes when trying to use the sd state.
|
|
Now that we have access to the sim state in all the right places,
use existing sim helpers in place of d10v_callback directly.
|
|
Now that we have access to the sim state everywhere, we can convert to
the common engine logic for overall processing. This frees us up from
tracking exception state ourselves.
|
|
By itself, this commit doesn't really change anything. It lays the
groundwork for using the cpu state in follow up commits, both for
engine state and for cpu state. Splitting things up this way so it
is easier to see how things have changed.
|
|
This ends up being pretty easy as the h8300 port already supports
much of the common engine core.
|
|
This avoids using global variables to hold the cpu state so we can
better integrate with the sim common code.
There's also a minor fix here where we move the pc register back into
the state that is accessible by the asints array. When it was pulled
out previously, the reg store/fetch functions broke, but no one really
noticed as the mcore gdb port was dropped a while back.
|
|
This is not entirely useful as mcore doesn't (yet) store its register
state in the cpu state, but it does allow for switching to the common
code for these functions.
|
|
|
|
Switch over to the common event loop logic so we don't have to maintain
the exception/exit logic ourselves.
|
|
Some of the target makefiles listed objects that were already pulled in
via SIM_NEW_COMMON_OBJS. Clean those up.
|