- add get_erx() method to bx_gen_reg_t which returns the erx field of the
structure (which is has a different name in cpu and cpu64). Providing
an accessor is one strategy for avoiding igly "#ifdef BX_SUPPORT_X86_64"
statements in the rest of the code.
- cpu64/init.cc: the "eflags" before get_flag and set_flag is no longer
correct. removed.
- modified files: load32bitOShack.cc logio.cc cpu/cpu.h cpu64/apic.cc
cpu64/cpu.h cpu64/init.cc cpu64/proc_ctrl.cc debug/dbg_main.cc
This adds a whole new directory cpu64 with the new emulation code.
Very few changes were necessary outside cpu64. To try it, configure
with --enable-x86-64 and make.
- also this adds Peter Tattam's external debugger interface.
- modified files: Makefile.in bochs.h config.h.in configure.in
load32bitOShack.cc logio.cc cpu/Makefile.in cpu/cpu.cc debug/dbg_main.cc
- added files: cpu/extdb.cc cpu/extdb.h and cpu64/*
to get default values, but I didn't initialize bx_options until
bx_init_options(). I still think that removing the initializer
was the right choice, so I made a macro in bochs.h called
DEFAULT_LOG_ACTIONS(level) that supplies the defaults instead.
again. This means that the simulation needs to stop in a consistent state,
including the "reentry check" variables in logfunctions::fatal() and
logfunctions::ask().
- fatal() is supposed to quit the simulation. add a clear panic message if it
doesn't quit, but remove the reentry check. The reentry check was causing
problems when you stop and start the simulation again.
- in ask(), keep the reentry check but set in_ask_already=0 before
calling fatal() so that ask() works if we start the simulation again.
and complain if fatal() fails to die.
to describe the format of the log prefix. This option can be any string
with special tokens being replaced at run time :
# %t : 11 decimal digits timer tick
# %i : 8 hexadecimal digits of cpu0 current eip
# %e : 1 character event type ('i'nfo, 'd'ebug, 'p'anic, 'e'rror)
# %d : 5 characters string of the device, between brackets
the default is "%t%i%d", so the logprefix is the same as before.
New tokens can be easily added or changed if needed.
Modified Files:
.bochsrc bochs.h logio.cc main.cc gui/control.cc
gui/siminterface.h gui/siminterface.cc
patches/patch.logfilefmteip
objects point to the io object, it is not safe to delete the io object
as soon as the first logfunctions object is deleted. This leaves all the
other logfunctions objects with pointers to a dead object.
useful because sometimes useful messages are printed on the screen just
before a panic. It's also potentially dangerous if the vga update function
calls ask() again...so I added a re-entry check.
will dump core, and the core can sometimes be loaded into the debugger
to give some hints as to what is going on. This could be especially
useful when the bochs debugger is off.
- try to do something reasonable when abort() doesn't exist on the system.