From 2575604b4183259bec592dbbc7c430bcbaa0c014 Mon Sep 17 00:00:00 2001 From: adrian Date: Fri, 8 Jun 2012 20:09:43 +0000 Subject: [PATCH] Fail* directories reorganized, Code-cleanup (-> coding-style), Typos+comments fixed. git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1321 8c4709b5-6ec9-48aa-a5cd-a96041d1645a --- CMakeLists.txt | 19 +- cmake/compilerconfig.cmake | 6 +- cmake/config_failbochs.sh.in | 2 +- core/CMakeLists.txt | 64 ----- core/SAL/bochs/BochsController.hpp | 197 -------------- core/SAL/bochs/BochsMemory.hpp | 119 --------- core/SAL/bochs/BochsRegister.hpp | 245 ------------------ core/SAL/ovp/OVPController.hpp | 71 ----- core/SAL/ovp/OVPMemory.hpp | 92 ------- core/SAL/ovp/OVPRegister.hpp | 81 ------ core/config/variant_config.hpp.in | 7 - core/controller/CMakeLists.txt | 9 - core/controller/CoroutineManager.hpp | 73 ------ core/controller/ExperimentFlow.hpp | 38 --- core/controller/Minion.hpp | 73 ------ core/experiments/fireinterrupt/experiment.hpp | 13 - core/experiments/hscsimple/experiment.hpp | 14 - core/experiments/weathermonitor/campaign.hpp | 19 -- .../experiments/weathermonitor/experiment.hpp | 14 - core/jobserver/CMakeLists.txt | 8 - core/util/Logger.hpp | 65 ----- core/util/ProtoStream.hpp | 86 ------ core/util/SynchronizedCounter.hpp | 30 --- .../{fireTimer.ah => FireTimer.ah.old} | 0 ...reviousCtx.ah => JumpToPreviousCtx.ah.old} | 0 ...cessBitFlip.ah => MemAccessBitFlip.ah.old} | 0 .../{ => old-utils}/ExperimentDataQueue.cc | 0 .../{ => old-utils}/ExperimentDataQueue.hpp | 0 {bochs => simulators/bochs}/.bochsrc | 0 {bochs => simulators/bochs}/.conf.amigaos | 0 {bochs => simulators/bochs}/.conf.beos | 0 {bochs => simulators/bochs}/.conf.everything | 0 {bochs => simulators/bochs}/.conf.linux | 0 {bochs => simulators/bochs}/.conf.macos | 0 {bochs => simulators/bochs}/.conf.macosx | 0 {bochs => simulators/bochs}/.conf.nothing | 0 {bochs => simulators/bochs}/.conf.sparc | 0 .../bochs}/.conf.win32-cygwin | 0 {bochs => simulators/bochs}/.conf.win32-vcpp | 0 {bochs => simulators/bochs}/CHANGES | 0 {bochs => simulators/bochs}/COPYING | 0 {bochs => simulators/bochs}/Makefile.in | 13 +- {bochs => simulators/bochs}/PARAM_TREE.txt | 0 {bochs => simulators/bochs}/README | 0 {bochs => simulators/bochs}/README-plugins | 0 {bochs => simulators/bochs}/README-wxWindows | 0 {bochs => simulators/bochs}/README.rfb | 0 {bochs => simulators/bochs}/TESTFORM.txt | 0 {bochs => simulators/bochs}/TODO | 0 {bochs => simulators/bochs}/aclocal.m4 | 0 .../bochs}/bios/BIOS-bochs-latest | Bin .../bochs}/bios/BIOS-bochs-legacy | Bin {bochs => simulators/bochs}/bios/Makefile.in | 0 .../bochs}/bios/VGABIOS-elpin-2.40 | Bin .../bochs}/bios/VGABIOS-elpin-LICENSE | 0 .../bochs}/bios/VGABIOS-lgpl-README | 0 .../bochs}/bios/VGABIOS-lgpl-latest | Bin .../bochs}/bios/VGABIOS-lgpl-latest-cirrus | Bin .../bios/VGABIOS-lgpl-latest-cirrus-debug | Bin .../bochs}/bios/VGABIOS-lgpl-latest-debug | Bin .../bochs}/bios/acpi-dsdt.dsl | 0 .../bochs}/bios/acpi-dsdt.hex | 0 {bochs => simulators/bochs}/bios/apmbios.S | 0 {bochs => simulators/bochs}/bios/bios_usage | 0 {bochs => simulators/bochs}/bios/biossums.c | 0 {bochs => simulators/bochs}/bios/makesym.perl | 0 {bochs => simulators/bochs}/bios/notes | 0 {bochs => simulators/bochs}/bios/rombios.c | 0 {bochs => simulators/bochs}/bios/rombios.h | 0 {bochs => simulators/bochs}/bios/rombios32.c | 0 {bochs => simulators/bochs}/bios/rombios32.ld | 0 .../bochs}/bios/rombios32start.S | 0 {bochs => simulators/bochs}/bios/usage.cc | 0 {bochs => simulators/bochs}/bochs.h | 2 +- .../bochs}/bochsrc-multiple-ne2k | 0 .../bochs}/build/batch-build.perl | 0 .../bochs}/build/beos/resource.zip | Bin .../bochs}/build/debian/README.Debian | 0 .../bochs}/build/debian/changelog | 0 .../bochs}/build/debian/conffiles.ex | 0 .../bochs}/build/debian/control | 0 .../bochs}/build/debian/copyright | 0 .../bochs}/build/debian/cron.d.ex | 0 {bochs => simulators/bochs}/build/debian/dirs | 0 {bochs => simulators/bochs}/build/debian/docs | 0 .../bochs}/build/debian/emacsen-install.ex | 0 .../bochs}/build/debian/emacsen-remove.ex | 0 .../bochs}/build/debian/emacsen-startup.ex | 0 .../bochs}/build/debian/ex.doc-base.package | 0 .../bochs}/build/debian/init.d.ex | 0 .../bochs}/build/debian/manpage.1.ex | 0 .../bochs}/build/debian/manpage.sgml.ex | 0 .../bochs}/build/debian/menu.ex | 0 .../bochs}/build/debian/postinst | 0 .../bochs}/build/debian/postinst.ex | 0 .../bochs}/build/debian/postrm.ex | 0 .../bochs}/build/debian/preinst.ex | 0 .../bochs}/build/debian/prerm.ex | 0 .../bochs}/build/debian/rules | 0 .../bochs}/build/debian/watch.ex | 0 .../bochs}/build/linux/README.linux-binary | 0 .../bochs}/build/linux/bochs-dlx.in | 0 .../bochs}/build/macos/CWPro3_project.sit | Bin .../bochs}/build/macos/bochs.rsrc | 0 .../bochs}/build/macos/bochsico.bmp | Bin .../bochs}/build/macos/macos_defines.h | 0 .../bochs}/build/macosx/Info.plist.in | 0 .../bochs}/build/macosx/README.macosx-binary | 0 .../bochs}/build/macosx/bochs-icn.icns | Bin .../bochs}/build/macosx/bochs.applescript | 0 .../bochs}/build/macosx/bochs.r | 0 .../bochs}/build/macosx/diskimage.pl | 0 .../bochs}/build/macosx/make-dmg.sh | 0 .../bochs}/build/macosx/pbdevelopment.plist | 0 .../bochs}/build/macosx/script.data | Bin .../bochs}/build/macosx/script.r | 0 {bochs => simulators/bochs}/build/makeall.sh | 0 .../bochs}/build/redhat/NOTES | 0 .../build/redhat/bochs.rpmspec.template | 0 .../bochs}/build/redhat/make-rpm | 0 .../bochs}/build/win32/README.win32-binary | 0 .../bochs}/build/win32/bochs.win32.manifest | 0 .../bochs}/build/win32/bochs.win64.manifest | 0 .../bochs}/build/win32/cc2cpp | 0 .../bochs}/build/win32/cpp2cc | 0 .../bochs}/build/win32/diffcc2cpp | 0 .../bochs}/build/win32/nsis/Makefile.in | 0 .../bochs}/build/win32/nsis/bochs.ico | Bin .../bochs}/build/win32/nsis/bochs.nsi.in | 0 .../bochs}/build/win32/nsis/lgban.ico | Bin .../bochs}/build/win32/nsis/logo.ico | Bin .../bochs}/build/win32/nsis/penguin.ico | Bin .../bochs}/build/win32/nsis/unbochs.ico | Bin .../bochs}/build/win32/vs2008ex-workspace.zip | Bin .../bochs}/bx_debug/Makefile.in | 0 .../bochs}/bx_debug/dbg_main.cc | 0 {bochs => simulators/bochs}/bx_debug/debug.h | 0 {bochs => simulators/bochs}/bx_debug/lexer.c | 0 {bochs => simulators/bochs}/bx_debug/lexer.l | 0 {bochs => simulators/bochs}/bx_debug/linux.cc | 0 .../bochs}/bx_debug/make-syscalls-linux.pl | 0 {bochs => simulators/bochs}/bx_debug/parser.c | 0 {bochs => simulators/bochs}/bx_debug/parser.h | 0 {bochs => simulators/bochs}/bx_debug/parser.y | 0 .../bochs}/bx_debug/symbols.cc | 0 .../bochs}/bx_debug/syscalls-linux.h | 0 {bochs => simulators/bochs}/bxversion.h.in | 0 {bochs => simulators/bochs}/bxversion.rc.in | 0 {bochs => simulators/bochs}/config.cc | 0 {bochs => simulators/bochs}/config.guess | 0 {bochs => simulators/bochs}/config.h.in | 0 {bochs => simulators/bochs}/config.sub | 0 {bochs => simulators/bochs}/configure | 0 {bochs => simulators/bochs}/configure.in | 0 {bochs => simulators/bochs}/cpu/3dnow.cc | 0 {bochs => simulators/bochs}/cpu/Makefile.in | 0 {bochs => simulators/bochs}/cpu/access.cc | 0 {bochs => simulators/bochs}/cpu/access32.cc | 0 {bochs => simulators/bochs}/cpu/access64.cc | 0 {bochs => simulators/bochs}/cpu/aes.cc | 0 {bochs => simulators/bochs}/cpu/apic.cc | 0 {bochs => simulators/bochs}/cpu/apic.h | 0 {bochs => simulators/bochs}/cpu/arith16.cc | 0 {bochs => simulators/bochs}/cpu/arith32.cc | 0 {bochs => simulators/bochs}/cpu/arith64.cc | 0 {bochs => simulators/bochs}/cpu/arith8.cc | 0 {bochs => simulators/bochs}/cpu/bcd.cc | 0 {bochs => simulators/bochs}/cpu/bit.cc | 0 {bochs => simulators/bochs}/cpu/bit16.cc | 0 {bochs => simulators/bochs}/cpu/bit32.cc | 0 {bochs => simulators/bochs}/cpu/bit64.cc | 0 {bochs => simulators/bochs}/cpu/call_far.cc | 0 {bochs => simulators/bochs}/cpu/cpu.cc | 0 {bochs => simulators/bochs}/cpu/cpu.h | 0 {bochs => simulators/bochs}/cpu/cpuid.cc | 0 {bochs => simulators/bochs}/cpu/crc32.cc | 0 {bochs => simulators/bochs}/cpu/crregs.cc | 0 {bochs => simulators/bochs}/cpu/crregs.h | 0 .../bochs}/cpu/ctrl_xfer16.cc | 0 .../bochs}/cpu/ctrl_xfer32.cc | 0 .../bochs}/cpu/ctrl_xfer64.cc | 0 .../bochs}/cpu/ctrl_xfer_pro.cc | 0 .../bochs}/cpu/data_xfer16.cc | 0 .../bochs}/cpu/data_xfer32.cc | 0 .../bochs}/cpu/data_xfer64.cc | 0 {bochs => simulators/bochs}/cpu/data_xfer8.cc | 0 {bochs => simulators/bochs}/cpu/debugstuff.cc | 0 {bochs => simulators/bochs}/cpu/descriptor.h | 0 {bochs => simulators/bochs}/cpu/exception.cc | 0 .../bochs}/cpu/fetchdecode.cc | 0 {bochs => simulators/bochs}/cpu/fetchdecode.h | 0 .../bochs}/cpu/fetchdecode64.cc | 0 .../bochs}/cpu/fetchdecode_sse.h | 0 .../bochs}/cpu/fetchdecode_x87.h | 0 {bochs => simulators/bochs}/cpu/flag_ctrl.cc | 0 .../bochs}/cpu/flag_ctrl_pro.cc | 0 {bochs => simulators/bochs}/cpu/fpu_emu.cc | 0 {bochs => simulators/bochs}/cpu/i387.h | 0 {bochs => simulators/bochs}/cpu/ia_opcodes.h | 0 {bochs => simulators/bochs}/cpu/icache.cc | 0 {bochs => simulators/bochs}/cpu/icache.h | 0 {bochs => simulators/bochs}/cpu/init.cc | 0 {bochs => simulators/bochs}/cpu/instr.h | 0 {bochs => simulators/bochs}/cpu/io.cc | 0 {bochs => simulators/bochs}/cpu/iret.cc | 0 {bochs => simulators/bochs}/cpu/jmp_far.cc | 0 {bochs => simulators/bochs}/cpu/lazy_flags.cc | 0 {bochs => simulators/bochs}/cpu/lazy_flags.h | 0 {bochs => simulators/bochs}/cpu/load.cc | 0 {bochs => simulators/bochs}/cpu/logical16.cc | 0 {bochs => simulators/bochs}/cpu/logical32.cc | 0 {bochs => simulators/bochs}/cpu/logical64.cc | 0 {bochs => simulators/bochs}/cpu/logical8.cc | 0 {bochs => simulators/bochs}/cpu/mmx.cc | 0 .../bochs}/cpu/model_specific.h | 0 {bochs => simulators/bochs}/cpu/msr.cc | 0 {bochs => simulators/bochs}/cpu/mult16.cc | 0 {bochs => simulators/bochs}/cpu/mult32.cc | 0 {bochs => simulators/bochs}/cpu/mult64.cc | 0 {bochs => simulators/bochs}/cpu/mult8.cc | 0 {bochs => simulators/bochs}/cpu/paging.cc | 0 {bochs => simulators/bochs}/cpu/proc_ctrl.cc | 0 .../bochs}/cpu/protect_ctrl.cc | 0 {bochs => simulators/bochs}/cpu/resolver.cc | 0 {bochs => simulators/bochs}/cpu/ret_far.cc | 0 .../bochs}/cpu/segment_ctrl.cc | 0 .../bochs}/cpu/segment_ctrl_pro.cc | 0 {bochs => simulators/bochs}/cpu/shift16.cc | 0 {bochs => simulators/bochs}/cpu/shift32.cc | 0 {bochs => simulators/bochs}/cpu/shift64.cc | 0 {bochs => simulators/bochs}/cpu/shift8.cc | 0 {bochs => simulators/bochs}/cpu/smm.cc | 0 {bochs => simulators/bochs}/cpu/smm.h | 0 {bochs => simulators/bochs}/cpu/soft_int.cc | 0 {bochs => simulators/bochs}/cpu/sse.cc | 0 {bochs => simulators/bochs}/cpu/sse_move.cc | 0 {bochs => simulators/bochs}/cpu/sse_pfp.cc | 0 {bochs => simulators/bochs}/cpu/sse_rcp.cc | 0 {bochs => simulators/bochs}/cpu/sse_string.cc | 0 {bochs => simulators/bochs}/cpu/stack.h | 0 {bochs => simulators/bochs}/cpu/stack16.cc | 0 {bochs => simulators/bochs}/cpu/stack32.cc | 0 {bochs => simulators/bochs}/cpu/stack64.cc | 0 {bochs => simulators/bochs}/cpu/string.cc | 0 {bochs => simulators/bochs}/cpu/tasking.cc | 0 {bochs => simulators/bochs}/cpu/todo | 0 {bochs => simulators/bochs}/cpu/vm8086.cc | 0 {bochs => simulators/bochs}/cpu/vmcs.cc | 0 {bochs => simulators/bochs}/cpu/vmexit.cc | 0 {bochs => simulators/bochs}/cpu/vmx.cc | 0 {bochs => simulators/bochs}/cpu/vmx.h | 0 {bochs => simulators/bochs}/cpu/xmm.h | 0 {bochs => simulators/bochs}/cpu/xsave.cc | 0 {bochs => simulators/bochs}/crc.cc | 0 .../bochs}/disasm/Makefile.in | 0 .../bochs}/disasm/dis_decode.cc | 0 .../bochs}/disasm/dis_groups.cc | 0 .../bochs}/disasm/dis_tables.h | 0 .../bochs}/disasm/dis_tables.inc | 0 .../bochs}/disasm/dis_tables_sse.inc | 0 .../bochs}/disasm/dis_tables_x87.inc | 0 {bochs => simulators/bochs}/disasm/disasm.h | 0 .../bochs}/disasm/opcodes.inc | 0 {bochs => simulators/bochs}/disasm/resolve.cc | 0 {bochs => simulators/bochs}/disasm/syntax.cc | 0 .../bochs}/doc/docbook/Makefile.in | 0 .../bochs}/doc/docbook/Makefile.jade | 0 .../bochs}/doc/docbook/README | 0 .../doc/docbook/development/development.dbk | 0 .../docbook/documentation/documentation.dbk | 0 .../bochs}/doc/docbook/fixtitles.pl | 0 .../doc/docbook/images/dlxlinux-in-linux.png | Bin .../bochs}/doc/docbook/images/headerbar.png | Bin .../bochs}/doc/docbook/images/undercon.png | Bin .../bochs}/doc/docbook/include/defs.sgm | 0 .../bochs}/doc/docbook/index.html | 0 .../bochs}/doc/docbook/misc.txt | 0 .../bochs}/doc/docbook/outline.txt | 0 .../bochs}/doc/docbook/user/user.dbk | 0 .../bochs}/doc/man/bochs-dlx.1 | 0 {bochs => simulators/bochs}/doc/man/bochs.1 | 0 {bochs => simulators/bochs}/doc/man/bochsrc.5 | 0 .../bochs}/doc/man/bxcommit.1 | 0 {bochs => simulators/bochs}/doc/man/bximage.1 | 0 .../bochs}/docs-html/00README | 0 .../bochs}/docs-html/biossums.txt | 0 .../bochs}/docs-html/cosimulation.html | 0 .../bochs}/docs-html/enh_dbg_user_man.txt | 0 .../bochs}/docs-html/memory.txt | 0 .../bochs}/docs-html/random.txt | 0 {bochs => simulators/bochs}/dynamic/README | 0 {bochs => simulators/bochs}/extplugin.h | 0 {bochs => simulators/bochs}/font/vga.bitmap.h | 0 {bochs => simulators/bochs}/fpu/Makefile.in | 0 {bochs => simulators/bochs}/fpu/control_w.h | 0 {bochs => simulators/bochs}/fpu/f2xm1.cc | 0 {bochs => simulators/bochs}/fpu/ferr.cc | 0 {bochs => simulators/bochs}/fpu/fpatan.cc | 0 {bochs => simulators/bochs}/fpu/fprem.cc | 0 {bochs => simulators/bochs}/fpu/fpu.cc | 0 {bochs => simulators/bochs}/fpu/fpu_arith.cc | 0 .../bochs}/fpu/fpu_compare.cc | 0 {bochs => simulators/bochs}/fpu/fpu_const.cc | 0 .../bochs}/fpu/fpu_constant.h | 0 .../bochs}/fpu/fpu_load_store.cc | 0 {bochs => simulators/bochs}/fpu/fpu_misc.cc | 0 {bochs => simulators/bochs}/fpu/fpu_tags.cc | 0 {bochs => simulators/bochs}/fpu/fpu_trans.cc | 0 {bochs => simulators/bochs}/fpu/fsincos.cc | 0 {bochs => simulators/bochs}/fpu/fyl2x.cc | 0 {bochs => simulators/bochs}/fpu/poly.cc | 0 .../bochs}/fpu/softfloat-compare.h | 0 .../bochs}/fpu/softfloat-macros.h | 0 .../bochs}/fpu/softfloat-round-pack.cc | 0 .../bochs}/fpu/softfloat-round-pack.h | 0 .../bochs}/fpu/softfloat-specialize.cc | 0 .../bochs}/fpu/softfloat-specialize.h | 0 {bochs => simulators/bochs}/fpu/softfloat.cc | 0 {bochs => simulators/bochs}/fpu/softfloat.h | 0 .../bochs}/fpu/softfloatx80.cc | 0 .../bochs}/fpu/softfloatx80.h | 0 {bochs => simulators/bochs}/fpu/status_w.h | 0 {bochs => simulators/bochs}/fpu/tag_w.h | 0 {bochs => simulators/bochs}/fpu/todo | 0 {bochs => simulators/bochs}/gdbstub.cc | 0 {bochs => simulators/bochs}/gui/Makefile.in | 0 {bochs => simulators/bochs}/gui/amigagui.h | 0 {bochs => simulators/bochs}/gui/amigaos.cc | 0 {bochs => simulators/bochs}/gui/beos.cc | 0 .../bochs}/gui/bitmaps/cdromd.h | 0 .../bochs}/gui/bitmaps/cdromd.xpm | 0 .../bochs}/gui/bitmaps/configbutton.h | 0 .../bochs}/gui/bitmaps/configbutton.xpm | 0 .../bochs}/gui/bitmaps/copy.h | 0 .../bochs}/gui/bitmaps/copy.xpm | 0 .../bochs}/gui/bitmaps/floppya.h | 0 .../bochs}/gui/bitmaps/floppya.xpm | 0 .../bochs}/gui/bitmaps/floppyb.h | 0 .../bochs}/gui/bitmaps/floppyb.xpm | 0 .../bochs}/gui/bitmaps/mouse.h | 0 .../bochs}/gui/bitmaps/mouse.xpm | 0 .../bochs}/gui/bitmaps/paste.h | 0 .../bochs}/gui/bitmaps/paste.xpm | 0 .../bochs}/gui/bitmaps/power.h | 0 .../bochs}/gui/bitmaps/power.xpm | 0 .../bochs}/gui/bitmaps/reset.h | 0 .../bochs}/gui/bitmaps/reset.xpm | 0 .../bochs}/gui/bitmaps/saverestore.h | 0 .../bochs}/gui/bitmaps/saverestore.xpm | 0 .../bochs}/gui/bitmaps/snapshot.h | 0 .../bochs}/gui/bitmaps/snapshot.xpm | 0 .../bochs}/gui/bitmaps/userbutton.h | 0 .../bochs}/gui/bitmaps/userbutton.xpm | 0 {bochs => simulators/bochs}/gui/carbon.cc | 0 {bochs => simulators/bochs}/gui/enh_dbg.cc | 0 {bochs => simulators/bochs}/gui/enh_dbg.h | 0 .../bochs}/gui/gtk_enh_dbg_osdep.cc | 0 {bochs => simulators/bochs}/gui/gui.cc | 0 {bochs => simulators/bochs}/gui/gui.h | 0 {bochs => simulators/bochs}/gui/icon_bochs.h | 0 .../bochs}/gui/icon_bochs.xpm | 0 {bochs => simulators/bochs}/gui/keymap.cc | 0 {bochs => simulators/bochs}/gui/keymap.h | 0 .../bochs}/gui/keymaps/convertmap.pl | 0 .../bochs}/gui/keymaps/sdl-pc-de.map | 0 .../bochs}/gui/keymaps/sdl-pc-us.map | 0 .../bochs}/gui/keymaps/x11-pc-be.map | 0 .../bochs}/gui/keymaps/x11-pc-da.map | 0 .../bochs}/gui/keymaps/x11-pc-de.map | 0 .../bochs}/gui/keymaps/x11-pc-es.map | 0 .../bochs}/gui/keymaps/x11-pc-fr.map | 0 .../bochs}/gui/keymaps/x11-pc-it.map | 0 .../bochs}/gui/keymaps/x11-pc-ru.map | 0 .../bochs}/gui/keymaps/x11-pc-se.map | 0 .../bochs}/gui/keymaps/x11-pc-si.map | 0 .../bochs}/gui/keymaps/x11-pc-uk.map | 0 .../bochs}/gui/keymaps/x11-pc-us.map | 0 {bochs => simulators/bochs}/gui/macintosh.cc | 0 {bochs => simulators/bochs}/gui/nogui.cc | 0 {bochs => simulators/bochs}/gui/paramtree.cc | 0 {bochs => simulators/bochs}/gui/paramtree.h | 0 {bochs => simulators/bochs}/gui/rfb.cc | 0 {bochs => simulators/bochs}/gui/rfb.h | 0 {bochs => simulators/bochs}/gui/rfbkeys.h | 0 {bochs => simulators/bochs}/gui/sdl.cc | 0 {bochs => simulators/bochs}/gui/sdl.h | 0 {bochs => simulators/bochs}/gui/sdlkeys.h | 0 .../bochs}/gui/siminterface.cc | 0 .../bochs}/gui/siminterface.h | 0 {bochs => simulators/bochs}/gui/svga.cc | 0 {bochs => simulators/bochs}/gui/term.cc | 0 {bochs => simulators/bochs}/gui/textconfig.cc | 0 {bochs => simulators/bochs}/gui/textconfig.h | 0 {bochs => simulators/bochs}/gui/wenhdbg_res.h | 0 {bochs => simulators/bochs}/gui/win32.cc | 0 .../bochs}/gui/win32_enh_dbg_osdep.cc | 0 .../bochs}/gui/win32dialog.cc | 0 {bochs => simulators/bochs}/gui/win32dialog.h | 0 .../bochs}/gui/win32paramdlg.cc | 0 .../bochs}/gui/win32paramdlg.h | 0 {bochs => simulators/bochs}/gui/win32res.h | 0 {bochs => simulators/bochs}/gui/wx.cc | 0 {bochs => simulators/bochs}/gui/wxdialog.cc | 0 {bochs => simulators/bochs}/gui/wxdialog.h | 0 {bochs => simulators/bochs}/gui/wxmain.cc | 0 {bochs => simulators/bochs}/gui/wxmain.h | 0 {bochs => simulators/bochs}/gui/x.cc | 0 .../bochs}/host/linux/pcidev/Make.kbuild | 0 .../bochs}/host/linux/pcidev/Makefile.in | 0 .../bochs}/host/linux/pcidev/kernel_pcidev.h | 0 .../bochs}/host/linux/pcidev/pcidev.c | 0 {bochs => simulators/bochs}/install-sh | 0 .../bochs}/instrument/example0/Makefile.in | 0 .../bochs}/instrument/example0/instrument.cc | 0 .../bochs}/instrument/example0/instrument.h | 0 .../bochs}/instrument/example1/Makefile.in | 0 .../bochs}/instrument/example1/instrument.cc | 0 .../bochs}/instrument/example1/instrument.h | 0 .../bochs}/instrument/example2/Makefile.in | 0 .../bochs}/instrument/example2/instrument.cc | 0 .../bochs}/instrument/example2/instrument.h | 0 .../bochs}/instrument/instrumentation.txt | 0 .../bochs}/instrument/stubs/Makefile.in | 0 .../bochs}/instrument/stubs/instrument.cc | 0 .../bochs}/instrument/stubs/instrument.h | 0 {bochs => simulators/bochs}/iodev/Makefile.in | 0 {bochs => simulators/bochs}/iodev/acpi.cc | 0 {bochs => simulators/bochs}/iodev/acpi.h | 0 .../bochs}/iodev/aspi-win32.h | 0 {bochs => simulators/bochs}/iodev/biosdev.cc | 0 {bochs => simulators/bochs}/iodev/biosdev.h | 0 {bochs => simulators/bochs}/iodev/busmouse.cc | 0 {bochs => simulators/bochs}/iodev/busmouse.h | 0 {bochs => simulators/bochs}/iodev/cdrom.cc | 0 {bochs => simulators/bochs}/iodev/cdrom.h | 0 .../bochs}/iodev/cdrom_amigaos.cc | 0 .../bochs}/iodev/cdrom_beos.cc | 0 .../bochs}/iodev/cdrom_beos.h | 0 {bochs => simulators/bochs}/iodev/cmos.cc | 0 {bochs => simulators/bochs}/iodev/cmos.h | 0 {bochs => simulators/bochs}/iodev/crc32.cc | 0 {bochs => simulators/bochs}/iodev/crc32.h | 0 {bochs => simulators/bochs}/iodev/devices.cc | 0 {bochs => simulators/bochs}/iodev/devices.txt | 0 {bochs => simulators/bochs}/iodev/dma.cc | 0 {bochs => simulators/bochs}/iodev/dma.h | 0 {bochs => simulators/bochs}/iodev/eth.cc | 0 {bochs => simulators/bochs}/iodev/eth.h | 0 .../bochs}/iodev/eth_arpback.cc | 0 {bochs => simulators/bochs}/iodev/eth_fbsd.cc | 0 .../bochs}/iodev/eth_linux.cc | 0 {bochs => simulators/bochs}/iodev/eth_null.cc | 0 .../bochs}/iodev/eth_packetmaker.cc | 0 .../bochs}/iodev/eth_packetmaker.h | 0 {bochs => simulators/bochs}/iodev/eth_tap.cc | 0 .../bochs}/iodev/eth_tuntap.cc | 0 {bochs => simulators/bochs}/iodev/eth_vde.cc | 0 {bochs => simulators/bochs}/iodev/eth_vnet.cc | 0 .../bochs}/iodev/eth_win32.cc | 0 .../bochs}/iodev/extfpuirq.cc | 0 {bochs => simulators/bochs}/iodev/extfpuirq.h | 0 {bochs => simulators/bochs}/iodev/floppy.cc | 0 {bochs => simulators/bochs}/iodev/floppy.h | 0 {bochs => simulators/bochs}/iodev/gameport.cc | 0 {bochs => simulators/bochs}/iodev/gameport.h | 0 .../bochs}/iodev/guest2host.cc | 0 .../bochs}/iodev/guest2host.h | 0 {bochs => simulators/bochs}/iodev/harddrv.cc | 0 {bochs => simulators/bochs}/iodev/harddrv.h | 0 {bochs => simulators/bochs}/iodev/hdimage.cc | 0 {bochs => simulators/bochs}/iodev/hdimage.h | 0 {bochs => simulators/bochs}/iodev/ioapic.cc | 0 {bochs => simulators/bochs}/iodev/ioapic.h | 0 {bochs => simulators/bochs}/iodev/iodebug.cc | 0 {bochs => simulators/bochs}/iodev/iodebug.h | 0 {bochs => simulators/bochs}/iodev/iodev.h | 0 {bochs => simulators/bochs}/iodev/keyboard.cc | 0 {bochs => simulators/bochs}/iodev/keyboard.h | 0 {bochs => simulators/bochs}/iodev/ne2k.cc | 0 {bochs => simulators/bochs}/iodev/ne2k.h | 0 {bochs => simulators/bochs}/iodev/parallel.cc | 0 {bochs => simulators/bochs}/iodev/parallel.h | 0 {bochs => simulators/bochs}/iodev/pci.cc | 0 {bochs => simulators/bochs}/iodev/pci.h | 0 {bochs => simulators/bochs}/iodev/pci2isa.cc | 0 {bochs => simulators/bochs}/iodev/pci2isa.h | 0 {bochs => simulators/bochs}/iodev/pci_ide.cc | 0 {bochs => simulators/bochs}/iodev/pci_ide.h | 0 {bochs => simulators/bochs}/iodev/pcidev.cc | 0 {bochs => simulators/bochs}/iodev/pcidev.h | 0 {bochs => simulators/bochs}/iodev/pcipnic.cc | 0 {bochs => simulators/bochs}/iodev/pcipnic.h | 0 {bochs => simulators/bochs}/iodev/pcivga.cc | 0 {bochs => simulators/bochs}/iodev/pcivga.h | 0 {bochs => simulators/bochs}/iodev/pic.cc | 0 {bochs => simulators/bochs}/iodev/pic.h | 0 {bochs => simulators/bochs}/iodev/pit82c54.cc | 0 {bochs => simulators/bochs}/iodev/pit82c54.h | 0 {bochs => simulators/bochs}/iodev/pit_wrap.cc | 0 {bochs => simulators/bochs}/iodev/pit_wrap.h | 0 {bochs => simulators/bochs}/iodev/pnic_api.h | 0 {bochs => simulators/bochs}/iodev/sb16.cc | 0 {bochs => simulators/bochs}/iodev/sb16.h | 0 .../bochs}/iodev/scancodes.cc | 0 {bochs => simulators/bochs}/iodev/scancodes.h | 0 .../bochs}/iodev/scsi_commands.h | 0 .../bochs}/iodev/scsi_device.cc | 0 .../bochs}/iodev/scsi_device.h | 0 {bochs => simulators/bochs}/iodev/scsidefs.h | 0 {bochs => simulators/bochs}/iodev/scsipt.h | 0 {bochs => simulators/bochs}/iodev/serial.cc | 0 {bochs => simulators/bochs}/iodev/serial.h | 0 .../bochs}/iodev/serial_raw.cc | 0 .../bochs}/iodev/serial_raw.h | 0 .../bochs}/iodev/slowdown_timer.cc | 0 .../bochs}/iodev/slowdown_timer.h | 0 {bochs => simulators/bochs}/iodev/soundlnx.cc | 0 {bochs => simulators/bochs}/iodev/soundlnx.h | 0 {bochs => simulators/bochs}/iodev/soundmod.cc | 0 {bochs => simulators/bochs}/iodev/soundmod.h | 0 {bochs => simulators/bochs}/iodev/soundosx.cc | 0 {bochs => simulators/bochs}/iodev/soundosx.h | 0 {bochs => simulators/bochs}/iodev/soundwin.cc | 0 {bochs => simulators/bochs}/iodev/soundwin.h | 0 {bochs => simulators/bochs}/iodev/speaker.cc | 0 {bochs => simulators/bochs}/iodev/speaker.h | 0 .../bochs}/iodev/svga_cirrus.cc | 0 .../bochs}/iodev/svga_cirrus.h | 0 {bochs => simulators/bochs}/iodev/unmapped.cc | 0 {bochs => simulators/bochs}/iodev/unmapped.h | 0 .../bochs}/iodev/usb_common.cc | 0 .../bochs}/iodev/usb_common.h | 0 {bochs => simulators/bochs}/iodev/usb_hid.cc | 0 {bochs => simulators/bochs}/iodev/usb_hid.h | 0 {bochs => simulators/bochs}/iodev/usb_hub.cc | 0 {bochs => simulators/bochs}/iodev/usb_hub.h | 0 {bochs => simulators/bochs}/iodev/usb_msd.cc | 0 {bochs => simulators/bochs}/iodev/usb_msd.h | 0 {bochs => simulators/bochs}/iodev/usb_ohci.cc | 0 {bochs => simulators/bochs}/iodev/usb_ohci.h | 0 .../bochs}/iodev/usb_printer.cc | 0 .../bochs}/iodev/usb_printer.h | 0 {bochs => simulators/bochs}/iodev/usb_uhci.cc | 0 {bochs => simulators/bochs}/iodev/usb_uhci.h | 0 {bochs => simulators/bochs}/iodev/vga.cc | 0 {bochs => simulators/bochs}/iodev/vga.h | 0 .../bochs}/iodev/virt_timer.cc | 0 .../bochs}/iodev/virt_timer.h | 0 {bochs => simulators/bochs}/iodev/vmware3.cc | 0 {bochs => simulators/bochs}/iodev/vmware3.h | 0 {bochs => simulators/bochs}/iodev/vmware4.cc | 0 {bochs => simulators/bochs}/iodev/vmware4.h | 0 {bochs => simulators/bochs}/iodev/vvfat.cc | 0 {bochs => simulators/bochs}/iodev/vvfat.h | 0 .../bochs}/load32bitOShack.cc | 0 {bochs => simulators/bochs}/logio.cc | 0 {bochs => simulators/bochs}/ltdl.c | 0 {bochs => simulators/bochs}/ltdl.h | 0 {bochs => simulators/bochs}/ltdlconf.h.in | 0 {bochs => simulators/bochs}/ltmain.sh | 0 {bochs => simulators/bochs}/main.cc | 0 {bochs => simulators/bochs}/make-ag++.sh | 0 .../bochs}/memory/Makefile.in | 0 {bochs => simulators/bochs}/memory/memory.cc | 0 {bochs => simulators/bochs}/memory/memory.h | 0 .../bochs}/memory/misc_mem.cc | 0 {bochs => simulators/bochs}/misc/Makefile.in | 0 {bochs => simulators/bochs}/misc/bxcommit.c | 0 {bochs => simulators/bochs}/misc/bximage.c | 0 .../bochs}/misc/make_cmos_image.cc | 0 {bochs => simulators/bochs}/misc/niclist.c | 0 .../bochs}/misc/sb16/sb16ctrl.c | 0 .../bochs}/misc/sb16/sb16ctrl.example | 0 .../bochs}/misc/sb16/sb16ctrl.exe | Bin {bochs => simulators/bochs}/misc/spoolpipe.c | 0 .../bochs}/misc/test-access-check.cc | 0 {bochs => simulators/bochs}/msrs.def | 0 {bochs => simulators/bochs}/osdep.cc | 0 {bochs => simulators/bochs}/osdep.h | 0 {bochs => simulators/bochs}/param_names.h | 0 {bochs => simulators/bochs}/patches/HEADER | 0 {bochs => simulators/bochs}/patches/NOTES | 0 .../patches/beos-gui-fabo.capture-filter | Bin .../beos-gui-fabo.capture-filter.README | 0 .../bochs}/patches/bochs-bios-win32.diff | 0 .../bochs}/patches/patch.beos-gui-fabo | 0 .../patches/patch.beos-gui-fabo-template | 0 .../bochs}/patches/patch.cosimulation | 0 .../bochs}/patches/patch.decode-interrupts.gz | Bin .../bochs}/patches/patch.example-override-ask | 0 .../bochs}/patches/patch.example-user-plugin | 0 .../bochs}/patches/patch.fast-dma-cbothamy | 0 .../bochs}/patches/patch.floppy-athiel | 0 .../bochs}/patches/patch.hosttime-port | 0 .../bochs}/patches/patch.marklog | 0 .../bochs}/patches/patch.mingw-resources | 0 {bochs => simulators/bochs}/pc_system.cc | 0 {bochs => simulators/bochs}/pc_system.h | 0 .../bochs}/plex86-interface.cc | 0 .../bochs}/plex86-interface.h | 0 {bochs => simulators/bochs}/plex86/COPYING | 0 .../bochs}/plex86/Makefile.in | 0 .../bochs}/plex86/PERFORMANCE | 0 {bochs => simulators/bochs}/plex86/TODO | 0 .../bochs}/plex86/config.h.in | 0 {bochs => simulators/bochs}/plex86/configure | 0 .../bochs}/plex86/configure.in | 0 .../bochs}/plex86/descriptor.h | 0 .../bochs}/plex86/kernel/Makefile.in | 0 .../bochs}/plex86/kernel/fault-mon.c | 0 .../bochs}/plex86/kernel/freebsd/Makefile | 0 .../bochs}/plex86/kernel/host-beos.c | 0 .../bochs}/plex86/kernel/host-freebsd.c | 0 .../bochs}/plex86/kernel/host-linux.c | 0 .../bochs}/plex86/kernel/host-netbsd.c | 0 .../bochs}/plex86/kernel/host-null.c | 0 .../plex86/kernel/include/descriptor2.h | 0 .../bochs}/plex86/kernel/include/eflags.h | 0 .../plex86/kernel/include/guest_context.h | 0 .../bochs}/plex86/kernel/include/monitor.h | 0 .../bochs}/plex86/kernel/include/paging.h | 0 .../bochs}/plex86/kernel/include/tss.h | 0 .../bochs}/plex86/kernel/monitor-host.c | 0 .../bochs}/plex86/kernel/monitor-mon.c | 0 .../bochs}/plex86/kernel/nexus.S | 0 .../bochs}/plex86/kernel/paging-mon.c | 0 .../bochs}/plex86/kernel/panic-mon.c | 0 .../bochs}/plex86/kernel/print-mon.c | 0 .../bochs}/plex86/kernel/util-nexus.c | 0 .../bochs}/plex86/misc/load_module.sh | 0 .../bochs}/plex86/misc/netbsd_post.sh | 0 .../bochs}/plex86/misc/unload_module.sh | 0 {bochs => simulators/bochs}/plex86/plex86.h | 0 {bochs => simulators/bochs}/plugin.cc | 0 {bochs => simulators/bochs}/plugin.h | 0 {bochs => simulators/bochs}/win32_enh_dbg.rc | 0 {bochs => simulators/bochs}/win32res.rc | 0 {bochs => simulators/bochs}/wxbochs.rc | 0 {ovp => simulators/ovp}/CMakeLists.txt | 4 +- {ovp => simulators/ovp}/OVPCpu.hpp | 2 +- {ovp => simulators/ovp}/OVPPlatform.cc | 4 +- {ovp => simulators/ovp}/OVPPlatform.hpp | 0 {ovp => simulators/ovp}/OVPStatusRegister.hpp | 3 +- {ovp => simulators/ovp}/README | 0 .../ovp}/armmModel/CMakeLists.txt | 0 {ovp => simulators/ovp}/armmModel/Makefile | 0 .../armmModel/armAttributeEntriesThumb16.h | 0 .../armmModel/armAttributeEntriesThumb32.h | 0 .../ovp}/armmModel/armBitMacros.h | 0 {ovp => simulators/ovp}/armmModel/armBus.c | 0 {ovp => simulators/ovp}/armmModel/armConfig.h | 0 {ovp => simulators/ovp}/armmModel/armDebug.h | 0 {ovp => simulators/ovp}/armmModel/armDecode.h | 0 .../ovp}/armmModel/armDecodeEntriesThumb16.h | 0 .../ovp}/armmModel/armDecodeEntriesThumb32.h | 0 .../ovp}/armmModel/armDecodeThumb.h | 0 .../ovp}/armmModel/armDecodeTypes.h | 0 .../ovp}/armmModel/armDisassemble.h | 0 .../ovp}/armmModel/armDisassembleFormats.h | 0 {ovp => simulators/ovp}/armmModel/armEmit.h | 0 .../ovp}/armmModel/armExceptionTypes.h | 0 .../ovp}/armmModel/armExceptions.h | 0 .../ovp}/armmModel/armFPConstants.h | 0 .../ovp}/armmModel/armFunctions.h | 0 {ovp => simulators/ovp}/armmModel/armInfo.c | 0 .../ovp}/armmModel/armMessage.h | 0 {ovp => simulators/ovp}/armmModel/armMode.h | 0 {ovp => simulators/ovp}/armmModel/armMorph.h | 0 .../ovp}/armmModel/armMorphEntries.h | 0 .../ovp}/armmModel/armMorphFunctions.h | 0 .../ovp}/armmModel/armRegisters.h | 0 .../ovp}/armmModel/armStructure.h | 0 {ovp => simulators/ovp}/armmModel/armSys.h | 0 .../ovp}/armmModel/armSysRegisters.h | 0 .../ovp}/armmModel/armTypeRefs.h | 0 {ovp => simulators/ovp}/armmModel/armUtils.h | 0 {ovp => simulators/ovp}/armmModel/armVFP.h | 0 {ovp => simulators/ovp}/armmModel/armVM.h | 0 .../ovp}/armmModel/armVariant.h | 0 {ovp => simulators/ovp}/armmModel/armmAttrs.c | 0 .../ovp}/armmModel/armmConfigList.c | 0 {ovp => simulators/ovp}/armmModel/armmDebug.c | 0 .../ovp}/armmModel/armmDecode.c | 0 .../ovp}/armmModel/armmDecodeThumb.c | 0 .../ovp}/armmModel/armmDisassemble.c | 0 {ovp => simulators/ovp}/armmModel/armmDoc.c | 0 {ovp => simulators/ovp}/armmModel/armmDoc.h | 0 {ovp => simulators/ovp}/armmModel/armmEmit.c | 0 .../ovp}/armmModel/armmExceptions.c | 0 {ovp => simulators/ovp}/armmModel/armmMain.c | 0 .../ovp}/armmModel/armmMorphFunctions.c | 0 .../ovp}/armmModel/armmMorphTable.c | 0 .../ovp}/armmModel/armmParameters.c | 0 .../ovp}/armmModel/armmParameters.h | 0 .../ovp}/armmModel/armmSemiHost.c | 0 {ovp => simulators/ovp}/armmModel/armmSys.c | 0 {ovp => simulators/ovp}/armmModel/armmUtils.c | 0 {ovp => simulators/ovp}/armmModel/armmVFP.c | 0 {ovp => simulators/ovp}/armmModel/armmVM.c | 0 {ovp => simulators/ovp}/armmModel/export.def | 0 .../ovp}/armmModel/failSALlink.cc | 2 +- .../ovp}/cortexM3/CMakeLists.txt | 2 +- .../ovp}/cortexM3/platform/platform.cc | 2 +- .../ovp}/cortexM3/platform/platform.hpp | 0 .../ovp}/cortexM3/platform/statreg.hpp | 0 .../mmc/flakyMemory/1.0/model/CMakeLists.txt | 4 +- .../mmc/flakyMemory/1.0/model/flipBits.cpp | 0 .../mmc/flakyMemory/1.0/model/flipBits.h | 0 .../mmc/flakyMemory/1.0/model/model.cpp | 4 +- {ovp => simulators/ovp}/setImperas.sh | 0 .../ovp}/statusmsg/CMakeLists.txt | 0 .../ovp}/statusmsg/OVPStatusMessage.proto | 0 .../ovp/statusmsg}/protogen.sh | 0 {ovp => simulators/ovp}/test1/CMakeLists.txt | 2 +- {ovp => simulators/ovp}/test1/application.elf | Bin .../ovp}/test1/application/application.c | 0 .../ovp}/test1/platform/beforeInstruction.cpp | 0 .../ovp}/test1/platform/beforeInstruction.hpp | 0 .../ovp}/test1/platform/flakyMemory.cpp | 0 .../ovp}/test1/platform/flakyMemory.hpp | 0 .../ovp}/test1/platform/platform.cpp | 0 src/CMakeLists.txt | 39 +++ src/core/CMakeLists.txt | 36 +++ {core => src/core}/Doxyfile.in | 0 src/core/comm/CMakeLists.txt | 8 + .../core/comm}/ExperimentData.hpp | 13 +- .../jobserver => src/core/comm}/SocketComm.cc | 6 +- .../core/comm}/SocketComm.hpp | 6 +- .../core/comm/msg}/CMakeLists.txt | 4 +- .../core/comm/msg}/FailControlMessage.proto | 0 .../core/comm/msg}/protogen.sh | 0 {core => src/core}/config/CMakeLists.txt | 4 +- {core => src/core}/config/FailConfig.hpp.in | 0 src/core/config/VariantConfig.hpp.in | 7 + src/core/cpn/CMakeLists.txt | 8 + .../controller => src/core/cpn}/Campaign.hpp | 2 +- .../core/cpn}/CampaignManager.cc | 0 .../core/cpn}/CampaignManager.hpp | 16 +- {core/jobserver => src/core/cpn}/JobServer.cc | 100 +++---- .../jobserver => src/core/cpn}/JobServer.hpp | 106 ++++---- src/core/cpn/Minion.hpp | 71 +++++ src/core/efw/CMakeLists.txt | 10 + .../core/efw}/CoroutineManager.cc | 9 +- src/core/efw/CoroutineManager.hpp | 72 +++++ src/core/efw/ExperimentFlow.hpp | 37 +++ {core/jobserver => src/core/efw}/JobClient.cc | 105 ++++---- .../jobserver => src/core/efw}/JobClient.hpp | 12 +- .../core/sal}/BufferCache.cc | 15 +- .../core/sal}/BufferCache.hpp | 44 ++-- {core/SAL => src/core/sal}/CMakeLists.txt | 9 +- {core/controller => src/core/sal}/Event.cc | 2 +- {core/controller => src/core/sal}/Event.hpp | 2 +- .../controller => src/core/sal}/EventList.cc | 2 +- .../controller => src/core/sal}/EventList.hpp | 0 {core/SAL => src/core/sal}/Memory.cc | 0 {core/SAL => src/core/sal}/Memory.hpp | 0 {core/SAL => src/core/sal}/Register.cc | 0 {core/SAL => src/core/sal}/Register.hpp | 0 {core/SAL => src/core/sal}/SALConfig.hpp | 3 +- {core/SAL => src/core/sal}/SALInst.hpp | 2 +- .../core/sal}/SimulatorController.cc | 42 +-- .../core/sal}/SimulatorController.hpp | 16 +- .../core/sal}/bochs/BochsConfig.hpp | 12 +- .../core/sal}/bochs/BochsController.cc | 15 ++ src/core/sal/bochs/BochsController.hpp | 181 +++++++++++++ .../core/sal}/bochs/BochsHelpers.hpp | 2 +- src/core/sal/bochs/BochsMemory.hpp | 110 ++++++++ .../core/sal}/bochs/BochsNonVerbose.ah | 9 +- src/core/sal/bochs/BochsRegister.hpp | 238 +++++++++++++++++ .../SAL => src/core/sal}/bochs/Breakpoints.ah | 8 +- {core/SAL => src/core/sal}/bochs/Credits.ah | 0 .../sal}/bochs/DisableKeyboardInterrupt.ah | 8 +- .../core/sal}/bochs/DisableLogFunctions.ah | 0 .../core/sal}/bochs/FailBochsGlobals.hpp | 2 +- .../core/sal}/bochs/FailBochsInit.ah | 0 .../core/sal}/bochs/FireInterrupt.ah | 8 +- .../SAL => src/core/sal}/bochs/GuestSysCom.ah | 10 +- {core/SAL => src/core/sal}/bochs/IOPortCom.ah | 5 +- {core/SAL => src/core/sal}/bochs/Interrupt.ah | 8 +- .../core/sal}/bochs/InterruptSuppression.ah | 5 +- {core/SAL => src/core/sal}/bochs/Jump.ah | 3 +- {core/SAL => src/core/sal}/bochs/MemAccess.ah | 18 +- {core/SAL => src/core/sal}/bochs/Reboot.ah | 2 +- .../core/sal}/bochs/RestoreState.ah | 7 +- {core/SAL => src/core/sal}/bochs/SaveState.ah | 4 +- {core/SAL => src/core/sal}/bochs/Trap.ah | 4 +- {core/SAL => src/core/sal}/ovp/FailOVPInit.ah | 2 + {core/SAL => src/core/sal}/ovp/OVPConfig.hpp | 10 +- .../SAL => src/core/sal}/ovp/OVPController.cc | 81 +++--- src/core/sal/ovp/OVPController.hpp | 72 +++++ src/core/sal/ovp/OVPMemory.hpp | 73 ++++++ src/core/sal/ovp/OVPRegister.hpp | 76 ++++++ {core => src/core}/util/CMakeLists.txt | 2 + {core => src/core}/util/Logger.cc | 0 src/core/util/Logger.hpp | 53 ++++ {core => src/core}/util/MemoryMap.hpp | 15 +- {core => src/core}/util/ProtoStream.cc | 3 + src/core/util/ProtoStream.hpp | 81 ++++++ .../core}/util/SynchronizedCounter.cc | 9 +- src/core/util/SynchronizedCounter.hpp | 38 +++ {core => src/core}/util/SynchronizedMap.hpp | 25 +- {core => src/core}/util/SynchronizedQueue.hpp | 32 +-- {core => src}/experiments/CMakeLists.txt | 2 +- .../checksum-oostubs/CMakeLists.txt | 1 + .../experiments/checksum-oostubs/campaign.cc | 5 +- .../experiments/checksum-oostubs/campaign.hpp | 4 +- .../checksum-oostubs/checksum-oostubs.proto | 0 .../checksum-oostubs/ecc_region.hpp | 0 .../checksum-oostubs/experiment.cc | 17 +- .../checksum-oostubs/experiment.hpp | 4 +- .../checksum-oostubs/experimentInfo.hpp | 0 .../experiments/checksum-oostubs/main.cc | 4 +- .../experiments/cool-checksum}/CMakeLists.txt | 2 +- .../experiments/cool-checksum}/campaign.cc | 7 +- .../experiments/cool-checksum}/campaign.hpp | 4 +- .../cool-checksum}/coolchecksum.proto | 0 .../experiments/cool-checksum}/experiment.cc | 12 +- .../experiments/cool-checksum}/experiment.hpp | 4 +- .../cool-checksum}/experimentInfo.hpp | 0 .../experiments/cool-checksum}/main.cc | 4 +- .../fault-coverage}/CMakeLists.txt | 2 +- .../experiments/fault-coverage}/experiment.cc | 6 +- .../fault-coverage}/experiment.hpp | 2 +- .../fire-interrupt}/CMakeLists.txt | 4 +- .../experiments/fire-interrupt}/bootdisk.img | Bin .../experiments/fire-interrupt}/experiment.cc | 6 +- src/experiments/fire-interrupt/experiment.hpp | 12 + .../experiments/hsc-simple}/CMakeLists.txt | 4 +- .../experiments/hsc-simple}/experiment.cc | 9 +- src/experiments/hsc-simple/experiment.hpp | 14 + .../experiments/instantiate-experiment.ah.in | 4 +- .../experiments/l4-sys}/CMakeLists.txt | 2 +- .../experiments/l4-sys}/campaign.cc | 5 +- .../experiments/l4-sys}/campaign.hpp | 4 +- .../experiments/l4-sys}/experiment.cc | 12 +- .../experiments/l4-sys}/experiment.hpp | 4 +- .../experiments/l4-sys}/experimentInfo.hpp | 0 .../experiments/l4-sys}/l4sys.proto | 0 .../l4sys => src/experiments/l4-sys}/main.cc | 4 +- .../mh-test-campaign}/CMakeLists.txt | 2 +- .../mh-test-campaign}/MHTest.proto | 0 .../mh-test-campaign}/MHTestCampaign.cc | 2 +- .../mh-test-campaign}/MHTestCampaign.hpp | 7 +- .../mh-test-campaign}/experiment.cc | 6 +- .../mh-test-campaign}/experiment.hpp | 4 +- .../mh-test-campaign}/mhcampaign.cc | 6 +- .../experiments/tracing-test}/CMakeLists.txt | 4 +- .../experiments/tracing-test}/experiment.cc | 7 +- .../experiments/tracing-test}/experiment.hpp | 5 +- .../weather-monitor}/CMakeLists.txt | 6 +- .../experiments/weather-monitor}/campaign.cc | 19 +- src/experiments/weather-monitor/campaign.hpp | 19 ++ .../weather-monitor}/experiment.cc | 18 +- .../weather-monitor/experiment.hpp | 14 + .../weather-monitor}/experimentInfo.hpp | 0 .../weather-monitor}/experimentInfo.hpp.sh | 0 .../experiments/weather-monitor}/main.cc | 6 +- .../experiments/weather-monitor}/vptr_map.hpp | 0 .../weather-monitor}/weathermonitor.proto | 0 {core => src}/plugins/CMakeLists.txt | 2 +- {core => src}/plugins/tracing/CMakeLists.txt | 0 {core => src}/plugins/tracing/README.txt | 0 .../plugins/tracing/TracingPlugin.cc | 4 +- .../plugins/tracing/TracingPlugin.hpp | 4 +- {core => src}/plugins/tracing/dump-trace.py | 0 {core => src}/plugins/tracing/trace.proto | 0 866 files changed, 1848 insertions(+), 1879 deletions(-) delete mode 100644 core/CMakeLists.txt delete mode 100644 core/SAL/bochs/BochsController.hpp delete mode 100644 core/SAL/bochs/BochsMemory.hpp delete mode 100644 core/SAL/bochs/BochsRegister.hpp delete mode 100644 core/SAL/ovp/OVPController.hpp delete mode 100644 core/SAL/ovp/OVPMemory.hpp delete mode 100644 core/SAL/ovp/OVPRegister.hpp delete mode 100644 core/config/variant_config.hpp.in delete mode 100644 core/controller/CMakeLists.txt delete mode 100644 core/controller/CoroutineManager.hpp delete mode 100644 core/controller/ExperimentFlow.hpp delete mode 100644 core/controller/Minion.hpp delete mode 100644 core/experiments/fireinterrupt/experiment.hpp delete mode 100644 core/experiments/hscsimple/experiment.hpp delete mode 100644 core/experiments/weathermonitor/campaign.hpp delete mode 100644 core/experiments/weathermonitor/experiment.hpp delete mode 100644 core/jobserver/CMakeLists.txt delete mode 100644 core/util/Logger.hpp delete mode 100644 core/util/ProtoStream.hpp delete mode 100644 core/util/SynchronizedCounter.hpp rename deprecated/old-aspects/{fireTimer.ah => FireTimer.ah.old} (100%) rename deprecated/old-aspects/{JumpToPreviousCtx.ah => JumpToPreviousCtx.ah.old} (100%) rename deprecated/old-aspects/{MemAccessBitFlip.ah => MemAccessBitFlip.ah.old} (100%) rename deprecated/{ => old-utils}/ExperimentDataQueue.cc (100%) rename deprecated/{ => old-utils}/ExperimentDataQueue.hpp (100%) rename {bochs => simulators/bochs}/.bochsrc (100%) rename {bochs => simulators/bochs}/.conf.amigaos (100%) rename {bochs => simulators/bochs}/.conf.beos (100%) rename {bochs => simulators/bochs}/.conf.everything (100%) rename {bochs => simulators/bochs}/.conf.linux (100%) rename {bochs => simulators/bochs}/.conf.macos (100%) rename {bochs => simulators/bochs}/.conf.macosx (100%) rename {bochs => simulators/bochs}/.conf.nothing (100%) rename {bochs => simulators/bochs}/.conf.sparc (100%) rename {bochs => simulators/bochs}/.conf.win32-cygwin (100%) rename {bochs => simulators/bochs}/.conf.win32-vcpp (100%) rename {bochs => simulators/bochs}/CHANGES (100%) rename {bochs => simulators/bochs}/COPYING (100%) rename {bochs => simulators/bochs}/Makefile.in (98%) rename {bochs => simulators/bochs}/PARAM_TREE.txt (100%) rename {bochs => simulators/bochs}/README (100%) rename {bochs => simulators/bochs}/README-plugins (100%) rename {bochs => simulators/bochs}/README-wxWindows (100%) rename {bochs => simulators/bochs}/README.rfb (100%) rename {bochs => simulators/bochs}/TESTFORM.txt (100%) rename {bochs => simulators/bochs}/TODO (100%) rename {bochs => simulators/bochs}/aclocal.m4 (100%) rename {bochs => simulators/bochs}/bios/BIOS-bochs-latest (100%) rename {bochs => simulators/bochs}/bios/BIOS-bochs-legacy (100%) rename {bochs => simulators/bochs}/bios/Makefile.in (100%) rename {bochs => simulators/bochs}/bios/VGABIOS-elpin-2.40 (100%) rename {bochs => simulators/bochs}/bios/VGABIOS-elpin-LICENSE (100%) rename {bochs => simulators/bochs}/bios/VGABIOS-lgpl-README (100%) rename {bochs => simulators/bochs}/bios/VGABIOS-lgpl-latest (100%) rename {bochs => simulators/bochs}/bios/VGABIOS-lgpl-latest-cirrus (100%) rename {bochs => simulators/bochs}/bios/VGABIOS-lgpl-latest-cirrus-debug (100%) rename {bochs => simulators/bochs}/bios/VGABIOS-lgpl-latest-debug (100%) rename {bochs => simulators/bochs}/bios/acpi-dsdt.dsl (100%) rename {bochs => simulators/bochs}/bios/acpi-dsdt.hex (100%) rename {bochs => simulators/bochs}/bios/apmbios.S (100%) rename {bochs => simulators/bochs}/bios/bios_usage (100%) rename {bochs => simulators/bochs}/bios/biossums.c (100%) rename {bochs => simulators/bochs}/bios/makesym.perl (100%) rename {bochs => simulators/bochs}/bios/notes (100%) rename {bochs => simulators/bochs}/bios/rombios.c (100%) rename {bochs => simulators/bochs}/bios/rombios.h (100%) rename {bochs => simulators/bochs}/bios/rombios32.c (100%) rename {bochs => simulators/bochs}/bios/rombios32.ld (100%) rename {bochs => simulators/bochs}/bios/rombios32start.S (100%) rename {bochs => simulators/bochs}/bios/usage.cc (100%) rename {bochs => simulators/bochs}/bochs.h (99%) rename {bochs => simulators/bochs}/bochsrc-multiple-ne2k (100%) rename {bochs => simulators/bochs}/build/batch-build.perl (100%) rename {bochs => simulators/bochs}/build/beos/resource.zip (100%) rename {bochs => simulators/bochs}/build/debian/README.Debian (100%) rename {bochs => simulators/bochs}/build/debian/changelog (100%) rename {bochs => simulators/bochs}/build/debian/conffiles.ex (100%) rename {bochs => simulators/bochs}/build/debian/control (100%) rename {bochs => simulators/bochs}/build/debian/copyright (100%) rename {bochs => simulators/bochs}/build/debian/cron.d.ex (100%) rename {bochs => simulators/bochs}/build/debian/dirs (100%) rename {bochs => simulators/bochs}/build/debian/docs (100%) rename {bochs => simulators/bochs}/build/debian/emacsen-install.ex (100%) rename {bochs => simulators/bochs}/build/debian/emacsen-remove.ex (100%) rename {bochs => simulators/bochs}/build/debian/emacsen-startup.ex (100%) rename {bochs => simulators/bochs}/build/debian/ex.doc-base.package (100%) rename {bochs => simulators/bochs}/build/debian/init.d.ex (100%) rename {bochs => simulators/bochs}/build/debian/manpage.1.ex (100%) rename {bochs => simulators/bochs}/build/debian/manpage.sgml.ex (100%) rename {bochs => simulators/bochs}/build/debian/menu.ex (100%) rename {bochs => simulators/bochs}/build/debian/postinst (100%) rename {bochs => simulators/bochs}/build/debian/postinst.ex (100%) rename {bochs => simulators/bochs}/build/debian/postrm.ex (100%) rename {bochs => simulators/bochs}/build/debian/preinst.ex (100%) rename {bochs => simulators/bochs}/build/debian/prerm.ex (100%) rename {bochs => simulators/bochs}/build/debian/rules (100%) rename {bochs => simulators/bochs}/build/debian/watch.ex (100%) rename {bochs => simulators/bochs}/build/linux/README.linux-binary (100%) rename {bochs => simulators/bochs}/build/linux/bochs-dlx.in (100%) rename {bochs => simulators/bochs}/build/macos/CWPro3_project.sit (100%) rename {bochs => simulators/bochs}/build/macos/bochs.rsrc (100%) rename {bochs => simulators/bochs}/build/macos/bochsico.bmp (100%) rename {bochs => simulators/bochs}/build/macos/macos_defines.h (100%) rename {bochs => simulators/bochs}/build/macosx/Info.plist.in (100%) rename {bochs => simulators/bochs}/build/macosx/README.macosx-binary (100%) rename {bochs => simulators/bochs}/build/macosx/bochs-icn.icns (100%) rename {bochs => simulators/bochs}/build/macosx/bochs.applescript (100%) rename {bochs => simulators/bochs}/build/macosx/bochs.r (100%) rename {bochs => simulators/bochs}/build/macosx/diskimage.pl (100%) rename {bochs => simulators/bochs}/build/macosx/make-dmg.sh (100%) rename {bochs => simulators/bochs}/build/macosx/pbdevelopment.plist (100%) rename {bochs => simulators/bochs}/build/macosx/script.data (100%) rename {bochs => simulators/bochs}/build/macosx/script.r (100%) rename {bochs => simulators/bochs}/build/makeall.sh (100%) rename {bochs => simulators/bochs}/build/redhat/NOTES (100%) rename {bochs => simulators/bochs}/build/redhat/bochs.rpmspec.template (100%) rename {bochs => simulators/bochs}/build/redhat/make-rpm (100%) rename {bochs => simulators/bochs}/build/win32/README.win32-binary (100%) rename {bochs => simulators/bochs}/build/win32/bochs.win32.manifest (100%) rename {bochs => simulators/bochs}/build/win32/bochs.win64.manifest (100%) rename {bochs => simulators/bochs}/build/win32/cc2cpp (100%) rename {bochs => simulators/bochs}/build/win32/cpp2cc (100%) rename {bochs => simulators/bochs}/build/win32/diffcc2cpp (100%) rename {bochs => simulators/bochs}/build/win32/nsis/Makefile.in (100%) rename {bochs => simulators/bochs}/build/win32/nsis/bochs.ico (100%) rename {bochs => simulators/bochs}/build/win32/nsis/bochs.nsi.in (100%) rename {bochs => simulators/bochs}/build/win32/nsis/lgban.ico (100%) rename {bochs => simulators/bochs}/build/win32/nsis/logo.ico (100%) rename {bochs => simulators/bochs}/build/win32/nsis/penguin.ico (100%) rename {bochs => simulators/bochs}/build/win32/nsis/unbochs.ico (100%) rename {bochs => simulators/bochs}/build/win32/vs2008ex-workspace.zip (100%) rename {bochs => simulators/bochs}/bx_debug/Makefile.in (100%) rename {bochs => simulators/bochs}/bx_debug/dbg_main.cc (100%) rename {bochs => simulators/bochs}/bx_debug/debug.h (100%) rename {bochs => simulators/bochs}/bx_debug/lexer.c (100%) rename {bochs => simulators/bochs}/bx_debug/lexer.l (100%) rename {bochs => simulators/bochs}/bx_debug/linux.cc (100%) rename {bochs => simulators/bochs}/bx_debug/make-syscalls-linux.pl (100%) rename {bochs => simulators/bochs}/bx_debug/parser.c (100%) rename {bochs => simulators/bochs}/bx_debug/parser.h (100%) rename {bochs => simulators/bochs}/bx_debug/parser.y (100%) rename {bochs => simulators/bochs}/bx_debug/symbols.cc (100%) rename {bochs => simulators/bochs}/bx_debug/syscalls-linux.h (100%) rename {bochs => simulators/bochs}/bxversion.h.in (100%) rename {bochs => simulators/bochs}/bxversion.rc.in (100%) rename {bochs => simulators/bochs}/config.cc (100%) rename {bochs => simulators/bochs}/config.guess (100%) rename {bochs => simulators/bochs}/config.h.in (100%) rename {bochs => simulators/bochs}/config.sub (100%) rename {bochs => simulators/bochs}/configure (100%) rename {bochs => simulators/bochs}/configure.in (100%) rename {bochs => simulators/bochs}/cpu/3dnow.cc (100%) rename {bochs => simulators/bochs}/cpu/Makefile.in (100%) rename {bochs => simulators/bochs}/cpu/access.cc (100%) rename {bochs => simulators/bochs}/cpu/access32.cc (100%) rename {bochs => simulators/bochs}/cpu/access64.cc (100%) rename {bochs => simulators/bochs}/cpu/aes.cc (100%) rename {bochs => simulators/bochs}/cpu/apic.cc (100%) rename {bochs => simulators/bochs}/cpu/apic.h (100%) rename {bochs => simulators/bochs}/cpu/arith16.cc (100%) rename {bochs => simulators/bochs}/cpu/arith32.cc (100%) rename {bochs => simulators/bochs}/cpu/arith64.cc (100%) rename {bochs => simulators/bochs}/cpu/arith8.cc (100%) rename {bochs => simulators/bochs}/cpu/bcd.cc (100%) rename {bochs => simulators/bochs}/cpu/bit.cc (100%) rename {bochs => simulators/bochs}/cpu/bit16.cc (100%) rename {bochs => simulators/bochs}/cpu/bit32.cc (100%) rename {bochs => simulators/bochs}/cpu/bit64.cc (100%) rename {bochs => simulators/bochs}/cpu/call_far.cc (100%) rename {bochs => simulators/bochs}/cpu/cpu.cc (100%) rename {bochs => simulators/bochs}/cpu/cpu.h (100%) rename {bochs => simulators/bochs}/cpu/cpuid.cc (100%) rename {bochs => simulators/bochs}/cpu/crc32.cc (100%) rename {bochs => simulators/bochs}/cpu/crregs.cc (100%) rename {bochs => simulators/bochs}/cpu/crregs.h (100%) rename {bochs => simulators/bochs}/cpu/ctrl_xfer16.cc (100%) rename {bochs => simulators/bochs}/cpu/ctrl_xfer32.cc (100%) rename {bochs => simulators/bochs}/cpu/ctrl_xfer64.cc (100%) rename {bochs => simulators/bochs}/cpu/ctrl_xfer_pro.cc (100%) rename {bochs => simulators/bochs}/cpu/data_xfer16.cc (100%) rename {bochs => simulators/bochs}/cpu/data_xfer32.cc (100%) rename {bochs => simulators/bochs}/cpu/data_xfer64.cc (100%) rename {bochs => simulators/bochs}/cpu/data_xfer8.cc (100%) rename {bochs => simulators/bochs}/cpu/debugstuff.cc (100%) rename {bochs => simulators/bochs}/cpu/descriptor.h (100%) rename {bochs => simulators/bochs}/cpu/exception.cc (100%) rename {bochs => simulators/bochs}/cpu/fetchdecode.cc (100%) rename {bochs => simulators/bochs}/cpu/fetchdecode.h (100%) rename {bochs => simulators/bochs}/cpu/fetchdecode64.cc (100%) rename {bochs => simulators/bochs}/cpu/fetchdecode_sse.h (100%) rename {bochs => simulators/bochs}/cpu/fetchdecode_x87.h (100%) rename {bochs => simulators/bochs}/cpu/flag_ctrl.cc (100%) rename {bochs => simulators/bochs}/cpu/flag_ctrl_pro.cc (100%) rename {bochs => simulators/bochs}/cpu/fpu_emu.cc (100%) rename {bochs => simulators/bochs}/cpu/i387.h (100%) rename {bochs => simulators/bochs}/cpu/ia_opcodes.h (100%) rename {bochs => simulators/bochs}/cpu/icache.cc (100%) rename {bochs => simulators/bochs}/cpu/icache.h (100%) rename {bochs => simulators/bochs}/cpu/init.cc (100%) rename {bochs => simulators/bochs}/cpu/instr.h (100%) rename {bochs => simulators/bochs}/cpu/io.cc (100%) rename {bochs => simulators/bochs}/cpu/iret.cc (100%) rename {bochs => simulators/bochs}/cpu/jmp_far.cc (100%) rename {bochs => simulators/bochs}/cpu/lazy_flags.cc (100%) rename {bochs => simulators/bochs}/cpu/lazy_flags.h (100%) rename {bochs => simulators/bochs}/cpu/load.cc (100%) rename {bochs => simulators/bochs}/cpu/logical16.cc (100%) rename {bochs => simulators/bochs}/cpu/logical32.cc (100%) rename {bochs => simulators/bochs}/cpu/logical64.cc (100%) rename {bochs => simulators/bochs}/cpu/logical8.cc (100%) rename {bochs => simulators/bochs}/cpu/mmx.cc (100%) rename {bochs => simulators/bochs}/cpu/model_specific.h (100%) rename {bochs => simulators/bochs}/cpu/msr.cc (100%) rename {bochs => simulators/bochs}/cpu/mult16.cc (100%) rename {bochs => simulators/bochs}/cpu/mult32.cc (100%) rename {bochs => simulators/bochs}/cpu/mult64.cc (100%) rename {bochs => simulators/bochs}/cpu/mult8.cc (100%) rename {bochs => simulators/bochs}/cpu/paging.cc (100%) rename {bochs => simulators/bochs}/cpu/proc_ctrl.cc (100%) rename {bochs => simulators/bochs}/cpu/protect_ctrl.cc (100%) rename {bochs => simulators/bochs}/cpu/resolver.cc (100%) rename {bochs => simulators/bochs}/cpu/ret_far.cc (100%) rename {bochs => simulators/bochs}/cpu/segment_ctrl.cc (100%) rename {bochs => simulators/bochs}/cpu/segment_ctrl_pro.cc (100%) rename {bochs => simulators/bochs}/cpu/shift16.cc (100%) rename {bochs => simulators/bochs}/cpu/shift32.cc (100%) rename {bochs => simulators/bochs}/cpu/shift64.cc (100%) rename {bochs => simulators/bochs}/cpu/shift8.cc (100%) rename {bochs => simulators/bochs}/cpu/smm.cc (100%) rename {bochs => simulators/bochs}/cpu/smm.h (100%) rename {bochs => simulators/bochs}/cpu/soft_int.cc (100%) rename {bochs => simulators/bochs}/cpu/sse.cc (100%) rename {bochs => simulators/bochs}/cpu/sse_move.cc (100%) rename {bochs => simulators/bochs}/cpu/sse_pfp.cc (100%) rename {bochs => simulators/bochs}/cpu/sse_rcp.cc (100%) rename {bochs => simulators/bochs}/cpu/sse_string.cc (100%) rename {bochs => simulators/bochs}/cpu/stack.h (100%) rename {bochs => simulators/bochs}/cpu/stack16.cc (100%) rename {bochs => simulators/bochs}/cpu/stack32.cc (100%) rename {bochs => simulators/bochs}/cpu/stack64.cc (100%) rename {bochs => simulators/bochs}/cpu/string.cc (100%) rename {bochs => simulators/bochs}/cpu/tasking.cc (100%) rename {bochs => simulators/bochs}/cpu/todo (100%) rename {bochs => simulators/bochs}/cpu/vm8086.cc (100%) rename {bochs => simulators/bochs}/cpu/vmcs.cc (100%) rename {bochs => simulators/bochs}/cpu/vmexit.cc (100%) rename {bochs => simulators/bochs}/cpu/vmx.cc (100%) rename {bochs => simulators/bochs}/cpu/vmx.h (100%) rename {bochs => simulators/bochs}/cpu/xmm.h (100%) rename {bochs => simulators/bochs}/cpu/xsave.cc (100%) rename {bochs => simulators/bochs}/crc.cc (100%) rename {bochs => simulators/bochs}/disasm/Makefile.in (100%) rename {bochs => simulators/bochs}/disasm/dis_decode.cc (100%) rename {bochs => simulators/bochs}/disasm/dis_groups.cc (100%) rename {bochs => simulators/bochs}/disasm/dis_tables.h (100%) rename {bochs => simulators/bochs}/disasm/dis_tables.inc (100%) rename {bochs => simulators/bochs}/disasm/dis_tables_sse.inc (100%) rename {bochs => simulators/bochs}/disasm/dis_tables_x87.inc (100%) rename {bochs => simulators/bochs}/disasm/disasm.h (100%) rename {bochs => simulators/bochs}/disasm/opcodes.inc (100%) rename {bochs => simulators/bochs}/disasm/resolve.cc (100%) rename {bochs => simulators/bochs}/disasm/syntax.cc (100%) rename {bochs => simulators/bochs}/doc/docbook/Makefile.in (100%) rename {bochs => simulators/bochs}/doc/docbook/Makefile.jade (100%) rename {bochs => simulators/bochs}/doc/docbook/README (100%) rename {bochs => simulators/bochs}/doc/docbook/development/development.dbk (100%) rename {bochs => simulators/bochs}/doc/docbook/documentation/documentation.dbk (100%) rename {bochs => simulators/bochs}/doc/docbook/fixtitles.pl (100%) rename {bochs => simulators/bochs}/doc/docbook/images/dlxlinux-in-linux.png (100%) rename {bochs => simulators/bochs}/doc/docbook/images/headerbar.png (100%) rename {bochs => simulators/bochs}/doc/docbook/images/undercon.png (100%) rename {bochs => simulators/bochs}/doc/docbook/include/defs.sgm (100%) rename {bochs => simulators/bochs}/doc/docbook/index.html (100%) rename {bochs => simulators/bochs}/doc/docbook/misc.txt (100%) rename {bochs => simulators/bochs}/doc/docbook/outline.txt (100%) rename {bochs => simulators/bochs}/doc/docbook/user/user.dbk (100%) rename {bochs => simulators/bochs}/doc/man/bochs-dlx.1 (100%) rename {bochs => simulators/bochs}/doc/man/bochs.1 (100%) rename {bochs => simulators/bochs}/doc/man/bochsrc.5 (100%) rename {bochs => simulators/bochs}/doc/man/bxcommit.1 (100%) rename {bochs => simulators/bochs}/doc/man/bximage.1 (100%) rename {bochs => simulators/bochs}/docs-html/00README (100%) rename {bochs => simulators/bochs}/docs-html/biossums.txt (100%) rename {bochs => simulators/bochs}/docs-html/cosimulation.html (100%) rename {bochs => simulators/bochs}/docs-html/enh_dbg_user_man.txt (100%) rename {bochs => simulators/bochs}/docs-html/memory.txt (100%) rename {bochs => simulators/bochs}/docs-html/random.txt (100%) rename {bochs => simulators/bochs}/dynamic/README (100%) rename {bochs => simulators/bochs}/extplugin.h (100%) rename {bochs => simulators/bochs}/font/vga.bitmap.h (100%) rename {bochs => simulators/bochs}/fpu/Makefile.in (100%) rename {bochs => simulators/bochs}/fpu/control_w.h (100%) rename {bochs => simulators/bochs}/fpu/f2xm1.cc (100%) rename {bochs => simulators/bochs}/fpu/ferr.cc (100%) rename {bochs => simulators/bochs}/fpu/fpatan.cc (100%) rename {bochs => simulators/bochs}/fpu/fprem.cc (100%) rename {bochs => simulators/bochs}/fpu/fpu.cc (100%) rename {bochs => simulators/bochs}/fpu/fpu_arith.cc (100%) rename {bochs => simulators/bochs}/fpu/fpu_compare.cc (100%) rename {bochs => simulators/bochs}/fpu/fpu_const.cc (100%) rename {bochs => simulators/bochs}/fpu/fpu_constant.h (100%) rename {bochs => simulators/bochs}/fpu/fpu_load_store.cc (100%) rename {bochs => simulators/bochs}/fpu/fpu_misc.cc (100%) rename {bochs => simulators/bochs}/fpu/fpu_tags.cc (100%) rename {bochs => simulators/bochs}/fpu/fpu_trans.cc (100%) rename {bochs => simulators/bochs}/fpu/fsincos.cc (100%) rename {bochs => simulators/bochs}/fpu/fyl2x.cc (100%) rename {bochs => simulators/bochs}/fpu/poly.cc (100%) rename {bochs => simulators/bochs}/fpu/softfloat-compare.h (100%) rename {bochs => simulators/bochs}/fpu/softfloat-macros.h (100%) rename {bochs => simulators/bochs}/fpu/softfloat-round-pack.cc (100%) rename {bochs => simulators/bochs}/fpu/softfloat-round-pack.h (100%) rename {bochs => simulators/bochs}/fpu/softfloat-specialize.cc (100%) rename {bochs => simulators/bochs}/fpu/softfloat-specialize.h (100%) rename {bochs => simulators/bochs}/fpu/softfloat.cc (100%) rename {bochs => simulators/bochs}/fpu/softfloat.h (100%) rename {bochs => simulators/bochs}/fpu/softfloatx80.cc (100%) rename {bochs => simulators/bochs}/fpu/softfloatx80.h (100%) rename {bochs => simulators/bochs}/fpu/status_w.h (100%) rename {bochs => simulators/bochs}/fpu/tag_w.h (100%) rename {bochs => simulators/bochs}/fpu/todo (100%) rename {bochs => simulators/bochs}/gdbstub.cc (100%) rename {bochs => simulators/bochs}/gui/Makefile.in (100%) rename {bochs => simulators/bochs}/gui/amigagui.h (100%) rename {bochs => simulators/bochs}/gui/amigaos.cc (100%) rename {bochs => simulators/bochs}/gui/beos.cc (100%) rename {bochs => simulators/bochs}/gui/bitmaps/cdromd.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/cdromd.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/configbutton.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/configbutton.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/copy.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/copy.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/floppya.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/floppya.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/floppyb.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/floppyb.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/mouse.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/mouse.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/paste.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/paste.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/power.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/power.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/reset.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/reset.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/saverestore.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/saverestore.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/snapshot.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/snapshot.xpm (100%) rename {bochs => simulators/bochs}/gui/bitmaps/userbutton.h (100%) rename {bochs => simulators/bochs}/gui/bitmaps/userbutton.xpm (100%) rename {bochs => simulators/bochs}/gui/carbon.cc (100%) rename {bochs => simulators/bochs}/gui/enh_dbg.cc (100%) rename {bochs => simulators/bochs}/gui/enh_dbg.h (100%) rename {bochs => simulators/bochs}/gui/gtk_enh_dbg_osdep.cc (100%) rename {bochs => simulators/bochs}/gui/gui.cc (100%) rename {bochs => simulators/bochs}/gui/gui.h (100%) rename {bochs => simulators/bochs}/gui/icon_bochs.h (100%) rename {bochs => simulators/bochs}/gui/icon_bochs.xpm (100%) rename {bochs => simulators/bochs}/gui/keymap.cc (100%) rename {bochs => simulators/bochs}/gui/keymap.h (100%) rename {bochs => simulators/bochs}/gui/keymaps/convertmap.pl (100%) rename {bochs => simulators/bochs}/gui/keymaps/sdl-pc-de.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/sdl-pc-us.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-be.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-da.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-de.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-es.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-fr.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-it.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-ru.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-se.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-si.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-uk.map (100%) rename {bochs => simulators/bochs}/gui/keymaps/x11-pc-us.map (100%) rename {bochs => simulators/bochs}/gui/macintosh.cc (100%) rename {bochs => simulators/bochs}/gui/nogui.cc (100%) rename {bochs => simulators/bochs}/gui/paramtree.cc (100%) rename {bochs => simulators/bochs}/gui/paramtree.h (100%) rename {bochs => simulators/bochs}/gui/rfb.cc (100%) rename {bochs => simulators/bochs}/gui/rfb.h (100%) rename {bochs => simulators/bochs}/gui/rfbkeys.h (100%) rename {bochs => simulators/bochs}/gui/sdl.cc (100%) rename {bochs => simulators/bochs}/gui/sdl.h (100%) rename {bochs => simulators/bochs}/gui/sdlkeys.h (100%) rename {bochs => simulators/bochs}/gui/siminterface.cc (100%) rename {bochs => simulators/bochs}/gui/siminterface.h (100%) rename {bochs => simulators/bochs}/gui/svga.cc (100%) rename {bochs => simulators/bochs}/gui/term.cc (100%) rename {bochs => simulators/bochs}/gui/textconfig.cc (100%) rename {bochs => simulators/bochs}/gui/textconfig.h (100%) rename {bochs => simulators/bochs}/gui/wenhdbg_res.h (100%) rename {bochs => simulators/bochs}/gui/win32.cc (100%) rename {bochs => simulators/bochs}/gui/win32_enh_dbg_osdep.cc (100%) rename {bochs => simulators/bochs}/gui/win32dialog.cc (100%) rename {bochs => simulators/bochs}/gui/win32dialog.h (100%) rename {bochs => simulators/bochs}/gui/win32paramdlg.cc (100%) rename {bochs => simulators/bochs}/gui/win32paramdlg.h (100%) rename {bochs => simulators/bochs}/gui/win32res.h (100%) rename {bochs => simulators/bochs}/gui/wx.cc (100%) rename {bochs => simulators/bochs}/gui/wxdialog.cc (100%) rename {bochs => simulators/bochs}/gui/wxdialog.h (100%) rename {bochs => simulators/bochs}/gui/wxmain.cc (100%) rename {bochs => simulators/bochs}/gui/wxmain.h (100%) rename {bochs => simulators/bochs}/gui/x.cc (100%) rename {bochs => simulators/bochs}/host/linux/pcidev/Make.kbuild (100%) rename {bochs => simulators/bochs}/host/linux/pcidev/Makefile.in (100%) rename {bochs => simulators/bochs}/host/linux/pcidev/kernel_pcidev.h (100%) rename {bochs => simulators/bochs}/host/linux/pcidev/pcidev.c (100%) rename {bochs => simulators/bochs}/install-sh (100%) rename {bochs => simulators/bochs}/instrument/example0/Makefile.in (100%) rename {bochs => simulators/bochs}/instrument/example0/instrument.cc (100%) rename {bochs => simulators/bochs}/instrument/example0/instrument.h (100%) rename {bochs => simulators/bochs}/instrument/example1/Makefile.in (100%) rename {bochs => simulators/bochs}/instrument/example1/instrument.cc (100%) rename {bochs => simulators/bochs}/instrument/example1/instrument.h (100%) rename {bochs => simulators/bochs}/instrument/example2/Makefile.in (100%) rename {bochs => simulators/bochs}/instrument/example2/instrument.cc (100%) rename {bochs => simulators/bochs}/instrument/example2/instrument.h (100%) rename {bochs => simulators/bochs}/instrument/instrumentation.txt (100%) rename {bochs => simulators/bochs}/instrument/stubs/Makefile.in (100%) rename {bochs => simulators/bochs}/instrument/stubs/instrument.cc (100%) rename {bochs => simulators/bochs}/instrument/stubs/instrument.h (100%) rename {bochs => simulators/bochs}/iodev/Makefile.in (100%) rename {bochs => simulators/bochs}/iodev/acpi.cc (100%) rename {bochs => simulators/bochs}/iodev/acpi.h (100%) rename {bochs => simulators/bochs}/iodev/aspi-win32.h (100%) rename {bochs => simulators/bochs}/iodev/biosdev.cc (100%) rename {bochs => simulators/bochs}/iodev/biosdev.h (100%) rename {bochs => simulators/bochs}/iodev/busmouse.cc (100%) rename {bochs => simulators/bochs}/iodev/busmouse.h (100%) rename {bochs => simulators/bochs}/iodev/cdrom.cc (100%) rename {bochs => simulators/bochs}/iodev/cdrom.h (100%) rename {bochs => simulators/bochs}/iodev/cdrom_amigaos.cc (100%) rename {bochs => simulators/bochs}/iodev/cdrom_beos.cc (100%) rename {bochs => simulators/bochs}/iodev/cdrom_beos.h (100%) rename {bochs => simulators/bochs}/iodev/cmos.cc (100%) rename {bochs => simulators/bochs}/iodev/cmos.h (100%) rename {bochs => simulators/bochs}/iodev/crc32.cc (100%) rename {bochs => simulators/bochs}/iodev/crc32.h (100%) rename {bochs => simulators/bochs}/iodev/devices.cc (100%) rename {bochs => simulators/bochs}/iodev/devices.txt (100%) rename {bochs => simulators/bochs}/iodev/dma.cc (100%) rename {bochs => simulators/bochs}/iodev/dma.h (100%) rename {bochs => simulators/bochs}/iodev/eth.cc (100%) rename {bochs => simulators/bochs}/iodev/eth.h (100%) rename {bochs => simulators/bochs}/iodev/eth_arpback.cc (100%) rename {bochs => simulators/bochs}/iodev/eth_fbsd.cc (100%) rename {bochs => simulators/bochs}/iodev/eth_linux.cc (100%) rename {bochs => simulators/bochs}/iodev/eth_null.cc (100%) rename {bochs => simulators/bochs}/iodev/eth_packetmaker.cc (100%) rename {bochs => simulators/bochs}/iodev/eth_packetmaker.h (100%) rename {bochs => simulators/bochs}/iodev/eth_tap.cc (100%) rename {bochs => simulators/bochs}/iodev/eth_tuntap.cc (100%) rename {bochs => simulators/bochs}/iodev/eth_vde.cc (100%) rename {bochs => simulators/bochs}/iodev/eth_vnet.cc (100%) rename {bochs => simulators/bochs}/iodev/eth_win32.cc (100%) rename {bochs => simulators/bochs}/iodev/extfpuirq.cc (100%) rename {bochs => simulators/bochs}/iodev/extfpuirq.h (100%) rename {bochs => simulators/bochs}/iodev/floppy.cc (100%) rename {bochs => simulators/bochs}/iodev/floppy.h (100%) rename {bochs => simulators/bochs}/iodev/gameport.cc (100%) rename {bochs => simulators/bochs}/iodev/gameport.h (100%) rename {bochs => simulators/bochs}/iodev/guest2host.cc (100%) rename {bochs => simulators/bochs}/iodev/guest2host.h (100%) rename {bochs => simulators/bochs}/iodev/harddrv.cc (100%) rename {bochs => simulators/bochs}/iodev/harddrv.h (100%) rename {bochs => simulators/bochs}/iodev/hdimage.cc (100%) rename {bochs => simulators/bochs}/iodev/hdimage.h (100%) rename {bochs => simulators/bochs}/iodev/ioapic.cc (100%) rename {bochs => simulators/bochs}/iodev/ioapic.h (100%) rename {bochs => simulators/bochs}/iodev/iodebug.cc (100%) rename {bochs => simulators/bochs}/iodev/iodebug.h (100%) rename {bochs => simulators/bochs}/iodev/iodev.h (100%) rename {bochs => simulators/bochs}/iodev/keyboard.cc (100%) rename {bochs => simulators/bochs}/iodev/keyboard.h (100%) rename {bochs => simulators/bochs}/iodev/ne2k.cc (100%) rename {bochs => simulators/bochs}/iodev/ne2k.h (100%) rename {bochs => simulators/bochs}/iodev/parallel.cc (100%) rename {bochs => simulators/bochs}/iodev/parallel.h (100%) rename {bochs => simulators/bochs}/iodev/pci.cc (100%) rename {bochs => simulators/bochs}/iodev/pci.h (100%) rename {bochs => simulators/bochs}/iodev/pci2isa.cc (100%) rename {bochs => simulators/bochs}/iodev/pci2isa.h (100%) rename {bochs => simulators/bochs}/iodev/pci_ide.cc (100%) rename {bochs => simulators/bochs}/iodev/pci_ide.h (100%) rename {bochs => simulators/bochs}/iodev/pcidev.cc (100%) rename {bochs => simulators/bochs}/iodev/pcidev.h (100%) rename {bochs => simulators/bochs}/iodev/pcipnic.cc (100%) rename {bochs => simulators/bochs}/iodev/pcipnic.h (100%) rename {bochs => simulators/bochs}/iodev/pcivga.cc (100%) rename {bochs => simulators/bochs}/iodev/pcivga.h (100%) rename {bochs => simulators/bochs}/iodev/pic.cc (100%) rename {bochs => simulators/bochs}/iodev/pic.h (100%) rename {bochs => simulators/bochs}/iodev/pit82c54.cc (100%) rename {bochs => simulators/bochs}/iodev/pit82c54.h (100%) rename {bochs => simulators/bochs}/iodev/pit_wrap.cc (100%) rename {bochs => simulators/bochs}/iodev/pit_wrap.h (100%) rename {bochs => simulators/bochs}/iodev/pnic_api.h (100%) rename {bochs => simulators/bochs}/iodev/sb16.cc (100%) rename {bochs => simulators/bochs}/iodev/sb16.h (100%) rename {bochs => simulators/bochs}/iodev/scancodes.cc (100%) rename {bochs => simulators/bochs}/iodev/scancodes.h (100%) rename {bochs => simulators/bochs}/iodev/scsi_commands.h (100%) rename {bochs => simulators/bochs}/iodev/scsi_device.cc (100%) rename {bochs => simulators/bochs}/iodev/scsi_device.h (100%) rename {bochs => simulators/bochs}/iodev/scsidefs.h (100%) rename {bochs => simulators/bochs}/iodev/scsipt.h (100%) rename {bochs => simulators/bochs}/iodev/serial.cc (100%) rename {bochs => simulators/bochs}/iodev/serial.h (100%) rename {bochs => simulators/bochs}/iodev/serial_raw.cc (100%) rename {bochs => simulators/bochs}/iodev/serial_raw.h (100%) rename {bochs => simulators/bochs}/iodev/slowdown_timer.cc (100%) rename {bochs => simulators/bochs}/iodev/slowdown_timer.h (100%) rename {bochs => simulators/bochs}/iodev/soundlnx.cc (100%) rename {bochs => simulators/bochs}/iodev/soundlnx.h (100%) rename {bochs => simulators/bochs}/iodev/soundmod.cc (100%) rename {bochs => simulators/bochs}/iodev/soundmod.h (100%) rename {bochs => simulators/bochs}/iodev/soundosx.cc (100%) rename {bochs => simulators/bochs}/iodev/soundosx.h (100%) rename {bochs => simulators/bochs}/iodev/soundwin.cc (100%) rename {bochs => simulators/bochs}/iodev/soundwin.h (100%) rename {bochs => simulators/bochs}/iodev/speaker.cc (100%) rename {bochs => simulators/bochs}/iodev/speaker.h (100%) rename {bochs => simulators/bochs}/iodev/svga_cirrus.cc (100%) rename {bochs => simulators/bochs}/iodev/svga_cirrus.h (100%) rename {bochs => simulators/bochs}/iodev/unmapped.cc (100%) rename {bochs => simulators/bochs}/iodev/unmapped.h (100%) rename {bochs => simulators/bochs}/iodev/usb_common.cc (100%) rename {bochs => simulators/bochs}/iodev/usb_common.h (100%) rename {bochs => simulators/bochs}/iodev/usb_hid.cc (100%) rename {bochs => simulators/bochs}/iodev/usb_hid.h (100%) rename {bochs => simulators/bochs}/iodev/usb_hub.cc (100%) rename {bochs => simulators/bochs}/iodev/usb_hub.h (100%) rename {bochs => simulators/bochs}/iodev/usb_msd.cc (100%) rename {bochs => simulators/bochs}/iodev/usb_msd.h (100%) rename {bochs => simulators/bochs}/iodev/usb_ohci.cc (100%) rename {bochs => simulators/bochs}/iodev/usb_ohci.h (100%) rename {bochs => simulators/bochs}/iodev/usb_printer.cc (100%) rename {bochs => simulators/bochs}/iodev/usb_printer.h (100%) rename {bochs => simulators/bochs}/iodev/usb_uhci.cc (100%) rename {bochs => simulators/bochs}/iodev/usb_uhci.h (100%) rename {bochs => simulators/bochs}/iodev/vga.cc (100%) rename {bochs => simulators/bochs}/iodev/vga.h (100%) rename {bochs => simulators/bochs}/iodev/virt_timer.cc (100%) rename {bochs => simulators/bochs}/iodev/virt_timer.h (100%) rename {bochs => simulators/bochs}/iodev/vmware3.cc (100%) rename {bochs => simulators/bochs}/iodev/vmware3.h (100%) rename {bochs => simulators/bochs}/iodev/vmware4.cc (100%) rename {bochs => simulators/bochs}/iodev/vmware4.h (100%) rename {bochs => simulators/bochs}/iodev/vvfat.cc (100%) rename {bochs => simulators/bochs}/iodev/vvfat.h (100%) rename {bochs => simulators/bochs}/load32bitOShack.cc (100%) rename {bochs => simulators/bochs}/logio.cc (100%) rename {bochs => simulators/bochs}/ltdl.c (100%) rename {bochs => simulators/bochs}/ltdl.h (100%) rename {bochs => simulators/bochs}/ltdlconf.h.in (100%) rename {bochs => simulators/bochs}/ltmain.sh (100%) rename {bochs => simulators/bochs}/main.cc (100%) rename {bochs => simulators/bochs}/make-ag++.sh (100%) rename {bochs => simulators/bochs}/memory/Makefile.in (100%) rename {bochs => simulators/bochs}/memory/memory.cc (100%) rename {bochs => simulators/bochs}/memory/memory.h (100%) rename {bochs => simulators/bochs}/memory/misc_mem.cc (100%) rename {bochs => simulators/bochs}/misc/Makefile.in (100%) rename {bochs => simulators/bochs}/misc/bxcommit.c (100%) rename {bochs => simulators/bochs}/misc/bximage.c (100%) rename {bochs => simulators/bochs}/misc/make_cmos_image.cc (100%) rename {bochs => simulators/bochs}/misc/niclist.c (100%) rename {bochs => simulators/bochs}/misc/sb16/sb16ctrl.c (100%) rename {bochs => simulators/bochs}/misc/sb16/sb16ctrl.example (100%) rename {bochs => simulators/bochs}/misc/sb16/sb16ctrl.exe (100%) rename {bochs => simulators/bochs}/misc/spoolpipe.c (100%) rename {bochs => simulators/bochs}/misc/test-access-check.cc (100%) rename {bochs => simulators/bochs}/msrs.def (100%) rename {bochs => simulators/bochs}/osdep.cc (100%) rename {bochs => simulators/bochs}/osdep.h (100%) rename {bochs => simulators/bochs}/param_names.h (100%) rename {bochs => simulators/bochs}/patches/HEADER (100%) rename {bochs => simulators/bochs}/patches/NOTES (100%) rename {bochs => simulators/bochs}/patches/beos-gui-fabo.capture-filter (100%) rename {bochs => simulators/bochs}/patches/beos-gui-fabo.capture-filter.README (100%) rename {bochs => simulators/bochs}/patches/bochs-bios-win32.diff (100%) rename {bochs => simulators/bochs}/patches/patch.beos-gui-fabo (100%) rename {bochs => simulators/bochs}/patches/patch.beos-gui-fabo-template (100%) rename {bochs => simulators/bochs}/patches/patch.cosimulation (100%) rename {bochs => simulators/bochs}/patches/patch.decode-interrupts.gz (100%) rename {bochs => simulators/bochs}/patches/patch.example-override-ask (100%) rename {bochs => simulators/bochs}/patches/patch.example-user-plugin (100%) rename {bochs => simulators/bochs}/patches/patch.fast-dma-cbothamy (100%) rename {bochs => simulators/bochs}/patches/patch.floppy-athiel (100%) rename {bochs => simulators/bochs}/patches/patch.hosttime-port (100%) rename {bochs => simulators/bochs}/patches/patch.marklog (100%) rename {bochs => simulators/bochs}/patches/patch.mingw-resources (100%) rename {bochs => simulators/bochs}/pc_system.cc (100%) rename {bochs => simulators/bochs}/pc_system.h (100%) rename {bochs => simulators/bochs}/plex86-interface.cc (100%) rename {bochs => simulators/bochs}/plex86-interface.h (100%) rename {bochs => simulators/bochs}/plex86/COPYING (100%) rename {bochs => simulators/bochs}/plex86/Makefile.in (100%) rename {bochs => simulators/bochs}/plex86/PERFORMANCE (100%) rename {bochs => simulators/bochs}/plex86/TODO (100%) rename {bochs => simulators/bochs}/plex86/config.h.in (100%) rename {bochs => simulators/bochs}/plex86/configure (100%) rename {bochs => simulators/bochs}/plex86/configure.in (100%) rename {bochs => simulators/bochs}/plex86/descriptor.h (100%) rename {bochs => simulators/bochs}/plex86/kernel/Makefile.in (100%) rename {bochs => simulators/bochs}/plex86/kernel/fault-mon.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/freebsd/Makefile (100%) rename {bochs => simulators/bochs}/plex86/kernel/host-beos.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/host-freebsd.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/host-linux.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/host-netbsd.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/host-null.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/include/descriptor2.h (100%) rename {bochs => simulators/bochs}/plex86/kernel/include/eflags.h (100%) rename {bochs => simulators/bochs}/plex86/kernel/include/guest_context.h (100%) rename {bochs => simulators/bochs}/plex86/kernel/include/monitor.h (100%) rename {bochs => simulators/bochs}/plex86/kernel/include/paging.h (100%) rename {bochs => simulators/bochs}/plex86/kernel/include/tss.h (100%) rename {bochs => simulators/bochs}/plex86/kernel/monitor-host.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/monitor-mon.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/nexus.S (100%) rename {bochs => simulators/bochs}/plex86/kernel/paging-mon.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/panic-mon.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/print-mon.c (100%) rename {bochs => simulators/bochs}/plex86/kernel/util-nexus.c (100%) rename {bochs => simulators/bochs}/plex86/misc/load_module.sh (100%) rename {bochs => simulators/bochs}/plex86/misc/netbsd_post.sh (100%) rename {bochs => simulators/bochs}/plex86/misc/unload_module.sh (100%) rename {bochs => simulators/bochs}/plex86/plex86.h (100%) rename {bochs => simulators/bochs}/plugin.cc (100%) rename {bochs => simulators/bochs}/plugin.h (100%) rename {bochs => simulators/bochs}/win32_enh_dbg.rc (100%) rename {bochs => simulators/bochs}/win32res.rc (100%) rename {bochs => simulators/bochs}/wxbochs.rc (100%) rename {ovp => simulators/ovp}/CMakeLists.txt (93%) rename {ovp => simulators/ovp}/OVPCpu.hpp (99%) rename {ovp => simulators/ovp}/OVPPlatform.cc (95%) rename {ovp => simulators/ovp}/OVPPlatform.hpp (100%) rename {ovp => simulators/ovp}/OVPStatusRegister.hpp (96%) rename {ovp => simulators/ovp}/README (100%) rename {ovp => simulators/ovp}/armmModel/CMakeLists.txt (100%) rename {ovp => simulators/ovp}/armmModel/Makefile (100%) rename {ovp => simulators/ovp}/armmModel/armAttributeEntriesThumb16.h (100%) rename {ovp => simulators/ovp}/armmModel/armAttributeEntriesThumb32.h (100%) rename {ovp => simulators/ovp}/armmModel/armBitMacros.h (100%) rename {ovp => simulators/ovp}/armmModel/armBus.c (100%) rename {ovp => simulators/ovp}/armmModel/armConfig.h (100%) rename {ovp => simulators/ovp}/armmModel/armDebug.h (100%) rename {ovp => simulators/ovp}/armmModel/armDecode.h (100%) rename {ovp => simulators/ovp}/armmModel/armDecodeEntriesThumb16.h (100%) rename {ovp => simulators/ovp}/armmModel/armDecodeEntriesThumb32.h (100%) rename {ovp => simulators/ovp}/armmModel/armDecodeThumb.h (100%) rename {ovp => simulators/ovp}/armmModel/armDecodeTypes.h (100%) rename {ovp => simulators/ovp}/armmModel/armDisassemble.h (100%) rename {ovp => simulators/ovp}/armmModel/armDisassembleFormats.h (100%) rename {ovp => simulators/ovp}/armmModel/armEmit.h (100%) rename {ovp => simulators/ovp}/armmModel/armExceptionTypes.h (100%) rename {ovp => simulators/ovp}/armmModel/armExceptions.h (100%) rename {ovp => simulators/ovp}/armmModel/armFPConstants.h (100%) rename {ovp => simulators/ovp}/armmModel/armFunctions.h (100%) rename {ovp => simulators/ovp}/armmModel/armInfo.c (100%) rename {ovp => simulators/ovp}/armmModel/armMessage.h (100%) rename {ovp => simulators/ovp}/armmModel/armMode.h (100%) rename {ovp => simulators/ovp}/armmModel/armMorph.h (100%) rename {ovp => simulators/ovp}/armmModel/armMorphEntries.h (100%) rename {ovp => simulators/ovp}/armmModel/armMorphFunctions.h (100%) rename {ovp => simulators/ovp}/armmModel/armRegisters.h (100%) rename {ovp => simulators/ovp}/armmModel/armStructure.h (100%) rename {ovp => simulators/ovp}/armmModel/armSys.h (100%) rename {ovp => simulators/ovp}/armmModel/armSysRegisters.h (100%) rename {ovp => simulators/ovp}/armmModel/armTypeRefs.h (100%) rename {ovp => simulators/ovp}/armmModel/armUtils.h (100%) rename {ovp => simulators/ovp}/armmModel/armVFP.h (100%) rename {ovp => simulators/ovp}/armmModel/armVM.h (100%) rename {ovp => simulators/ovp}/armmModel/armVariant.h (100%) rename {ovp => simulators/ovp}/armmModel/armmAttrs.c (100%) rename {ovp => simulators/ovp}/armmModel/armmConfigList.c (100%) rename {ovp => simulators/ovp}/armmModel/armmDebug.c (100%) rename {ovp => simulators/ovp}/armmModel/armmDecode.c (100%) rename {ovp => simulators/ovp}/armmModel/armmDecodeThumb.c (100%) rename {ovp => simulators/ovp}/armmModel/armmDisassemble.c (100%) rename {ovp => simulators/ovp}/armmModel/armmDoc.c (100%) rename {ovp => simulators/ovp}/armmModel/armmDoc.h (100%) rename {ovp => simulators/ovp}/armmModel/armmEmit.c (100%) rename {ovp => simulators/ovp}/armmModel/armmExceptions.c (100%) rename {ovp => simulators/ovp}/armmModel/armmMain.c (100%) rename {ovp => simulators/ovp}/armmModel/armmMorphFunctions.c (100%) rename {ovp => simulators/ovp}/armmModel/armmMorphTable.c (100%) rename {ovp => simulators/ovp}/armmModel/armmParameters.c (100%) rename {ovp => simulators/ovp}/armmModel/armmParameters.h (100%) rename {ovp => simulators/ovp}/armmModel/armmSemiHost.c (100%) rename {ovp => simulators/ovp}/armmModel/armmSys.c (100%) rename {ovp => simulators/ovp}/armmModel/armmUtils.c (100%) rename {ovp => simulators/ovp}/armmModel/armmVFP.c (100%) rename {ovp => simulators/ovp}/armmModel/armmVM.c (100%) rename {ovp => simulators/ovp}/armmModel/export.def (100%) rename {ovp => simulators/ovp}/armmModel/failSALlink.cc (87%) rename {ovp => simulators/ovp}/cortexM3/CMakeLists.txt (80%) rename {ovp => simulators/ovp}/cortexM3/platform/platform.cc (99%) rename {ovp => simulators/ovp}/cortexM3/platform/platform.hpp (100%) rename {ovp => simulators/ovp}/cortexM3/platform/statreg.hpp (100%) rename {ovp => simulators/ovp}/ovpworld.org/mmc/flakyMemory/1.0/model/CMakeLists.txt (82%) rename {ovp => simulators/ovp}/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.cpp (100%) rename {ovp => simulators/ovp}/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.h (100%) rename {ovp => simulators/ovp}/ovpworld.org/mmc/flakyMemory/1.0/model/model.cpp (98%) rename {ovp => simulators/ovp}/setImperas.sh (100%) rename {ovp => simulators/ovp}/statusmsg/CMakeLists.txt (100%) rename {ovp => simulators/ovp}/statusmsg/OVPStatusMessage.proto (100%) rename {core/jobserver/messagedefs => simulators/ovp/statusmsg}/protogen.sh (100%) rename {ovp => simulators/ovp}/test1/CMakeLists.txt (91%) rename {ovp => simulators/ovp}/test1/application.elf (100%) rename {ovp => simulators/ovp}/test1/application/application.c (100%) rename {ovp => simulators/ovp}/test1/platform/beforeInstruction.cpp (100%) rename {ovp => simulators/ovp}/test1/platform/beforeInstruction.hpp (100%) rename {ovp => simulators/ovp}/test1/platform/flakyMemory.cpp (100%) rename {ovp => simulators/ovp}/test1/platform/flakyMemory.hpp (100%) rename {ovp => simulators/ovp}/test1/platform/platform.cpp (100%) create mode 100644 src/CMakeLists.txt create mode 100644 src/core/CMakeLists.txt rename {core => src/core}/Doxyfile.in (100%) create mode 100644 src/core/comm/CMakeLists.txt rename {core/controller => src/core/comm}/ExperimentData.hpp (82%) rename {core/jobserver => src/core/comm}/SocketComm.cc (87%) rename {core/jobserver => src/core/comm}/SocketComm.hpp (85%) rename {core/jobserver/messagedefs => src/core/comm/msg}/CMakeLists.txt (68%) rename {core/jobserver/messagedefs => src/core/comm/msg}/FailControlMessage.proto (100%) rename {ovp/statusmsg => src/core/comm/msg}/protogen.sh (100%) rename {core => src/core}/config/CMakeLists.txt (93%) rename {core => src/core}/config/FailConfig.hpp.in (100%) create mode 100644 src/core/config/VariantConfig.hpp.in create mode 100644 src/core/cpn/CMakeLists.txt rename {core/controller => src/core/cpn}/Campaign.hpp (96%) rename {core/controller => src/core/cpn}/CampaignManager.cc (100%) rename {core/controller => src/core/cpn}/CampaignManager.hpp (94%) rename {core/jobserver => src/core/cpn}/JobServer.cc (77%) rename {core/jobserver => src/core/cpn}/JobServer.hpp (75%) create mode 100644 src/core/cpn/Minion.hpp create mode 100644 src/core/efw/CMakeLists.txt rename {core/controller => src/core/efw}/CoroutineManager.cc (93%) create mode 100644 src/core/efw/CoroutineManager.hpp create mode 100644 src/core/efw/ExperimentFlow.hpp rename {core/jobserver => src/core/efw}/JobClient.cc (51%) rename {core/jobserver => src/core/efw}/JobClient.hpp (83%) rename {core/controller => src/core/sal}/BufferCache.cc (81%) rename {core/controller => src/core/sal}/BufferCache.hpp (90%) rename {core/SAL => src/core/sal}/CMakeLists.txt (62%) rename {core/controller => src/core/sal}/Event.cc (98%) rename {core/controller => src/core/sal}/Event.hpp (99%) rename {core/controller => src/core/sal}/EventList.cc (99%) rename {core/controller => src/core/sal}/EventList.hpp (100%) rename {core/SAL => src/core/sal}/Memory.cc (100%) rename {core/SAL => src/core/sal}/Memory.hpp (100%) rename {core/SAL => src/core/sal}/Register.cc (100%) rename {core/SAL => src/core/sal}/Register.hpp (100%) rename {core/SAL => src/core/sal}/SALConfig.hpp (95%) rename {core/SAL => src/core/sal}/SALInst.hpp (94%) rename {core/SAL => src/core/sal}/SimulatorController.cc (83%) rename {core/SAL => src/core/sal}/SimulatorController.hpp (96%) rename {core/SAL => src/core/sal}/bochs/BochsConfig.hpp (77%) rename {core/SAL => src/core/sal}/bochs/BochsController.cc (94%) create mode 100644 src/core/sal/bochs/BochsController.hpp rename {core/SAL => src/core/sal}/bochs/BochsHelpers.hpp (85%) create mode 100644 src/core/sal/bochs/BochsMemory.hpp rename {core/SAL => src/core/sal}/bochs/BochsNonVerbose.ah (87%) create mode 100644 src/core/sal/bochs/BochsRegister.hpp rename {core/SAL => src/core/sal}/bochs/Breakpoints.ah (85%) rename {core/SAL => src/core/sal}/bochs/Credits.ah (100%) rename {core/SAL => src/core/sal}/bochs/DisableKeyboardInterrupt.ah (77%) rename {core/SAL => src/core/sal}/bochs/DisableLogFunctions.ah (100%) rename {core/SAL => src/core/sal}/bochs/FailBochsGlobals.hpp (93%) rename {core/SAL => src/core/sal}/bochs/FailBochsInit.ah (100%) rename {core/SAL => src/core/sal}/bochs/FireInterrupt.ah (82%) rename {core/SAL => src/core/sal}/bochs/GuestSysCom.ah (88%) rename {core/SAL => src/core/sal}/bochs/IOPortCom.ah (93%) rename {core/SAL => src/core/sal}/bochs/Interrupt.ah (85%) rename {core/SAL => src/core/sal}/bochs/InterruptSuppression.ah (88%) rename {core/SAL => src/core/sal}/bochs/Jump.ah (99%) rename {core/SAL => src/core/sal}/bochs/MemAccess.ah (94%) rename {core/SAL => src/core/sal}/bochs/Reboot.ah (100%) rename {core/SAL => src/core/sal}/bochs/RestoreState.ah (99%) rename {core/SAL => src/core/sal}/bochs/SaveState.ah (95%) rename {core/SAL => src/core/sal}/bochs/Trap.ah (87%) rename {core/SAL => src/core/sal}/ovp/FailOVPInit.ah (93%) rename {core/SAL => src/core/sal}/ovp/OVPConfig.hpp (71%) rename {core/SAL => src/core/sal}/ovp/OVPController.cc (63%) create mode 100644 src/core/sal/ovp/OVPController.hpp create mode 100644 src/core/sal/ovp/OVPMemory.hpp create mode 100644 src/core/sal/ovp/OVPRegister.hpp rename {core => src/core}/util/CMakeLists.txt (59%) rename {core => src/core}/util/Logger.cc (100%) create mode 100644 src/core/util/Logger.hpp rename {core => src/core}/util/MemoryMap.hpp (94%) rename {core => src/core}/util/ProtoStream.cc (95%) create mode 100644 src/core/util/ProtoStream.hpp rename {core => src/core}/util/SynchronizedCounter.cc (69%) create mode 100644 src/core/util/SynchronizedCounter.hpp rename {core => src/core}/util/SynchronizedMap.hpp (83%) rename {core => src/core}/util/SynchronizedQueue.hpp (76%) rename {core => src}/experiments/CMakeLists.txt (78%) rename {core => src}/experiments/checksum-oostubs/CMakeLists.txt (95%) rename {core => src}/experiments/checksum-oostubs/campaign.cc (98%) rename {core => src}/experiments/checksum-oostubs/campaign.hpp (84%) rename {core => src}/experiments/checksum-oostubs/checksum-oostubs.proto (100%) rename {core => src}/experiments/checksum-oostubs/ecc_region.hpp (100%) rename {core => src}/experiments/checksum-oostubs/experiment.cc (96%) rename {core => src}/experiments/checksum-oostubs/experiment.hpp (80%) rename {core => src}/experiments/checksum-oostubs/experimentInfo.hpp (100%) rename {core => src}/experiments/checksum-oostubs/main.cc (66%) rename {core/experiments/coolchecksum => src/experiments/cool-checksum}/CMakeLists.txt (96%) rename {core/experiments/coolchecksum => src/experiments/cool-checksum}/campaign.cc (98%) rename {core/experiments/coolchecksum => src/experiments/cool-checksum}/campaign.hpp (83%) rename {core/experiments/coolchecksum => src/experiments/cool-checksum}/coolchecksum.proto (100%) rename {core/experiments/coolchecksum => src/experiments/cool-checksum}/experiment.cc (97%) rename {core/experiments/coolchecksum => src/experiments/cool-checksum}/experiment.hpp (78%) rename {core/experiments/coolchecksum => src/experiments/cool-checksum}/experimentInfo.hpp (100%) rename {core/experiments/coolchecksum => src/experiments/cool-checksum}/main.cc (67%) rename {core/experiments/FaultCoverageExperiment => src/experiments/fault-coverage}/CMakeLists.txt (90%) rename {core/experiments/FaultCoverageExperiment => src/experiments/fault-coverage}/experiment.cc (97%) rename {core/experiments/FaultCoverageExperiment => src/experiments/fault-coverage}/experiment.hpp (94%) rename {core/experiments/fireinterrupt => src/experiments/fire-interrupt}/CMakeLists.txt (81%) rename {core/experiments/fireinterrupt => src/experiments/fire-interrupt}/bootdisk.img (100%) rename {core/experiments/fireinterrupt => src/experiments/fire-interrupt}/experiment.cc (93%) create mode 100644 src/experiments/fire-interrupt/experiment.hpp rename {core/experiments/hscsimple => src/experiments/hsc-simple}/CMakeLists.txt (83%) rename {core/experiments/hscsimple => src/experiments/hsc-simple}/experiment.cc (91%) create mode 100644 src/experiments/hsc-simple/experiment.hpp rename {core => src}/experiments/instantiate-experiment.ah.in (88%) rename {core/experiments/l4sys => src/experiments/l4-sys}/CMakeLists.txt (96%) rename {core/experiments/l4sys => src/experiments/l4-sys}/campaign.cc (95%) rename {core/experiments/l4sys => src/experiments/l4-sys}/campaign.hpp (81%) rename {core/experiments/l4sys => src/experiments/l4-sys}/experiment.cc (98%) rename {core/experiments/l4sys => src/experiments/l4-sys}/experiment.hpp (88%) rename {core/experiments/l4sys => src/experiments/l4-sys}/experimentInfo.hpp (100%) rename {core/experiments/l4sys => src/experiments/l4-sys}/l4sys.proto (100%) rename {core/experiments/l4sys => src/experiments/l4-sys}/main.cc (67%) rename {core/experiments/MHTestCampaign => src/experiments/mh-test-campaign}/CMakeLists.txt (95%) rename {core/experiments/MHTestCampaign => src/experiments/mh-test-campaign}/MHTest.proto (100%) rename {core/experiments/MHTestCampaign => src/experiments/mh-test-campaign}/MHTestCampaign.cc (96%) rename {core/experiments/MHTestCampaign => src/experiments/mh-test-campaign}/MHTestCampaign.hpp (76%) rename {core/experiments/MHTestCampaign => src/experiments/mh-test-campaign}/experiment.cc (92%) rename {core/experiments/MHTestCampaign => src/experiments/mh-test-campaign}/experiment.hpp (78%) rename {core/experiments/MHTestCampaign => src/experiments/mh-test-campaign}/mhcampaign.cc (72%) rename {core/experiments/TracingTest => src/experiments/tracing-test}/CMakeLists.txt (82%) rename {core/experiments/TracingTest => src/experiments/tracing-test}/experiment.cc (93%) rename {core/experiments/TracingTest => src/experiments/tracing-test}/experiment.hpp (56%) rename {core/experiments/weathermonitor => src/experiments/weather-monitor}/CMakeLists.txt (87%) rename {core/experiments/weathermonitor => src/experiments/weather-monitor}/campaign.cc (94%) create mode 100644 src/experiments/weather-monitor/campaign.hpp rename {core/experiments/weathermonitor => src/experiments/weather-monitor}/experiment.cc (96%) create mode 100644 src/experiments/weather-monitor/experiment.hpp rename {core/experiments/weathermonitor => src/experiments/weather-monitor}/experimentInfo.hpp (100%) rename {core/experiments/weathermonitor => src/experiments/weather-monitor}/experimentInfo.hpp.sh (100%) rename {core/experiments/weathermonitor => src/experiments/weather-monitor}/main.cc (51%) rename {core/experiments/weathermonitor => src/experiments/weather-monitor}/vptr_map.hpp (100%) rename {core/experiments/weathermonitor => src/experiments/weather-monitor}/weathermonitor.proto (100%) rename {core => src}/plugins/CMakeLists.txt (79%) rename {core => src}/plugins/tracing/CMakeLists.txt (100%) rename {core => src}/plugins/tracing/README.txt (100%) rename {core => src}/plugins/tracing/TracingPlugin.cc (96%) rename {core => src}/plugins/tracing/TracingPlugin.hpp (97%) rename {core => src}/plugins/tracing/dump-trace.py (100%) rename {core => src}/plugins/tracing/trace.proto (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1181a107..63188366 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ if(BUILD_OVP) else(BUILD_OVP) message(STATUS "[${PROJECT_NAME}] Building Bochs variant...") ## add necessary additional header search paths. - add_definitions(-I${CMAKE_SOURCE_DIR}/bochs/instrument/stubs/ -I${CMAKE_SOURCE_DIR}/bochs/) + add_definitions(-I${CMAKE_SOURCE_DIR}/simulators/bochs/instrument/stubs/ -I${CMAKE_SOURCE_DIR}/simulators/bochs) SET(VARIANT bochs) endif(BUILD_OVP) @@ -40,11 +40,16 @@ set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") ## Tell the linker where to find the libfail.a link_directories("${LIBRARY_OUTPUT_PATH}") -## Add CMakeLists from subdirectories (at the moment only core) -add_subdirectory(core) +# Add "simulators"-directory to the include path. This allows +# us to use simulator-specific headers in a comfortable way. +include_directories(${CMAKE_BINARY_DIR}/src/core) +# FIXME: this should be in src/core/CMakeLists.txt but actually doesn't work + +## Add CMakeLists from subdirectories: +add_subdirectory(src) if(BUILD_OVP) - add_subdirectory(ovp) + add_subdirectory(simulators/ovp) else(BUILD_OVP) endif(BUILD_OVP) @@ -63,3 +68,9 @@ endif(BUILD_OVP) # BUILD_IN_SOURCE 1 # PREFIX ${BOCHS_PREFIX_DIR} #) +# +#message(STATUS "Include directories are:") +#get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) +#foreach(dir ${dirs}) +# message(STATUS " ${dir}") +#endforeach(dir) diff --git a/cmake/compilerconfig.cmake b/cmake/compilerconfig.cmake index a8b1a3d4..63ca8599 100644 --- a/cmake/compilerconfig.cmake +++ b/cmake/compilerconfig.cmake @@ -31,7 +31,7 @@ message(STATUS "[${PROJECT_NAME}] Compiler: ${CMAKE_C_COMPILER}/${CMAKE_CXX_COMP #### Add some custom targets for the autoconf-based Bochs if(BUILD_BOCHS) - set(bochs_src_dir ${CMAKE_CURRENT_SOURCE_DIR}/bochs ) + set(bochs_src_dir ${CMAKE_CURRENT_SOURCE_DIR}/simulators/bochs ) add_custom_target( bochsclean COMMAND +make -C ${bochs_src_dir} clean @@ -44,14 +44,14 @@ if(BUILD_BOCHS) ) add_custom_target( bochs - COMMAND +make -C ${bochs_src_dir} CXX=\"ag++ -p ${CMAKE_SOURCE_DIR} -I${CMAKE_SOURCE_DIR}/core -I${CMAKE_BINARY_DIR}/core --real-instances --Xcompiler\" LIBTOOL=\"/bin/sh ./libtool --tag=CXX\" + COMMAND +make -C ${bochs_src_dir} CXX=\"ag++ -p ${CMAKE_SOURCE_DIR} -I${CMAKE_SOURCE_DIR}/src/core -I${CMAKE_BINARY_DIR}/src/core --real-instances --Xcompiler\" LIBTOOL=\"/bin/sh ./libtool --tag=CXX\" COMMENT "[${PROJECT_NAME}] Building Bochs" ) add_dependencies(bochs fail) add_custom_target( bochsinstall - COMMAND +make -C ${bochs_src_dir} CXX=\"ag++ -p ${CMAKE_SOURCE_DIR} -I${CMAKE_SOURCE_DIR}/core -I${CMAKE_BINARY_DIR}/core --real-instances --Xcompiler\" LIBTOOL=\"/bin/sh ./libtool --tag=CXX\" install + COMMAND +make -C ${bochs_src_dir} CXX=\"ag++ -p ${CMAKE_SOURCE_DIR} -I${CMAKE_SOURCE_DIR}/src/core -I${CMAKE_BINARY_DIR}/src/core --real-instances --Xcompiler\" LIBTOOL=\"/bin/sh ./libtool --tag=CXX\" install COMMENT "[${PROJECT_NAME}] Installing Bochs..." ) diff --git a/cmake/config_failbochs.sh.in b/cmake/config_failbochs.sh.in index e6920b46..7cbf7693 100755 --- a/cmake/config_failbochs.sh.in +++ b/cmake/config_failbochs.sh.in @@ -15,5 +15,5 @@ if [ ! -d "$PREFIX_DIR" ]; then fi -./configure CXX="ag++ -p $SOURCE_DIR -I$SOURCE_DIR/core -I"$BINARY_DIR"/core --real-instances --Xcompiler" LIBTOOL="/bin/sh ./libtool --tag=CXX" --prefix=$PREFIX_DIR --enable-{a20-pin,x86-64,cpu-level=6,ne2000,acpi,pci,usb,repeat-speedups,trace-cache,fast-function-calls,host-specific-asms,disasm,all-optimizations,readline,clgd54xx,fpu,vmx=2,monitor-mwait,cdrom,sb16=linux,gdb-stub} --with-all-libs +./configure CXX="ag++ -p $SOURCE_DIR -I$SOURCE_DIR/src -I"$BINARY_DIR"/src --real-instances --Xcompiler" LIBTOOL="/bin/sh ./libtool --tag=CXX" --prefix=$PREFIX_DIR --enable-{a20-pin,x86-64,cpu-level=6,ne2000,acpi,pci,usb,repeat-speedups,trace-cache,fast-function-calls,host-specific-asms,disasm,all-optimizations,readline,clgd54xx,fpu,vmx=2,monitor-mwait,cdrom,sb16=linux,gdb-stub} --with-all-libs diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt deleted file mode 100644 index 059e661d..00000000 --- a/core/CMakeLists.txt +++ /dev/null @@ -1,64 +0,0 @@ -### Setup search paths for headers ## -include_directories(${CMAKE_CURRENT_BINARY_DIR}) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}) - -### Add Boost and Threads -find_package(Boost 1.42 COMPONENTS thread REQUIRED) -find_package(Threads) -include_directories(${Boost_INCLUDE_DIRS}) -link_directories(${Boost_LIBRARY_DIRS}) - -### Setup doxygen documentation -# TODO put into helpers.cmake -find_package(Doxygen) -if(DOXYGEN_FOUND) -# Using a .in file means we can use CMake to insert project settings -# into the doxyfile. For example, CMake will replace @PROJECT_NAME@ in -# a configured file with the CMake PROJECT_NAME variable's value. -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in - ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY} -) - -## call make doc to generate documentation -add_custom_target( doc - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "[${PROJECT_NAME}] Generating fail* documentation with Doxygen" VERBATIM -) -endif(DOXYGEN_FOUND) - -## Add CMakeLists from subdirectories ## -# The autogenerated header files -add_subdirectory(config) - -# fail* targets -add_subdirectory(jobserver) -add_subdirectory(controller) -add_subdirectory(SAL) -add_subdirectory(util) - -# Here we add all user-defined experiments (which fills the target list) -add_subdirectory(experiments/) -message(STATUS "[${PROJECT_NAME}] chosen experiment targets:") -foreach(experiment_name ${EXPERIMENTS_ACTIVATED}) - message(STATUS "[${PROJECT_NAME}] -> ${experiment_name}") -endforeach(experiment_name) - -# Here we add activated plugins -add_subdirectory(plugins/) -message(STATUS "[${PROJECT_NAME}] chosen plugin targets:") -foreach(plugin_name ${PLUGINS_ACTIVATED}) - message(STATUS "[${PROJECT_NAME}] -> ${plugin_name}") -endforeach(plugin_name) - -## Merge all resulting fail* libs into a single libfail.a and copy it into the fail source directory -add_custom_target(fail - COMMAND ${CMAKE_SOURCE_DIR}/cmake/mergelib.sh ${LIBRARY_OUTPUT_PATH} && ${CMAKE_COMMAND} -E copy ${LIBRARY_OUTPUT_PATH}/libfail.a ${CMAKE_SOURCE_DIR}/core -) -## Setup build dependencies of the fail* lib -## -> the fail* targets and user defined experiment targets -add_dependencies(fail SAL util controller jobserver protomessages ${EXPERIMENTS_ACTIVATED} ${PLUGINS_ACTIVATED}) - -# Let make clean also delete libfail.a -set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${LIBRARY_OUTPUT_PATH}/libfail.a) diff --git a/core/SAL/bochs/BochsController.hpp b/core/SAL/bochs/BochsController.hpp deleted file mode 100644 index e8e40f16..00000000 --- a/core/SAL/bochs/BochsController.hpp +++ /dev/null @@ -1,197 +0,0 @@ -#ifndef __BOCHS_CONTROLLER_HPP__ - #define __BOCHS_CONTROLLER_HPP__ - -#define DEBUG - -#include -#include -#include -#include -#include - -#include "FailBochsGlobals.hpp" - -#include "../SimulatorController.hpp" -#include "../../controller/Event.hpp" - -#include "../../../bochs/bochs.h" -#include "../../../bochs/cpu/cpu.h" -#include "../../../bochs/config.h" -#include "../../../bochs/iodev/iodev.h" -#include "../../../bochs/pc_system.h" - -namespace fail { - -class ExperimentFlow; - -/** - * \class BochsController - * Bochs-specific implementation of a SimulatorController. - */ -class BochsController : public SimulatorController -{ - private: - ExperimentFlow* m_CurrFlow; //!< Stores the current flow for save/restore-operations - #ifdef DEBUG - unsigned m_Regularity; - unsigned m_Counter; - std::ostream* m_pDest; - #endif - /** - * Static internal event handler for TimerEvents. This static function is - * called when a previously registered (Bochs) timer triggers. This function - * searches for the provided TimerEvent object within the EventList and - * fires such an event by calling \c fireActiveEvents(). - * @param thisPtr a pointer to the TimerEvent-object triggered - * - * FIXME: Due to Bochs internal timer and ips-configuration related stuff, - * the simulator sometimes panics with "keyboard error:21" (see line - * 1777 in bios/rombios.c, function keyboard_init()) if a TimerEvent - * is added *before* the bios has been loaded and initialized. To - * reproduce this error, try adding a TimerEvent as the initial step - * in your experiment code and wait for it (addEventAndWait()). - */ - static void m_onTimerTrigger(void *thisPtr); - /** - * Registers a timer in the Bochs simulator. This timer fires \a TimerEvents - * to inform the corresponding experiment-flow. Note that the number of timers - * (in Bochs) is limited to \c BX_MAX_TIMERS (defaults to 64 in v2.4.6). - * @param pev a pointer to the (experiment flow-) allocated TimerEvent object, - * providing all required information to start the time, e.g. the - * timeout value. - * @return \c The unique id of the timer recently created. This id is carried - * along with the TimerEvent, @see getId(). On error, -1 is returned - * (e.g. because a timer with the same id is already existing) - */ - timer_id_t m_registerTimer(TimerEvent* pev); - /** - * Deletes a timer. No further events will be triggered by the timer. - * @param pev a pointer to the TimerEvent-object to be removed - * @return \c true if the timer with \a pev->getId() has been removed - * successfully, \c false otherwise - */ - bool m_unregisterTimer(TimerEvent* pev); - public: - // Initialize the controller. - BochsController(); - ~BochsController(); - /* ******************************************************************** - * Standard Event Handler API: - * ********************************************************************/ - /** - * Instruction pointer modification handler. This method is called (from - * the Breakpoints aspect) every time when the Bochs-internal IP changes. - * @param instrPtr the new instruction pointer - * @param address_space the address space the CPU is currently in - */ - void onInstrPtrChanged(address_t instrPtr, address_t address_space); - /** - * I/O port communication handler. This method is called (from - * the IOPortCom aspect) every time when Bochs performs a port I/O operation. - * @param data the data transmitted - * @param port the port it was transmitted on - * @param out true if the I/O traffic has been outbound, false otherwise - */ - void onIOPortEvent(unsigned char data, unsigned port, bool out); - /** - * This method is called when an experiment flow adds a new event by - * calling \c simulator.addEvent(pev) or \c simulator.addEventAndWait(pev). - * More specifically, the event will be added to the event-list first - * (buffer-list, to be precise) and then this event handler is called. - * @param pev the event which has been added - * @return You should return \c true to continue and \c false to prevent - * the addition of the event \a pev. - */ - bool onEventAddition(BaseEvent* pev); - /** - * This method is called when an experiment flow removes an event from - * the event-management by calling \c removeEvent(prev), \c clearEvents() - * or by deleting a complete flow (\c removeFlow). More specifically, - * this event handler will be called *before* the event is actually deleted. - * @param pev the event to be deleted when returning from the event handler - */ - void onEventDeletion(BaseEvent* pev); - /** - * This method is called when an previously added event is about to be - * triggered by the simulator-backend. More specifically, this event handler - * will be called *before* the event is actually triggered, i.e. before the - * corresponding coroutine is toggled. - * @param pev the event to be triggered when returning from the event handler - */ - void onEventTrigger(BaseEvent* pev); - /* ******************************************************************** - * Simulator Controller & Access API: - * ********************************************************************/ - /** - * Save simulator state. - * @param path Location to store state information - */ - void save(const std::string& path); - /** - * Save finished: Callback from Simulator - */ - void saveDone(); - /** - * Restore simulator state. Clears all Events. - * @param path Location to previously saved state information - */ - void restore(const std::string& path); - /** - * Restore finished: Callback from Simulator - */ - void restoreDone(); - /** - * Reboot simulator. Clears all Events. - */ - void reboot(); - /** - * Reboot finished: Callback from Simulator - */ - void rebootDone(); - /** - * Fire an interrupt. - * @param irq Interrupt to be fired - */ - void fireInterrupt(unsigned irq); - /** - * Fire done: Callback from Simulator - */ - void fireInterruptDone(); - #ifdef DEBUG - /** - * Enables instruction pointer debugging output. - * @param regularity the output regularity; 1 to display every - * instruction pointer, 0 to disable - * @param dest specifies the output destition; defaults to \c std::cout - */ - void dbgEnableInstrPtrOutput(unsigned regularity, std::ostream* dest = &std::cout); - #endif - /* ******************************************************************** - * BochsController-specific (not implemented in SimulatorController!): - * ********************************************************************/ - /** - * Retrieves the textual description (mnemonic) for the current - * instruction. The format of the returned string is Bochs-specific. - * @return the mnemonic of the current instruction whose address - * is given by \c Register::getInstructionPointer(). On - * errors, the returned string is empty - */ - const std::string& getMnemonic() const - { - static std::string str; - bxICacheEntry_c* pEntry = BX_CPU(0)->getICacheEntry(); - assert(pEntry != NULL && "FATAL ERROR: Bochs internal function returned NULL (not expected)!"); - bxInstruction_c* pInstr = pEntry->i; - assert(pInstr != NULL && "FATAL ERROR: Bochs internal member was NULL (not expected)!"); - const char* pszName = get_bx_opcode_name(pInstr->getIaOpcode()); - if (pszName != NULL) - str = pszName; - else - str.clear(); - return str; - } -}; - -} // end-of-namespace: fail - -#endif // __BOCHS_CONTROLLER_HPP__ diff --git a/core/SAL/bochs/BochsMemory.hpp b/core/SAL/bochs/BochsMemory.hpp deleted file mode 100644 index 176831b5..00000000 --- a/core/SAL/bochs/BochsMemory.hpp +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef __BOCHS_MEMORY_HPP__ - #define __BOCHS_MEMORY_HPP__ - -#include "../Memory.hpp" - -namespace fail { - -/** - * \class BochsMemoryManager - * Represents a concrete implemenation of the abstract - * MemoryManager to provide access to Bochs' memory pool. - */ -class BochsMemoryManager : public MemoryManager -{ - public: - /** - * Constructs a new MemoryManager object and initializes - * it's attributes appropriately. - */ - BochsMemoryManager() : MemoryManager() { } - /** - * Retrieves the size of the available simulated memory. - * @return the size of the memory pool in bytes - */ - size_t getPoolSize() const - { - return (static_cast(BX_MEM(0)->get_memory_len())); - } - /** - * Retrieves the starting address of the host memory. This is the - * first valid address in memory. - * @return the starting address - */ - host_address_t getStartAddr() const - { - return (0); - } - /** - * Retrieves the byte at address \a addr in the memory. - * @param addr The guest address where the byte is located. - * The address is expected to be valid. - * @return the byte at \a addr - */ - byte_t getByte(guest_address_t addr) - { - host_address_t haddr = guestToHost(addr); - assert(haddr != (host_address_t)ADDR_INV && "FATAL ERROR: Invalid guest address provided!"); - return (static_cast(*reinterpret_cast(haddr))); - } - /** - * Retrieves \a cnt bytes at address \a addr from the memory. - * @param addr The guest address where the bytes are located. - * The address is expected to be valid. - * @param cnt The number of bytes to be retrieved. \a addr + \a cnt - * is expected to not exceed the memory limit. - * @param dest Pointer to destination buffer to copy the data to. - */ - void getBytes(guest_address_t addr, size_t cnt, void *dest) - { - char *d = static_cast(dest); - for (size_t i = 0; i < cnt; ++i) { - d[i] = getByte(addr + i); - } - } - /** - * Writes the byte \a data to memory. - * @param addr The guest address to write. - * The address is expected to be valid. - * @param data The new byte to write - */ - void setByte(guest_address_t addr, byte_t data) - { - host_address_t haddr = guestToHost(addr); - assert(haddr != (host_address_t)ADDR_INV && - "FATAL ERROR: Invalid guest address provided!"); - *reinterpret_cast(haddr) = data; - } - /** - * Copies data to memory. - * @param addr The guest address to write. - * The address is expected to be valid. - * @param cnt The number of bytes to be retrieved. \a addr + \a cnt - * is expected to not exceed the memory limit. - * @param src Pointer to data to be copied. - */ - void setBytes(guest_address_t addr, size_t cnt, void const *src) - { - char const *s = static_cast(src); - for (size_t i = 0; i < cnt; ++i) { - setByte(addr + i, s[i]); - } - } - /** - * Transforms the guest address \a addr to a host address. - * @param addr The (logical) guest address to be transformed - * @return the transformed (host) address or \c ADDR_INV on errors - */ - host_address_t guestToHost(guest_address_t addr) - { - const unsigned SEGMENT_SELECTOR_IDX = 2; // always the code segment - const bx_address logicalAddr = static_cast(addr); // offset within the segment - // Get the linear address: - Bit32u linearAddr = BX_CPU(0)->get_laddr32(SEGMENT_SELECTOR_IDX/*seg*/, logicalAddr/*offset*/); - // Map the linear address to the physical address: - bx_phy_address physicalAddr; - bx_bool fValid = BX_CPU(0)->dbg_xlate_linear2phy(linearAddr, (bx_phy_address*)&physicalAddr); - // Determine the *host* address of the physical address: - Bit8u* hostAddr = BX_MEM(0)->getHostMemAddr(BX_CPU(0), physicalAddr, BX_READ); - // Now, hostAddr contains the "final" address - if(!fValid) - return ((host_address_t)ADDR_INV); // error - else - return (reinterpret_cast(hostAddr)); // okay - } -}; - -} // end-of-namespace: fail - -#endif // __BOCHS_MEMORY_HPP__ diff --git a/core/SAL/bochs/BochsRegister.hpp b/core/SAL/bochs/BochsRegister.hpp deleted file mode 100644 index 9a74bb4e..00000000 --- a/core/SAL/bochs/BochsRegister.hpp +++ /dev/null @@ -1,245 +0,0 @@ -#ifndef __BOCHS_REGISTER_HPP__ - #define __BOCHS_REGISTER_HPP__ - -#include "../Register.hpp" -#include "../../../bochs/bochs.h" - -#include -#include - -namespace fail { - -/** - * \class BochsRegister - * Bochs-specific implementation of x86 registers. - */ -class BochsRegister : public Register -{ - protected: - regdata_t* m_pData; - public: - /** - * Constructs a new register object. - * @param id the global unique id - * @param width width of the register (8, 16, 32 or 64 bit should - * suffice) - * @param link pointer to bochs interal register memory - * @param t type of the register - */ - BochsRegister(unsigned int id, regwidth_t width, regdata_t* link, RegisterType t) - : Register(id, t, width), m_pData(link) { } - /** - * Retrieves the data of the register. - * @return the current register data - */ - regdata_t getData() { return (*m_pData); } - /** - * Sets the content of the register. - * @param data the new register data to be written - */ - void setData(regdata_t data) { *m_pData = data; } -}; - -/** - * \class BxGPReg - * Bochs-specific implementation of x86 general purpose (GP) registers. - */ -class BxGPReg : public BochsRegister -{ - public: - /** - * Constructs a new general purpose register. - * @param id the global unique id - * @param width width of the register (8, 16, 32 or 64 bit should - * suffice) - * @param link pointer to bochs interal register memory - */ - BxGPReg(unsigned int id, regwidth_t width, regdata_t* link) - : BochsRegister(id, width, link, RT_GP) { } -}; - -/** - * \enum GPRegisterId - * Symbolic identifier to access Bochs' general purpose register - * (within the corresponding GP set), e.g. - * \code - * // Print %eax register data: - * BochsController bc(...); - * cout << bc.getRegisterManager().getSetOfType(RT_GP) - * .getRegister(RID_EAX)->getData(); - * \endcode - */ -enum GPRegisterId -{ - #if BX_SUPPORT_X86_64 // 64 bit register id's: - RID_RAX = 0, RID_RCX, RID_RDX, RID_RBX, RID_RSP, RID_RBP, RID_RSI, RID_RDI, - RID_R8, RID_R9, RID_R10, RID_R11, RID_R12, RID_R13, RID_R14, RID_R15, - #else // 32 bit register id's: - RID_EAX = 0, RID_ECX, RID_EDX, RID_EBX, RID_ESP, RID_EBP, RID_ESI, RID_EDI, - #endif - RID_CAX = 0, RID_CCX, RID_CDX, RID_CBX, RID_CSP, RID_CBP, RID_CSI, RID_CDI, - RID_LAST_GP_ID -}; - -/** - * \enum PCRegisterId - * Symbolic identifier to access Bochs' program counter register. - */ -enum PCRegisterId { RID_PC = RID_LAST_GP_ID, RID_LAST_PC_ID }; - -/** - * \enum FlagsRegisterId - * Symbolic identifier to access Bochs' flags register. - */ -enum FlagsRegisterId { RID_FLAGS = RID_LAST_PC_ID }; - -/** - * \class BxPCReg - * Bochs-specific implementation of the x86 program counter register. - */ -class BxPCReg : public BochsRegister -{ - public: - /** - * Constructs a new program counter register. - * @param id the global unique id - * @param width width of the register (8, 16, 32 or 64 bit should - * suffice) - * @param link pointer to bochs internal register memory - */ - BxPCReg(unsigned int id, regwidth_t width, regdata_t* link) - : BochsRegister(id, width, link, RT_PC) { } -}; - -/** - * \class BxFlagsReg - * Bochs-specific implementation of the FLAGS status register. - */ -class BxFlagsReg : public BochsRegister -{ - public: - /** - * Constructs a new FLAGS status register. The refenced FLAGS are - * allocated as follows: - * -------------------------------------------------- - * 31|30|29|28| 27|26|25|24| 23|22|21|20| 19|18|17|16 - * ==|==|=====| ==|==|==|==| ==|==|==|==| ==|==|==|== - * 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|ID|VP| VF|AC|VM|RF - * - * 15|14|13|12| 11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0 - * ==|==|=====| ==|==|==|==| ==|==|==|==| ==|==|==|== - * 0|NT| IOPL| OF|DF|IF|TF| SF|ZF| 0|AF| 0|PF| 1|CF - * -------------------------------------------------- - * @param id the global unique id - * @param link pointer to bochs internal register memory - */ - BxFlagsReg(unsigned int id, regdata_t* link) - : BochsRegister(id, 32, link, RT_ST) { } - - /** - * Returns \c true if the corresponding flag is set, or \c false - * otherwise. - */ - bool getCarryFlag() const { return (BX_CPU(0)->get_CF()); } - bool getParityFlag() const { return (BX_CPU(0)->get_PF()); } - bool getZeroFlag() const { return (BX_CPU(0)->get_ZF()); } - bool getSignFlag() const { return (BX_CPU(0)->get_SF()); } - bool getOverflowFlag() const { return (BX_CPU(0)->get_OF()); } - - bool getTrapFlag() const { return (BX_CPU(0)->get_TF()); } - bool getInterruptFlag() const { return (BX_CPU(0)->get_IF()); } - bool getDirectionFlag() const { return (BX_CPU(0)->get_DF()); } - unsigned getIOPrivilegeLevel() const { return (BX_CPU(0)->get_IOPL()); } - bool getNestedTaskFlag() const { return (BX_CPU(0)->get_NT()); } - bool getResumeFlag() const { return (BX_CPU(0)->get_RF()); } - bool getVMFlag() const { return (BX_CPU(0)->get_VM()); } - bool getAlignmentCheckFlag() const { return (BX_CPU(0)->get_AC()); } - bool getVInterruptFlag() const { return (BX_CPU(0)->get_VIF()); } - bool getVInterruptPendingFlag() const { return (BX_CPU(0)->get_VIP()); } - bool getIdentificationFlag() const { return (BX_CPU(0)->get_ID()); } - - /** - * Sets/resets various status FLAGS. - */ - void setCarryFlag(bool bit) { BX_CPU(0)->set_CF(bit); } - void setParityFlag(bool bit) { BX_CPU(0)->set_PF(bit); } - void setZeroFlag(bool bit) { BX_CPU(0)->set_ZF(bit); } - void setSignFlag(bool bit) { BX_CPU(0)->set_SF(bit); } - void setOverflowFlag(bool bit) { BX_CPU(0)->set_OF(bit); } - - void setTrapFlag(bool bit) { BX_CPU(0)->set_TF(bit); } - void setInterruptFlag(bool bit) { BX_CPU(0)->set_IF(bit); } - void setDirectionFlag(bool bit) { BX_CPU(0)->set_DF(bit); } - void setIOPrivilegeLevel(unsigned lvl) { BX_CPU(0)->set_IOPL(lvl); } - void setNestedTaskFlag(bool bit) { BX_CPU(0)->set_NT(bit); } - void setResumeFlag(bool bit) { BX_CPU(0)->set_RF(bit); } - void setVMFlag(bool bit) { BX_CPU(0)->set_VM(bit); } - void setAlignmentCheckFlag(bool bit) { BX_CPU(0)->set_AC(bit); } - void setVInterruptFlag(bool bit) { BX_CPU(0)->set_VIF(bit); } - void setVInterruptPendingFlag(bool bit) { BX_CPU(0)->set_VIP(bit); } - void setIdentificationFlag(bool bit) { BX_CPU(0)->set_ID(bit); } - - /** - * Sets the content of the status register. - * @param data the new register data to be written; note that only the - * 32 lower bits are used (bits 32-63 are ignored in 64 bit mode) - */ - void setData(regdata_t data) - { - #ifdef BX_SUPPORT_X86_64 - // We are in 64 bit mode: Just assign the lower 32 bits! - (*m_pData) = ((*m_pData) & 0xFFFFFFFF00000000ULL) | - (data & 0xFFFFFFFFULL); - #else - *m_pData = data; - #endif - } -}; - -/** - * \class BochsRegister - * Bochs-specific implementation of the RegisterManager. - */ -class BochsRegisterManager : public RegisterManager -{ - public: - /** - * Returns the current instruction pointer. - * @return the current eip - */ - address_t getInstructionPointer() - { - return (static_cast( - getSetOfType(RT_PC)->first()->getData() - )); - } - /** - * Retruns the top address of the stack. - * @return the starting address of the stack - */ - address_t getStackPointer() - { - #if BX_SUPPORT_X86_64 - return (static_cast(getRegister(RID_RSP)->getData())); - #else - return (static_cast(getRegister(RID_ESP)->getData())); - #endif - } - /** - * Retrieves the base ptr (holding the address of the - * current stack frame). - * @return the base pointer - */ - address_t getBasePointer() - { - #if BX_SUPPORT_X86_64 - return (static_cast(getRegister(RID_RBP)->getData())); - #else - return (static_cast(getRegister(RID_EBP)->getData())); - #endif - } -}; - -} // end-of-namespace: fail - -#endif // __BOCHS_REGISTER_HPP__ diff --git a/core/SAL/ovp/OVPController.hpp b/core/SAL/ovp/OVPController.hpp deleted file mode 100644 index 5faf10f3..00000000 --- a/core/SAL/ovp/OVPController.hpp +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef __OVP_CONTROLLER_HPP__ - #define __OVP_CONTROLLER_HPP__ - -#include -#include -#include -#include - -#include "../SimulatorController.hpp" -#include "../../controller/Event.hpp" -#include "../../../ovp/OVPPlatform.hpp" -#include "../Register.hpp" - -extern OVPPlatform ovpplatform; - -namespace fail { - -/** - * \class OVPController - * OVP-specific implementation of a SimulatorController. - */ -class OVPController : public SimulatorController -{ - private: - //FIXME: This should be obsolete now... - //UniformRegisterSet *set; //(RT_GP); - //UniformRegisterSet *setStatus;//(RT_ST); - //UniformRegisterSet *setPC;//(RT_PC); - - // (FIXME: perhaps this should be declared as a static member) - unsigned int m_currentRegId; - // NOTE: Constants (such as GPRegisterId in SAL/bochs/BochsRegister.hpp) - // are much easier to read... - public: - // Initialize the controller. - OVPController(); - virtual ~OVPController(); - virtual void onInstrPtrChanged(address_t instrPtr); - /** - * Save simulator state. - * @param path Location to store state information - */ - virtual void save(const std::string& path); - /** - * Restore simulator state. - * @param path Location to previously saved state information - */ - virtual void restore(const std::string& path); - /** - * Reboot simulator. - */ - virtual void reboot(); - /** - * Returns the current instruction pointer. - * @return the current eip - */ - void makeGPRegister(int, void*, const std::string&); - void makeSTRegister(Register *, const std::string&); - void makePCRegister(int, void*, const std::string&); - - //DELETE-ME:This should be obsolete now... - /** - * Due to empty RegisterSets are not allowed, OVP platform - * must tell OVPController when it is finished - */ - //void finishedRegisterCreation(); -}; - -} - -#endif // __OVP_CONTROLLER_HPP__ diff --git a/core/SAL/ovp/OVPMemory.hpp b/core/SAL/ovp/OVPMemory.hpp deleted file mode 100644 index 900318c6..00000000 --- a/core/SAL/ovp/OVPMemory.hpp +++ /dev/null @@ -1,92 +0,0 @@ -#ifndef __OVP_MEMORY_HPP__ - #define __OVP_MEMORY_HPP__ - -#include "../Memory.hpp" - -namespace fail { - -/** - * \class OVPMemoryManager - * Represents a concrete implemenation of the abstract - * MemoryManager to provide access to OVP's memory pool. - */ -class OVPMemoryManager : public MemoryManager -{ - public: - /** - * Constructs a new MemoryManager object and initializes - * it's attributes appropriately. - */ - OVPMemoryManager() : MemoryManager() { } - /** - * Retrieves the size of the available simulated memory. - * @return the size of the memory pool in bytes - */ - size_t getPoolSize() const - { - return 0; - } - /** - * Retrieves the starting address of the host memory. This is the - * first valid address in memory. - * @return the starting address - */ - host_address_t getStartAddr() const - { - return (0); - } - /** - * Retrieves the byte at address \a addr in the memory. - * @param addr The guest address where the byte is located. - * The address is expected to be valid. - * @return the byte at \a addr - */ - byte_t getByte(guest_address_t addr) - { - return (0); - } - /** - * Retrieves \a cnt bytes at address \a addr in the memory. - * @param addr The guest address where the bytes are located. - * The address is expected to be valid. - * @param cnt the number of bytes to be retrieved. \a addr + \a cnt - * is expected to not exceed the memory limit. - * @param dest Pointer to destination buffer to copy the data to. - */ - void getBytes(guest_address_t addr, size_t cnt, void *dest) - { - } - /** - * Writes the byte \a data to memory. - * @param addr The guest address to write. - * The address is expected to be valid. - * @param data The new byte to write - */ - void setByte(guest_address_t addr, byte_t data) - { - } - /** - * Copies data to memory. - * @param addr The guest address to write. - * The address is expected to be valid. - * @param cnt The number of bytes to be retrieved. \a addr + \a cnt - * is expected to not exceed the memory limit. - * @param src Pointer to data to be copied. - */ - void setBytes(guest_address_t addr, size_t cnt, void const *src) - { - } - /** - * Transforms the guest address \a addr to a host address. - * @param addr The (logical) guest address to be transformed - * @return the transformed (host) address or \c ADDR_INV on errors - */ - host_address_t guestToHost(guest_address_t addr) - { - return (0); - } -}; - -} - -#endif // __OVP_MEMORY_HPP__ diff --git a/core/SAL/ovp/OVPRegister.hpp b/core/SAL/ovp/OVPRegister.hpp deleted file mode 100644 index f5655f14..00000000 --- a/core/SAL/ovp/OVPRegister.hpp +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef __OVP_REGISTER_HPP__ - #define __OVP_REGISTER_HPP__ - -#include "../Register.hpp" -#include "../../../ovp/OVPPlatform.hpp" -//#include "../../../ovp/OVPStatusRegister.hpp" - -extern OVPPlatform ovpplatform; - -namespace fail { - -/** - * \class OVPRegister - * OVP-specific implementation of x86 registers. - */ -class OVPRegister : public Register -{ - private: - void *reg; - - public: - /** - * Constructs a new register object. - * @param id the unique id of this register (simulator specific) - * @param width width of the register (8, 16, 32 or 64 bit should suffice) - * @param link pointer to bochs internal register memory - * @param t type of the register - */ - OVPRegister(unsigned int id, regwidth_t width, void* link, RegisterType t) - : Register(id, t, width) { - reg = link; - } - /** - * Retrieves the data of the register. - * @return the current register data - */ - regdata_t getData() { return ovpplatform.getRegisterData(reg); } - /** - * Sets the content of the register. - * @param data the new register data to be written - */ - void setData(regdata_t data) { ovpplatform.setRegisterData(reg, data); } -}; - -/** - * \class OVPRegister - * OVP-specific implementation of the RegisterManager. - */ -class OVPRegisterManager : public RegisterManager -{ - public: - /** - * Returns the current instruction pointer. - * @return the current eip - */ - virtual address_t getInstructionPointer() - { - return ovpplatform.getPC(); - } - /** - * Retruns the top address of the stack. - * @return the starting address of the stack - */ - virtual address_t getStackPointer() - { - return ovpplatform.getSP(); - } - /** - * Retrieves the base ptr (holding the address of the - * current stack frame). - * @return the base pointer - */ - virtual address_t getBasePointer() - { - return 0; - } -}; - -} - -#endif // __OVP_REGISTER_HPP__ diff --git a/core/config/variant_config.hpp.in b/core/config/variant_config.hpp.in deleted file mode 100644 index f12fe4dd..00000000 --- a/core/config/variant_config.hpp.in +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef VARIANT_CONFIG_H -#define VARIANT_CONFIG_H - -#cmakedefine BUILD_OVP -#cmakedefine BUILD_BOCHS - -#endif diff --git a/core/controller/CMakeLists.txt b/core/controller/CMakeLists.txt deleted file mode 100644 index bba45e84..00000000 --- a/core/controller/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -set(SRCS - BufferCache.cc - CampaignManager.cc - CoroutineManager.cc - Event.cc - EventList.cc -) - -add_library(controller ${SRCS}) diff --git a/core/controller/CoroutineManager.hpp b/core/controller/CoroutineManager.hpp deleted file mode 100644 index de98bcf7..00000000 --- a/core/controller/CoroutineManager.hpp +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef __COROUTINE_MANAGER_HPP__ - #define __COROUTINE_MANAGER_HPP__ - -#include -#include - -#include // the underlying "portable coroutine library" - -namespace fail { - -class ExperimentFlow; - -/** - * \class CoroutineManager - * Manages the experiments flow encapsulated in coroutines. Each - * experiment (flow) has it's associated data structure which is - * represented by the ExperimentData-class. - */ -class CoroutineManager -{ - private: - //! the default stack size for coroutines (= experiment flows) - static const unsigned STACK_SIZE_DEFAULT = 4096*4096; - //! the abstraction for coroutine identification - typedef coroutine_t corohandle_t; - typedef std::map flowmap_t; - //! the mapping "flows <-> coro-handle" - flowmap_t m_Flows; - //! the simulator/backend coroutine handle - corohandle_t m_simCoro; - //! stack of coroutines that explicitly activated another one with toggle() - std::stack m_togglerstack; - //! manages the run-calls for each ExperimentFlow-object - static void m_invoke(void* pData); - public: - static const ExperimentFlow* SIM_FLOW; //!< the simulator coroutine flow - - CoroutineManager() : m_simCoro(co_current()) { } - ~CoroutineManager(); - /** - * Creates a new coroutine for the specified experiment flow. - * @param flow the flow to be executed in the newly created coroutine - */ - void create(ExperimentFlow* flow); - /** - * Destroys coroutine for the specified experiment flow. - * @param flow the flow to be removed - */ - void remove(ExperimentFlow* flow); - /** - * Switches the control flow to the experiment \a flow. If \a flow is - * equal to \c SIM_FLOW, the control will be handed back to the - * simulator. The current control flow is pushed onto an - * internal stack. - * @param flow the destination control flow or \c SIM_FLOW (= \c NULL ) - */ - void toggle(ExperimentFlow* flow); - /** - * Gives the control back to the coroutine that toggle()d the - * current one, by drawing from the internal stack built from - * calls to toggle(). - */ - void resume(); - /** - * Retrieves the current (active) coroutine (= flow). - * @return the current experiment flow. - */ - ExperimentFlow* getCurrent(); -}; - -} // end-of-namespace: fail - -#endif // __COROUTINE_MANAGER_HPP__ diff --git a/core/controller/ExperimentFlow.hpp b/core/controller/ExperimentFlow.hpp deleted file mode 100644 index 30546c94..00000000 --- a/core/controller/ExperimentFlow.hpp +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef __EXPERIMENT_FLOW_HPP__ - #define __EXPERIMENT_FLOW_HPP__ - -#include "../SAL/SALInst.hpp" - -namespace fail { - -/** - * \class ExperimentFlow - * Basic interface for user-defined experiments. To create a new experiment, - * derive your own class from ExperimentFlow and define the run method. - */ -class ExperimentFlow -{ - public: - ExperimentFlow() { } - /** - * Defines the experiment flow. - * @return \c true if the experiment was successful, \c false otherwise - */ - virtual bool run() = 0; - /** - * The entry point for this experiment's coroutine. - * Should do some cleanup afterwards. - */ - void coroutine_entry() - { - run(); - simulator.clearEvents(this); // remove residual events - // FIXME: Consider removing this call (see EventList.cc, void remove(ExperimentFlow* flow)) - // a) with the advantage that we will potentially prevent serious segfaults but - // b) with the drawback that we cannot enforce any cleanups. - } -}; - -} // end-of-namespace: fail - -#endif // __EXPERIMENT_FLOW_HPP__ diff --git a/core/controller/Minion.hpp b/core/controller/Minion.hpp deleted file mode 100644 index 915017fb..00000000 --- a/core/controller/Minion.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/** - * \brief The representation of a minion. - * - */ - -#ifndef __MINION_HPP__ - #define __MINION_HPP__ - -#include - -#include "controller/ExperimentData.hpp" - -namespace fail { - -/** - * \class Minion - * - * Contains all informations about a minion. - */ -class Minion -{ - private: - std::string hostname; - bool isWorking; - ExperimentData* currentExperimentData; - int sockfd; - public: - Minion() : isWorking(false), currentExperimentData(0), sockfd(-1) { } - /** - * Sets the socket descriptor. - * @param sock the new socket descriptor (used internal) - */ - void setSocketDescriptor(int sock) { sockfd = sock; } - /** - * Retrives the socket descriptor. - * @return the socket descriptor - */ - int getSocketDescriptor() const { return (sockfd); } - /** - * Returns the hostname of the minion. - * @return the hostname - */ - const std::string& getHostname() { return (hostname); } - /** - * Sets the hostname of the minion. - * @param host the hostname - */ - void setHostname(const std::string& host) { hostname = host; } - /** - * Returns the current ExperimentData which the minion is working with. - * @return a pointer of the current ExperimentData - */ - ExperimentData* getCurrentExperimentData() { return currentExperimentData; } - /** - * Sets the current ExperimentData which the minion is working with. - * @param exp the current ExperimentData - */ - void setCurrentExperimentData(ExperimentData* exp) { currentExperimentData = exp; } - /** - * Returns the current state of the minion. - * @return the current state - */ - bool isBusy() { return (isWorking); } - /** - * Sets the current state of the minion - * @param state the current state - */ - void setBusy(bool state) { isWorking = state; } -}; - -} // end-of-namespace: fail - -#endif // __MINION_HPP__ diff --git a/core/experiments/fireinterrupt/experiment.hpp b/core/experiments/fireinterrupt/experiment.hpp deleted file mode 100644 index 84996117..00000000 --- a/core/experiments/fireinterrupt/experiment.hpp +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef __FIREINTERRUPT_EXPERIMENT_HPP__ - #define __FIREINTERRUPT_EXPERIMENT_HPP__ - -#include "controller/ExperimentFlow.hpp" - -class fireinterruptExperiment : public fail::ExperimentFlow -{ - public: - fireinterruptExperiment() { } - bool run(); -}; - -#endif // __FIREINTERRUPT_EXPERIMENT_HPP__ diff --git a/core/experiments/hscsimple/experiment.hpp b/core/experiments/hscsimple/experiment.hpp deleted file mode 100644 index 68c26204..00000000 --- a/core/experiments/hscsimple/experiment.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef __HSCSIMPLE_EXPERIMENT_HPP__ - #define __HSCSIMPLE_EXPERIMENT_HPP__ - -#include "controller/ExperimentFlow.hpp" - -class hscsimpleExperiment : public fail::ExperimentFlow -{ - public: - hscsimpleExperiment() { } - - bool run(); -}; - -#endif // __HSCSIMPLE_EXPERIMENT_HPP__ diff --git a/core/experiments/weathermonitor/campaign.hpp b/core/experiments/weathermonitor/campaign.hpp deleted file mode 100644 index d1c02f1a..00000000 --- a/core/experiments/weathermonitor/campaign.hpp +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __WEATHERMONITOR_CAMPAIGN_HPP__ - #define __WEATHERMONITOR_CAMPAIGN_HPP__ - -#include "controller/Campaign.hpp" -#include "controller/ExperimentData.hpp" -#include "weathermonitor.pb.h" - -class WeathermonitorExperimentData : public fail::ExperimentData { -public: - WeathermonitorProtoMsg msg; - WeathermonitorExperimentData() : fail::ExperimentData(&msg) {} -}; - -class WeathermonitorCampaign : public fail::Campaign { -public: - virtual bool run(); -}; - -#endif // __WEATHERMONITOR_CAMPAIGN_HPP__ diff --git a/core/experiments/weathermonitor/experiment.hpp b/core/experiments/weathermonitor/experiment.hpp deleted file mode 100644 index 9f1daad3..00000000 --- a/core/experiments/weathermonitor/experiment.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef __WEATHERMONITOR_EXPERIMENT_HPP__ - #define __WEATHERMONITOR_EXPERIMENT_HPP__ - -#include "controller/ExperimentFlow.hpp" -#include "jobserver/JobClient.hpp" - -class WeathermonitorExperiment : public fail::ExperimentFlow { - fail::JobClient m_jc; -public: - WeathermonitorExperiment() : m_jc("ios.cs.tu-dortmund.de") {} - bool run(); -}; - -#endif // __WEATHERMONITOR_EXPERIMENT_HPP__ diff --git a/core/jobserver/CMakeLists.txt b/core/jobserver/CMakeLists.txt deleted file mode 100644 index c95995ec..00000000 --- a/core/jobserver/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -set(SRCS - JobClient.cc - JobServer.cc - SocketComm.cc -) -add_subdirectory(messagedefs) -add_library(jobserver ${SRCS}) -add_dependencies(jobserver protomessages) diff --git a/core/util/Logger.hpp b/core/util/Logger.hpp deleted file mode 100644 index ad5c27f4..00000000 --- a/core/util/Logger.hpp +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef __LOGGER_HPP__ - #define __LOGGER_HPP__ - -#include -#include - -namespace fail { - -/** - * \class Logger - * Provides logging mechanisms. - */ -class Logger -{ - private: - std::ostream* m_pDest; - std::string m_description; - bool m_showTime; - void timestamp(); - - public: - /** - * Constructor. - * @param description Description shown alongside each log entry in - * square brackets [ ]. Can be overridden in single add() calls. - * @param show_time Show a timestamp with each log entry. - * @param dest Stream to log into. - */ - Logger(const std::string& description = "Fail*", bool show_time = true, - std::ostream& dest = std::cout) - : m_pDest(&dest), m_description(description), m_showTime(show_time) { } - /** - * Change the default description which is shown alongside each log - * entry in square brackets [ ]. - * @param descr The description text. - */ - void setDescription(const std::string& descr) - { - m_description = descr; - } - /** - * Change the default option of show_time which shows a timestamp - * each log entry. - * @param choice The choice for show_time - */ - void showTime(bool choice) - { - m_showTime = choice; - } - /** - * Add a new log entry. Returns a std::ostream reference to continue - * streaming a longer log entry. - * @param v data to log - */ - template - inline std::ostream& operator <<(const T& v) - { - timestamp(); - return (*m_pDest) << v; - } -}; - -} // end-of-namespace: fail - -#endif // __LOGGER_HPP__ diff --git a/core/util/ProtoStream.hpp b/core/util/ProtoStream.hpp deleted file mode 100644 index b190ad38..00000000 --- a/core/util/ProtoStream.hpp +++ /dev/null @@ -1,86 +0,0 @@ -/** brief One way to manage large protobuf-messages - * - * Google protobuf is not designed for large messages. - * That leads to much memory which is consumed by processing large - * messages. To solve this problem the ProtoStream class stores the - * protobuf-messages in an other way. - * Instead of using the repeat-function the data is written - * sequentially in a file. - * Written in the format: - * |4 bytes length-information of the first message | first message - * |4 bytes length-information of the second message| second message - * | ... - */ - -#ifndef __PROTOSTREAM_HPP__ - #define __PROTOSTREAM_HPP__ - -#include -#include -#include -#include - -#include "Logger.hpp" - -namespace fail { - -/** - * \class ProtoOStream - * - * This class can be used to sequentially write a large number of protocol - * buffer messages to a std::ostream. - */ -class ProtoOStream -{ - private: - uint32_t m_size; - - Logger m_log; - std::ostream* m_outfile; - - public: - ProtoOStream(std::ostream *outfile); - virtual ~ProtoOStream() {}; - /** - * Writes a message to a file. - * @param m The protobuf-message to be written. - * @return Returns true on success. - */ - bool writeMessage(google::protobuf::Message* m); -}; - -/** - * \class ProtoIStream - * - * This class can be used to read protocol buffer messages sequentially from a - * std::istream. - */ -class ProtoIStream -{ - private: - uint32_t m_size; - long m_sizeOfInfile; - - Logger m_log; - std::istream *m_infile; - - - public: - ProtoIStream(std::istream *infile); - virtual ~ProtoIStream() {}; - /** - * Resets the position of the get pointer. After that getNext - * reads the first message again. - */ - void reset(); - /** - * Reads the next protobuf message from the input stream. - * @param m The output protobuf message. - * @return Returns true on success. - */ - bool getNext(google::protobuf::Message* m); -}; - -} // end-of-namespace: fail - -#endif // __PROTOSTREAM_HPP__ diff --git a/core/util/SynchronizedCounter.hpp b/core/util/SynchronizedCounter.hpp deleted file mode 100644 index e3326098..00000000 --- a/core/util/SynchronizedCounter.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// Thread safe counter - -#ifndef __SYNCHRONIZED_COUNTER_HPP__ - #define __SYNCHRONIZED_COUNTER_HPP__ - -#ifndef __puma -#include -#include -#endif - -namespace fail { - -class SynchronizedCounter -{ -private: - int m_counter; -#ifndef __puma - boost::mutex m_mutex; // The mutex to synchronise on -#endif - public: - SynchronizedCounter() : m_counter(0) {}; - - int increment(); - int decrement(); - int getValue(); -}; - -} // end-of-namespace: fail - -#endif // __SYNCHRONIZED_COUNTER_HPP__ diff --git a/deprecated/old-aspects/fireTimer.ah b/deprecated/old-aspects/FireTimer.ah.old similarity index 100% rename from deprecated/old-aspects/fireTimer.ah rename to deprecated/old-aspects/FireTimer.ah.old diff --git a/deprecated/old-aspects/JumpToPreviousCtx.ah b/deprecated/old-aspects/JumpToPreviousCtx.ah.old similarity index 100% rename from deprecated/old-aspects/JumpToPreviousCtx.ah rename to deprecated/old-aspects/JumpToPreviousCtx.ah.old diff --git a/deprecated/old-aspects/MemAccessBitFlip.ah b/deprecated/old-aspects/MemAccessBitFlip.ah.old similarity index 100% rename from deprecated/old-aspects/MemAccessBitFlip.ah rename to deprecated/old-aspects/MemAccessBitFlip.ah.old diff --git a/deprecated/ExperimentDataQueue.cc b/deprecated/old-utils/ExperimentDataQueue.cc similarity index 100% rename from deprecated/ExperimentDataQueue.cc rename to deprecated/old-utils/ExperimentDataQueue.cc diff --git a/deprecated/ExperimentDataQueue.hpp b/deprecated/old-utils/ExperimentDataQueue.hpp similarity index 100% rename from deprecated/ExperimentDataQueue.hpp rename to deprecated/old-utils/ExperimentDataQueue.hpp diff --git a/bochs/.bochsrc b/simulators/bochs/.bochsrc similarity index 100% rename from bochs/.bochsrc rename to simulators/bochs/.bochsrc diff --git a/bochs/.conf.amigaos b/simulators/bochs/.conf.amigaos similarity index 100% rename from bochs/.conf.amigaos rename to simulators/bochs/.conf.amigaos diff --git a/bochs/.conf.beos b/simulators/bochs/.conf.beos similarity index 100% rename from bochs/.conf.beos rename to simulators/bochs/.conf.beos diff --git a/bochs/.conf.everything b/simulators/bochs/.conf.everything similarity index 100% rename from bochs/.conf.everything rename to simulators/bochs/.conf.everything diff --git a/bochs/.conf.linux b/simulators/bochs/.conf.linux similarity index 100% rename from bochs/.conf.linux rename to simulators/bochs/.conf.linux diff --git a/bochs/.conf.macos b/simulators/bochs/.conf.macos similarity index 100% rename from bochs/.conf.macos rename to simulators/bochs/.conf.macos diff --git a/bochs/.conf.macosx b/simulators/bochs/.conf.macosx similarity index 100% rename from bochs/.conf.macosx rename to simulators/bochs/.conf.macosx diff --git a/bochs/.conf.nothing b/simulators/bochs/.conf.nothing similarity index 100% rename from bochs/.conf.nothing rename to simulators/bochs/.conf.nothing diff --git a/bochs/.conf.sparc b/simulators/bochs/.conf.sparc similarity index 100% rename from bochs/.conf.sparc rename to simulators/bochs/.conf.sparc diff --git a/bochs/.conf.win32-cygwin b/simulators/bochs/.conf.win32-cygwin similarity index 100% rename from bochs/.conf.win32-cygwin rename to simulators/bochs/.conf.win32-cygwin diff --git a/bochs/.conf.win32-vcpp b/simulators/bochs/.conf.win32-vcpp similarity index 100% rename from bochs/.conf.win32-vcpp rename to simulators/bochs/.conf.win32-vcpp diff --git a/bochs/CHANGES b/simulators/bochs/CHANGES similarity index 100% rename from bochs/CHANGES rename to simulators/bochs/CHANGES diff --git a/bochs/COPYING b/simulators/bochs/COPYING similarity index 100% rename from bochs/COPYING rename to simulators/bochs/COPYING diff --git a/bochs/Makefile.in b/simulators/bochs/Makefile.in similarity index 98% rename from bochs/Makefile.in rename to simulators/bochs/Makefile.in index 6930d9bf..790ecee4 100644 --- a/bochs/Makefile.in +++ b/simulators/bochs/Makefile.in @@ -174,12 +174,13 @@ all: @PRIMARY_TARGET@ @PLUGIN_TARGET@ bximage@EXE@ bxcommit@EXE@ @BUILD_DOCBOOK_ @EXTERNAL_DEPENDENCY@ +# DanceOS (added "../../src/libfail.a"): bochs@EXE@: @IODEV_LIB_VAR@ @DEBUGGER_VAR@ \ - cpu/libcpu.a memory/libmemory.a ../core/libfail.a gui/libgui.a \ + cpu/libcpu.a memory/libmemory.a ../../src/libfail.a gui/libgui.a \ @DISASM_VAR@ @INSTRUMENT_VAR@ $(BX_OBJS) \ $(SIMX86_OBJS) @FPU_VAR@ @GDBSTUB_VAR@ @PLUGIN_VAR@ @LINK@ @EXPORT_DYNAMIC@ $(BX_OBJS) $(SIMX86_OBJS) \ - @IODEV_LIB_VAR@ @DEBUGGER_VAR@ cpu/libcpu.a memory/libmemory.a ../core/libfail.a gui/libgui.a \ + @IODEV_LIB_VAR@ @DEBUGGER_VAR@ cpu/libcpu.a memory/libmemory.a ../../src/libfail.a gui/libgui.a \ @DISASM_VAR@ @INSTRUMENT_VAR@ @PLUGIN_VAR@ \ @GDBSTUB_VAR@ @FPU_VAR@ \ @NONPLUGIN_GUI_LINK_OPTS@ \ @@ -189,23 +190,25 @@ bochs@EXE@: @IODEV_LIB_VAR@ @DEBUGGER_VAR@ \ $(EXTRA_LINK_OPTS) \ $(LIBS) +# DanceOS (added ../../src/libfail.a): + # Special make target for cygwin/mingw using dlltool instead of # libtool. This creates a .DEF file, and exports file, an import library, # and then links bochs.exe with the exports file. .win32_dll_plugin_target: @IODEV_LIB_VAR@ @DEBUGGER_VAR@ \ - cpu/libcpu.a memory/libmemory.a ../core/libfail.a gui/libgui.a \ + cpu/libcpu.a memory/libmemory.a ../../src/libfail.a gui/libgui.a \ @DISASM_VAR@ @INSTRUMENT_VAR@ $(BX_OBJS) \ $(SIMX86_OBJS) @FPU_VAR@ @GDBSTUB_VAR@ @PLUGIN_VAR@ $(DLLTOOL) --export-all-symbols --output-def bochs.def \ $(BX_OBJS) $(SIMX86_OBJS) \ - @IODEV_LIB_VAR@ cpu/libcpu.a memory/libmemory.a ../core/libfail.a gui/libgui.a \ + @IODEV_LIB_VAR@ cpu/libcpu.a memory/libmemory.a ../../src/libfail.a gui/libgui.a \ @DEBUGGER_VAR@ @DISASM_VAR@ @INSTRUMENT_VAR@ @PLUGIN_VAR@ \ @GDBSTUB_VAR@ @FPU_VAR@ $(DLLTOOL) --dllname bochs.exe --def bochs.def --output-lib dllexports.a $(DLLTOOL) --dllname bochs.exe --output-exp bochs.exp --def bochs.def $(CXX) -o bochs.exe $(CXXFLAGS) $(LDFLAGS) -export-dynamic \ $(BX_OBJS) bochs.exp $(SIMX86_OBJS) \ - @IODEV_LIB_VAR@ cpu/libcpu.a memory/libmemory.a ../core/libfail.a gui/libgui.a \ + @IODEV_LIB_VAR@ cpu/libcpu.a memory/libmemory.a ../../src/libfail.a gui/libgui.a \ @DEBUGGER_VAR@ @DISASM_VAR@ @INSTRUMENT_VAR@ @PLUGIN_VAR@ \ @GDBSTUB_VAR@ @FPU_VAR@ \ $(GUI_LINK_OPTS) \ diff --git a/bochs/PARAM_TREE.txt b/simulators/bochs/PARAM_TREE.txt similarity index 100% rename from bochs/PARAM_TREE.txt rename to simulators/bochs/PARAM_TREE.txt diff --git a/bochs/README b/simulators/bochs/README similarity index 100% rename from bochs/README rename to simulators/bochs/README diff --git a/bochs/README-plugins b/simulators/bochs/README-plugins similarity index 100% rename from bochs/README-plugins rename to simulators/bochs/README-plugins diff --git a/bochs/README-wxWindows b/simulators/bochs/README-wxWindows similarity index 100% rename from bochs/README-wxWindows rename to simulators/bochs/README-wxWindows diff --git a/bochs/README.rfb b/simulators/bochs/README.rfb similarity index 100% rename from bochs/README.rfb rename to simulators/bochs/README.rfb diff --git a/bochs/TESTFORM.txt b/simulators/bochs/TESTFORM.txt similarity index 100% rename from bochs/TESTFORM.txt rename to simulators/bochs/TESTFORM.txt diff --git a/bochs/TODO b/simulators/bochs/TODO similarity index 100% rename from bochs/TODO rename to simulators/bochs/TODO diff --git a/bochs/aclocal.m4 b/simulators/bochs/aclocal.m4 similarity index 100% rename from bochs/aclocal.m4 rename to simulators/bochs/aclocal.m4 diff --git a/bochs/bios/BIOS-bochs-latest b/simulators/bochs/bios/BIOS-bochs-latest similarity index 100% rename from bochs/bios/BIOS-bochs-latest rename to simulators/bochs/bios/BIOS-bochs-latest diff --git a/bochs/bios/BIOS-bochs-legacy b/simulators/bochs/bios/BIOS-bochs-legacy similarity index 100% rename from bochs/bios/BIOS-bochs-legacy rename to simulators/bochs/bios/BIOS-bochs-legacy diff --git a/bochs/bios/Makefile.in b/simulators/bochs/bios/Makefile.in similarity index 100% rename from bochs/bios/Makefile.in rename to simulators/bochs/bios/Makefile.in diff --git a/bochs/bios/VGABIOS-elpin-2.40 b/simulators/bochs/bios/VGABIOS-elpin-2.40 similarity index 100% rename from bochs/bios/VGABIOS-elpin-2.40 rename to simulators/bochs/bios/VGABIOS-elpin-2.40 diff --git a/bochs/bios/VGABIOS-elpin-LICENSE b/simulators/bochs/bios/VGABIOS-elpin-LICENSE similarity index 100% rename from bochs/bios/VGABIOS-elpin-LICENSE rename to simulators/bochs/bios/VGABIOS-elpin-LICENSE diff --git a/bochs/bios/VGABIOS-lgpl-README b/simulators/bochs/bios/VGABIOS-lgpl-README similarity index 100% rename from bochs/bios/VGABIOS-lgpl-README rename to simulators/bochs/bios/VGABIOS-lgpl-README diff --git a/bochs/bios/VGABIOS-lgpl-latest b/simulators/bochs/bios/VGABIOS-lgpl-latest similarity index 100% rename from bochs/bios/VGABIOS-lgpl-latest rename to simulators/bochs/bios/VGABIOS-lgpl-latest diff --git a/bochs/bios/VGABIOS-lgpl-latest-cirrus b/simulators/bochs/bios/VGABIOS-lgpl-latest-cirrus similarity index 100% rename from bochs/bios/VGABIOS-lgpl-latest-cirrus rename to simulators/bochs/bios/VGABIOS-lgpl-latest-cirrus diff --git a/bochs/bios/VGABIOS-lgpl-latest-cirrus-debug b/simulators/bochs/bios/VGABIOS-lgpl-latest-cirrus-debug similarity index 100% rename from bochs/bios/VGABIOS-lgpl-latest-cirrus-debug rename to simulators/bochs/bios/VGABIOS-lgpl-latest-cirrus-debug diff --git a/bochs/bios/VGABIOS-lgpl-latest-debug b/simulators/bochs/bios/VGABIOS-lgpl-latest-debug similarity index 100% rename from bochs/bios/VGABIOS-lgpl-latest-debug rename to simulators/bochs/bios/VGABIOS-lgpl-latest-debug diff --git a/bochs/bios/acpi-dsdt.dsl b/simulators/bochs/bios/acpi-dsdt.dsl similarity index 100% rename from bochs/bios/acpi-dsdt.dsl rename to simulators/bochs/bios/acpi-dsdt.dsl diff --git a/bochs/bios/acpi-dsdt.hex b/simulators/bochs/bios/acpi-dsdt.hex similarity index 100% rename from bochs/bios/acpi-dsdt.hex rename to simulators/bochs/bios/acpi-dsdt.hex diff --git a/bochs/bios/apmbios.S b/simulators/bochs/bios/apmbios.S similarity index 100% rename from bochs/bios/apmbios.S rename to simulators/bochs/bios/apmbios.S diff --git a/bochs/bios/bios_usage b/simulators/bochs/bios/bios_usage similarity index 100% rename from bochs/bios/bios_usage rename to simulators/bochs/bios/bios_usage diff --git a/bochs/bios/biossums.c b/simulators/bochs/bios/biossums.c similarity index 100% rename from bochs/bios/biossums.c rename to simulators/bochs/bios/biossums.c diff --git a/bochs/bios/makesym.perl b/simulators/bochs/bios/makesym.perl similarity index 100% rename from bochs/bios/makesym.perl rename to simulators/bochs/bios/makesym.perl diff --git a/bochs/bios/notes b/simulators/bochs/bios/notes similarity index 100% rename from bochs/bios/notes rename to simulators/bochs/bios/notes diff --git a/bochs/bios/rombios.c b/simulators/bochs/bios/rombios.c similarity index 100% rename from bochs/bios/rombios.c rename to simulators/bochs/bios/rombios.c diff --git a/bochs/bios/rombios.h b/simulators/bochs/bios/rombios.h similarity index 100% rename from bochs/bios/rombios.h rename to simulators/bochs/bios/rombios.h diff --git a/bochs/bios/rombios32.c b/simulators/bochs/bios/rombios32.c similarity index 100% rename from bochs/bios/rombios32.c rename to simulators/bochs/bios/rombios32.c diff --git a/bochs/bios/rombios32.ld b/simulators/bochs/bios/rombios32.ld similarity index 100% rename from bochs/bios/rombios32.ld rename to simulators/bochs/bios/rombios32.ld diff --git a/bochs/bios/rombios32start.S b/simulators/bochs/bios/rombios32start.S similarity index 100% rename from bochs/bios/rombios32start.S rename to simulators/bochs/bios/rombios32start.S diff --git a/bochs/bios/usage.cc b/simulators/bochs/bios/usage.cc similarity index 100% rename from bochs/bios/usage.cc rename to simulators/bochs/bios/usage.cc diff --git a/bochs/bochs.h b/simulators/bochs/bochs.h similarity index 99% rename from bochs/bochs.h rename to simulators/bochs/bochs.h index 5445f1c3..9c1ebed3 100644 --- a/bochs/bochs.h +++ b/simulators/bochs/bochs.h @@ -31,7 +31,7 @@ #include "config.h" /* generated by configure script from config.h.in */ //DanceOS -#include "../core/SAL/bochs/FailBochsGlobals.hpp" +#include "../../src/core/sal/bochs/FailBochsGlobals.hpp" #ifndef __QNXNTO__ extern "C" { diff --git a/bochs/bochsrc-multiple-ne2k b/simulators/bochs/bochsrc-multiple-ne2k similarity index 100% rename from bochs/bochsrc-multiple-ne2k rename to simulators/bochs/bochsrc-multiple-ne2k diff --git a/bochs/build/batch-build.perl b/simulators/bochs/build/batch-build.perl similarity index 100% rename from bochs/build/batch-build.perl rename to simulators/bochs/build/batch-build.perl diff --git a/bochs/build/beos/resource.zip b/simulators/bochs/build/beos/resource.zip similarity index 100% rename from bochs/build/beos/resource.zip rename to simulators/bochs/build/beos/resource.zip diff --git a/bochs/build/debian/README.Debian b/simulators/bochs/build/debian/README.Debian similarity index 100% rename from bochs/build/debian/README.Debian rename to simulators/bochs/build/debian/README.Debian diff --git a/bochs/build/debian/changelog b/simulators/bochs/build/debian/changelog similarity index 100% rename from bochs/build/debian/changelog rename to simulators/bochs/build/debian/changelog diff --git a/bochs/build/debian/conffiles.ex b/simulators/bochs/build/debian/conffiles.ex similarity index 100% rename from bochs/build/debian/conffiles.ex rename to simulators/bochs/build/debian/conffiles.ex diff --git a/bochs/build/debian/control b/simulators/bochs/build/debian/control similarity index 100% rename from bochs/build/debian/control rename to simulators/bochs/build/debian/control diff --git a/bochs/build/debian/copyright b/simulators/bochs/build/debian/copyright similarity index 100% rename from bochs/build/debian/copyright rename to simulators/bochs/build/debian/copyright diff --git a/bochs/build/debian/cron.d.ex b/simulators/bochs/build/debian/cron.d.ex similarity index 100% rename from bochs/build/debian/cron.d.ex rename to simulators/bochs/build/debian/cron.d.ex diff --git a/bochs/build/debian/dirs b/simulators/bochs/build/debian/dirs similarity index 100% rename from bochs/build/debian/dirs rename to simulators/bochs/build/debian/dirs diff --git a/bochs/build/debian/docs b/simulators/bochs/build/debian/docs similarity index 100% rename from bochs/build/debian/docs rename to simulators/bochs/build/debian/docs diff --git a/bochs/build/debian/emacsen-install.ex b/simulators/bochs/build/debian/emacsen-install.ex similarity index 100% rename from bochs/build/debian/emacsen-install.ex rename to simulators/bochs/build/debian/emacsen-install.ex diff --git a/bochs/build/debian/emacsen-remove.ex b/simulators/bochs/build/debian/emacsen-remove.ex similarity index 100% rename from bochs/build/debian/emacsen-remove.ex rename to simulators/bochs/build/debian/emacsen-remove.ex diff --git a/bochs/build/debian/emacsen-startup.ex b/simulators/bochs/build/debian/emacsen-startup.ex similarity index 100% rename from bochs/build/debian/emacsen-startup.ex rename to simulators/bochs/build/debian/emacsen-startup.ex diff --git a/bochs/build/debian/ex.doc-base.package b/simulators/bochs/build/debian/ex.doc-base.package similarity index 100% rename from bochs/build/debian/ex.doc-base.package rename to simulators/bochs/build/debian/ex.doc-base.package diff --git a/bochs/build/debian/init.d.ex b/simulators/bochs/build/debian/init.d.ex similarity index 100% rename from bochs/build/debian/init.d.ex rename to simulators/bochs/build/debian/init.d.ex diff --git a/bochs/build/debian/manpage.1.ex b/simulators/bochs/build/debian/manpage.1.ex similarity index 100% rename from bochs/build/debian/manpage.1.ex rename to simulators/bochs/build/debian/manpage.1.ex diff --git a/bochs/build/debian/manpage.sgml.ex b/simulators/bochs/build/debian/manpage.sgml.ex similarity index 100% rename from bochs/build/debian/manpage.sgml.ex rename to simulators/bochs/build/debian/manpage.sgml.ex diff --git a/bochs/build/debian/menu.ex b/simulators/bochs/build/debian/menu.ex similarity index 100% rename from bochs/build/debian/menu.ex rename to simulators/bochs/build/debian/menu.ex diff --git a/bochs/build/debian/postinst b/simulators/bochs/build/debian/postinst similarity index 100% rename from bochs/build/debian/postinst rename to simulators/bochs/build/debian/postinst diff --git a/bochs/build/debian/postinst.ex b/simulators/bochs/build/debian/postinst.ex similarity index 100% rename from bochs/build/debian/postinst.ex rename to simulators/bochs/build/debian/postinst.ex diff --git a/bochs/build/debian/postrm.ex b/simulators/bochs/build/debian/postrm.ex similarity index 100% rename from bochs/build/debian/postrm.ex rename to simulators/bochs/build/debian/postrm.ex diff --git a/bochs/build/debian/preinst.ex b/simulators/bochs/build/debian/preinst.ex similarity index 100% rename from bochs/build/debian/preinst.ex rename to simulators/bochs/build/debian/preinst.ex diff --git a/bochs/build/debian/prerm.ex b/simulators/bochs/build/debian/prerm.ex similarity index 100% rename from bochs/build/debian/prerm.ex rename to simulators/bochs/build/debian/prerm.ex diff --git a/bochs/build/debian/rules b/simulators/bochs/build/debian/rules similarity index 100% rename from bochs/build/debian/rules rename to simulators/bochs/build/debian/rules diff --git a/bochs/build/debian/watch.ex b/simulators/bochs/build/debian/watch.ex similarity index 100% rename from bochs/build/debian/watch.ex rename to simulators/bochs/build/debian/watch.ex diff --git a/bochs/build/linux/README.linux-binary b/simulators/bochs/build/linux/README.linux-binary similarity index 100% rename from bochs/build/linux/README.linux-binary rename to simulators/bochs/build/linux/README.linux-binary diff --git a/bochs/build/linux/bochs-dlx.in b/simulators/bochs/build/linux/bochs-dlx.in similarity index 100% rename from bochs/build/linux/bochs-dlx.in rename to simulators/bochs/build/linux/bochs-dlx.in diff --git a/bochs/build/macos/CWPro3_project.sit b/simulators/bochs/build/macos/CWPro3_project.sit similarity index 100% rename from bochs/build/macos/CWPro3_project.sit rename to simulators/bochs/build/macos/CWPro3_project.sit diff --git a/bochs/build/macos/bochs.rsrc b/simulators/bochs/build/macos/bochs.rsrc similarity index 100% rename from bochs/build/macos/bochs.rsrc rename to simulators/bochs/build/macos/bochs.rsrc diff --git a/bochs/build/macos/bochsico.bmp b/simulators/bochs/build/macos/bochsico.bmp similarity index 100% rename from bochs/build/macos/bochsico.bmp rename to simulators/bochs/build/macos/bochsico.bmp diff --git a/bochs/build/macos/macos_defines.h b/simulators/bochs/build/macos/macos_defines.h similarity index 100% rename from bochs/build/macos/macos_defines.h rename to simulators/bochs/build/macos/macos_defines.h diff --git a/bochs/build/macosx/Info.plist.in b/simulators/bochs/build/macosx/Info.plist.in similarity index 100% rename from bochs/build/macosx/Info.plist.in rename to simulators/bochs/build/macosx/Info.plist.in diff --git a/bochs/build/macosx/README.macosx-binary b/simulators/bochs/build/macosx/README.macosx-binary similarity index 100% rename from bochs/build/macosx/README.macosx-binary rename to simulators/bochs/build/macosx/README.macosx-binary diff --git a/bochs/build/macosx/bochs-icn.icns b/simulators/bochs/build/macosx/bochs-icn.icns similarity index 100% rename from bochs/build/macosx/bochs-icn.icns rename to simulators/bochs/build/macosx/bochs-icn.icns diff --git a/bochs/build/macosx/bochs.applescript b/simulators/bochs/build/macosx/bochs.applescript similarity index 100% rename from bochs/build/macosx/bochs.applescript rename to simulators/bochs/build/macosx/bochs.applescript diff --git a/bochs/build/macosx/bochs.r b/simulators/bochs/build/macosx/bochs.r similarity index 100% rename from bochs/build/macosx/bochs.r rename to simulators/bochs/build/macosx/bochs.r diff --git a/bochs/build/macosx/diskimage.pl b/simulators/bochs/build/macosx/diskimage.pl similarity index 100% rename from bochs/build/macosx/diskimage.pl rename to simulators/bochs/build/macosx/diskimage.pl diff --git a/bochs/build/macosx/make-dmg.sh b/simulators/bochs/build/macosx/make-dmg.sh similarity index 100% rename from bochs/build/macosx/make-dmg.sh rename to simulators/bochs/build/macosx/make-dmg.sh diff --git a/bochs/build/macosx/pbdevelopment.plist b/simulators/bochs/build/macosx/pbdevelopment.plist similarity index 100% rename from bochs/build/macosx/pbdevelopment.plist rename to simulators/bochs/build/macosx/pbdevelopment.plist diff --git a/bochs/build/macosx/script.data b/simulators/bochs/build/macosx/script.data similarity index 100% rename from bochs/build/macosx/script.data rename to simulators/bochs/build/macosx/script.data diff --git a/bochs/build/macosx/script.r b/simulators/bochs/build/macosx/script.r similarity index 100% rename from bochs/build/macosx/script.r rename to simulators/bochs/build/macosx/script.r diff --git a/bochs/build/makeall.sh b/simulators/bochs/build/makeall.sh similarity index 100% rename from bochs/build/makeall.sh rename to simulators/bochs/build/makeall.sh diff --git a/bochs/build/redhat/NOTES b/simulators/bochs/build/redhat/NOTES similarity index 100% rename from bochs/build/redhat/NOTES rename to simulators/bochs/build/redhat/NOTES diff --git a/bochs/build/redhat/bochs.rpmspec.template b/simulators/bochs/build/redhat/bochs.rpmspec.template similarity index 100% rename from bochs/build/redhat/bochs.rpmspec.template rename to simulators/bochs/build/redhat/bochs.rpmspec.template diff --git a/bochs/build/redhat/make-rpm b/simulators/bochs/build/redhat/make-rpm similarity index 100% rename from bochs/build/redhat/make-rpm rename to simulators/bochs/build/redhat/make-rpm diff --git a/bochs/build/win32/README.win32-binary b/simulators/bochs/build/win32/README.win32-binary similarity index 100% rename from bochs/build/win32/README.win32-binary rename to simulators/bochs/build/win32/README.win32-binary diff --git a/bochs/build/win32/bochs.win32.manifest b/simulators/bochs/build/win32/bochs.win32.manifest similarity index 100% rename from bochs/build/win32/bochs.win32.manifest rename to simulators/bochs/build/win32/bochs.win32.manifest diff --git a/bochs/build/win32/bochs.win64.manifest b/simulators/bochs/build/win32/bochs.win64.manifest similarity index 100% rename from bochs/build/win32/bochs.win64.manifest rename to simulators/bochs/build/win32/bochs.win64.manifest diff --git a/bochs/build/win32/cc2cpp b/simulators/bochs/build/win32/cc2cpp similarity index 100% rename from bochs/build/win32/cc2cpp rename to simulators/bochs/build/win32/cc2cpp diff --git a/bochs/build/win32/cpp2cc b/simulators/bochs/build/win32/cpp2cc similarity index 100% rename from bochs/build/win32/cpp2cc rename to simulators/bochs/build/win32/cpp2cc diff --git a/bochs/build/win32/diffcc2cpp b/simulators/bochs/build/win32/diffcc2cpp similarity index 100% rename from bochs/build/win32/diffcc2cpp rename to simulators/bochs/build/win32/diffcc2cpp diff --git a/bochs/build/win32/nsis/Makefile.in b/simulators/bochs/build/win32/nsis/Makefile.in similarity index 100% rename from bochs/build/win32/nsis/Makefile.in rename to simulators/bochs/build/win32/nsis/Makefile.in diff --git a/bochs/build/win32/nsis/bochs.ico b/simulators/bochs/build/win32/nsis/bochs.ico similarity index 100% rename from bochs/build/win32/nsis/bochs.ico rename to simulators/bochs/build/win32/nsis/bochs.ico diff --git a/bochs/build/win32/nsis/bochs.nsi.in b/simulators/bochs/build/win32/nsis/bochs.nsi.in similarity index 100% rename from bochs/build/win32/nsis/bochs.nsi.in rename to simulators/bochs/build/win32/nsis/bochs.nsi.in diff --git a/bochs/build/win32/nsis/lgban.ico b/simulators/bochs/build/win32/nsis/lgban.ico similarity index 100% rename from bochs/build/win32/nsis/lgban.ico rename to simulators/bochs/build/win32/nsis/lgban.ico diff --git a/bochs/build/win32/nsis/logo.ico b/simulators/bochs/build/win32/nsis/logo.ico similarity index 100% rename from bochs/build/win32/nsis/logo.ico rename to simulators/bochs/build/win32/nsis/logo.ico diff --git a/bochs/build/win32/nsis/penguin.ico b/simulators/bochs/build/win32/nsis/penguin.ico similarity index 100% rename from bochs/build/win32/nsis/penguin.ico rename to simulators/bochs/build/win32/nsis/penguin.ico diff --git a/bochs/build/win32/nsis/unbochs.ico b/simulators/bochs/build/win32/nsis/unbochs.ico similarity index 100% rename from bochs/build/win32/nsis/unbochs.ico rename to simulators/bochs/build/win32/nsis/unbochs.ico diff --git a/bochs/build/win32/vs2008ex-workspace.zip b/simulators/bochs/build/win32/vs2008ex-workspace.zip similarity index 100% rename from bochs/build/win32/vs2008ex-workspace.zip rename to simulators/bochs/build/win32/vs2008ex-workspace.zip diff --git a/bochs/bx_debug/Makefile.in b/simulators/bochs/bx_debug/Makefile.in similarity index 100% rename from bochs/bx_debug/Makefile.in rename to simulators/bochs/bx_debug/Makefile.in diff --git a/bochs/bx_debug/dbg_main.cc b/simulators/bochs/bx_debug/dbg_main.cc similarity index 100% rename from bochs/bx_debug/dbg_main.cc rename to simulators/bochs/bx_debug/dbg_main.cc diff --git a/bochs/bx_debug/debug.h b/simulators/bochs/bx_debug/debug.h similarity index 100% rename from bochs/bx_debug/debug.h rename to simulators/bochs/bx_debug/debug.h diff --git a/bochs/bx_debug/lexer.c b/simulators/bochs/bx_debug/lexer.c similarity index 100% rename from bochs/bx_debug/lexer.c rename to simulators/bochs/bx_debug/lexer.c diff --git a/bochs/bx_debug/lexer.l b/simulators/bochs/bx_debug/lexer.l similarity index 100% rename from bochs/bx_debug/lexer.l rename to simulators/bochs/bx_debug/lexer.l diff --git a/bochs/bx_debug/linux.cc b/simulators/bochs/bx_debug/linux.cc similarity index 100% rename from bochs/bx_debug/linux.cc rename to simulators/bochs/bx_debug/linux.cc diff --git a/bochs/bx_debug/make-syscalls-linux.pl b/simulators/bochs/bx_debug/make-syscalls-linux.pl similarity index 100% rename from bochs/bx_debug/make-syscalls-linux.pl rename to simulators/bochs/bx_debug/make-syscalls-linux.pl diff --git a/bochs/bx_debug/parser.c b/simulators/bochs/bx_debug/parser.c similarity index 100% rename from bochs/bx_debug/parser.c rename to simulators/bochs/bx_debug/parser.c diff --git a/bochs/bx_debug/parser.h b/simulators/bochs/bx_debug/parser.h similarity index 100% rename from bochs/bx_debug/parser.h rename to simulators/bochs/bx_debug/parser.h diff --git a/bochs/bx_debug/parser.y b/simulators/bochs/bx_debug/parser.y similarity index 100% rename from bochs/bx_debug/parser.y rename to simulators/bochs/bx_debug/parser.y diff --git a/bochs/bx_debug/symbols.cc b/simulators/bochs/bx_debug/symbols.cc similarity index 100% rename from bochs/bx_debug/symbols.cc rename to simulators/bochs/bx_debug/symbols.cc diff --git a/bochs/bx_debug/syscalls-linux.h b/simulators/bochs/bx_debug/syscalls-linux.h similarity index 100% rename from bochs/bx_debug/syscalls-linux.h rename to simulators/bochs/bx_debug/syscalls-linux.h diff --git a/bochs/bxversion.h.in b/simulators/bochs/bxversion.h.in similarity index 100% rename from bochs/bxversion.h.in rename to simulators/bochs/bxversion.h.in diff --git a/bochs/bxversion.rc.in b/simulators/bochs/bxversion.rc.in similarity index 100% rename from bochs/bxversion.rc.in rename to simulators/bochs/bxversion.rc.in diff --git a/bochs/config.cc b/simulators/bochs/config.cc similarity index 100% rename from bochs/config.cc rename to simulators/bochs/config.cc diff --git a/bochs/config.guess b/simulators/bochs/config.guess similarity index 100% rename from bochs/config.guess rename to simulators/bochs/config.guess diff --git a/bochs/config.h.in b/simulators/bochs/config.h.in similarity index 100% rename from bochs/config.h.in rename to simulators/bochs/config.h.in diff --git a/bochs/config.sub b/simulators/bochs/config.sub similarity index 100% rename from bochs/config.sub rename to simulators/bochs/config.sub diff --git a/bochs/configure b/simulators/bochs/configure similarity index 100% rename from bochs/configure rename to simulators/bochs/configure diff --git a/bochs/configure.in b/simulators/bochs/configure.in similarity index 100% rename from bochs/configure.in rename to simulators/bochs/configure.in diff --git a/bochs/cpu/3dnow.cc b/simulators/bochs/cpu/3dnow.cc similarity index 100% rename from bochs/cpu/3dnow.cc rename to simulators/bochs/cpu/3dnow.cc diff --git a/bochs/cpu/Makefile.in b/simulators/bochs/cpu/Makefile.in similarity index 100% rename from bochs/cpu/Makefile.in rename to simulators/bochs/cpu/Makefile.in diff --git a/bochs/cpu/access.cc b/simulators/bochs/cpu/access.cc similarity index 100% rename from bochs/cpu/access.cc rename to simulators/bochs/cpu/access.cc diff --git a/bochs/cpu/access32.cc b/simulators/bochs/cpu/access32.cc similarity index 100% rename from bochs/cpu/access32.cc rename to simulators/bochs/cpu/access32.cc diff --git a/bochs/cpu/access64.cc b/simulators/bochs/cpu/access64.cc similarity index 100% rename from bochs/cpu/access64.cc rename to simulators/bochs/cpu/access64.cc diff --git a/bochs/cpu/aes.cc b/simulators/bochs/cpu/aes.cc similarity index 100% rename from bochs/cpu/aes.cc rename to simulators/bochs/cpu/aes.cc diff --git a/bochs/cpu/apic.cc b/simulators/bochs/cpu/apic.cc similarity index 100% rename from bochs/cpu/apic.cc rename to simulators/bochs/cpu/apic.cc diff --git a/bochs/cpu/apic.h b/simulators/bochs/cpu/apic.h similarity index 100% rename from bochs/cpu/apic.h rename to simulators/bochs/cpu/apic.h diff --git a/bochs/cpu/arith16.cc b/simulators/bochs/cpu/arith16.cc similarity index 100% rename from bochs/cpu/arith16.cc rename to simulators/bochs/cpu/arith16.cc diff --git a/bochs/cpu/arith32.cc b/simulators/bochs/cpu/arith32.cc similarity index 100% rename from bochs/cpu/arith32.cc rename to simulators/bochs/cpu/arith32.cc diff --git a/bochs/cpu/arith64.cc b/simulators/bochs/cpu/arith64.cc similarity index 100% rename from bochs/cpu/arith64.cc rename to simulators/bochs/cpu/arith64.cc diff --git a/bochs/cpu/arith8.cc b/simulators/bochs/cpu/arith8.cc similarity index 100% rename from bochs/cpu/arith8.cc rename to simulators/bochs/cpu/arith8.cc diff --git a/bochs/cpu/bcd.cc b/simulators/bochs/cpu/bcd.cc similarity index 100% rename from bochs/cpu/bcd.cc rename to simulators/bochs/cpu/bcd.cc diff --git a/bochs/cpu/bit.cc b/simulators/bochs/cpu/bit.cc similarity index 100% rename from bochs/cpu/bit.cc rename to simulators/bochs/cpu/bit.cc diff --git a/bochs/cpu/bit16.cc b/simulators/bochs/cpu/bit16.cc similarity index 100% rename from bochs/cpu/bit16.cc rename to simulators/bochs/cpu/bit16.cc diff --git a/bochs/cpu/bit32.cc b/simulators/bochs/cpu/bit32.cc similarity index 100% rename from bochs/cpu/bit32.cc rename to simulators/bochs/cpu/bit32.cc diff --git a/bochs/cpu/bit64.cc b/simulators/bochs/cpu/bit64.cc similarity index 100% rename from bochs/cpu/bit64.cc rename to simulators/bochs/cpu/bit64.cc diff --git a/bochs/cpu/call_far.cc b/simulators/bochs/cpu/call_far.cc similarity index 100% rename from bochs/cpu/call_far.cc rename to simulators/bochs/cpu/call_far.cc diff --git a/bochs/cpu/cpu.cc b/simulators/bochs/cpu/cpu.cc similarity index 100% rename from bochs/cpu/cpu.cc rename to simulators/bochs/cpu/cpu.cc diff --git a/bochs/cpu/cpu.h b/simulators/bochs/cpu/cpu.h similarity index 100% rename from bochs/cpu/cpu.h rename to simulators/bochs/cpu/cpu.h diff --git a/bochs/cpu/cpuid.cc b/simulators/bochs/cpu/cpuid.cc similarity index 100% rename from bochs/cpu/cpuid.cc rename to simulators/bochs/cpu/cpuid.cc diff --git a/bochs/cpu/crc32.cc b/simulators/bochs/cpu/crc32.cc similarity index 100% rename from bochs/cpu/crc32.cc rename to simulators/bochs/cpu/crc32.cc diff --git a/bochs/cpu/crregs.cc b/simulators/bochs/cpu/crregs.cc similarity index 100% rename from bochs/cpu/crregs.cc rename to simulators/bochs/cpu/crregs.cc diff --git a/bochs/cpu/crregs.h b/simulators/bochs/cpu/crregs.h similarity index 100% rename from bochs/cpu/crregs.h rename to simulators/bochs/cpu/crregs.h diff --git a/bochs/cpu/ctrl_xfer16.cc b/simulators/bochs/cpu/ctrl_xfer16.cc similarity index 100% rename from bochs/cpu/ctrl_xfer16.cc rename to simulators/bochs/cpu/ctrl_xfer16.cc diff --git a/bochs/cpu/ctrl_xfer32.cc b/simulators/bochs/cpu/ctrl_xfer32.cc similarity index 100% rename from bochs/cpu/ctrl_xfer32.cc rename to simulators/bochs/cpu/ctrl_xfer32.cc diff --git a/bochs/cpu/ctrl_xfer64.cc b/simulators/bochs/cpu/ctrl_xfer64.cc similarity index 100% rename from bochs/cpu/ctrl_xfer64.cc rename to simulators/bochs/cpu/ctrl_xfer64.cc diff --git a/bochs/cpu/ctrl_xfer_pro.cc b/simulators/bochs/cpu/ctrl_xfer_pro.cc similarity index 100% rename from bochs/cpu/ctrl_xfer_pro.cc rename to simulators/bochs/cpu/ctrl_xfer_pro.cc diff --git a/bochs/cpu/data_xfer16.cc b/simulators/bochs/cpu/data_xfer16.cc similarity index 100% rename from bochs/cpu/data_xfer16.cc rename to simulators/bochs/cpu/data_xfer16.cc diff --git a/bochs/cpu/data_xfer32.cc b/simulators/bochs/cpu/data_xfer32.cc similarity index 100% rename from bochs/cpu/data_xfer32.cc rename to simulators/bochs/cpu/data_xfer32.cc diff --git a/bochs/cpu/data_xfer64.cc b/simulators/bochs/cpu/data_xfer64.cc similarity index 100% rename from bochs/cpu/data_xfer64.cc rename to simulators/bochs/cpu/data_xfer64.cc diff --git a/bochs/cpu/data_xfer8.cc b/simulators/bochs/cpu/data_xfer8.cc similarity index 100% rename from bochs/cpu/data_xfer8.cc rename to simulators/bochs/cpu/data_xfer8.cc diff --git a/bochs/cpu/debugstuff.cc b/simulators/bochs/cpu/debugstuff.cc similarity index 100% rename from bochs/cpu/debugstuff.cc rename to simulators/bochs/cpu/debugstuff.cc diff --git a/bochs/cpu/descriptor.h b/simulators/bochs/cpu/descriptor.h similarity index 100% rename from bochs/cpu/descriptor.h rename to simulators/bochs/cpu/descriptor.h diff --git a/bochs/cpu/exception.cc b/simulators/bochs/cpu/exception.cc similarity index 100% rename from bochs/cpu/exception.cc rename to simulators/bochs/cpu/exception.cc diff --git a/bochs/cpu/fetchdecode.cc b/simulators/bochs/cpu/fetchdecode.cc similarity index 100% rename from bochs/cpu/fetchdecode.cc rename to simulators/bochs/cpu/fetchdecode.cc diff --git a/bochs/cpu/fetchdecode.h b/simulators/bochs/cpu/fetchdecode.h similarity index 100% rename from bochs/cpu/fetchdecode.h rename to simulators/bochs/cpu/fetchdecode.h diff --git a/bochs/cpu/fetchdecode64.cc b/simulators/bochs/cpu/fetchdecode64.cc similarity index 100% rename from bochs/cpu/fetchdecode64.cc rename to simulators/bochs/cpu/fetchdecode64.cc diff --git a/bochs/cpu/fetchdecode_sse.h b/simulators/bochs/cpu/fetchdecode_sse.h similarity index 100% rename from bochs/cpu/fetchdecode_sse.h rename to simulators/bochs/cpu/fetchdecode_sse.h diff --git a/bochs/cpu/fetchdecode_x87.h b/simulators/bochs/cpu/fetchdecode_x87.h similarity index 100% rename from bochs/cpu/fetchdecode_x87.h rename to simulators/bochs/cpu/fetchdecode_x87.h diff --git a/bochs/cpu/flag_ctrl.cc b/simulators/bochs/cpu/flag_ctrl.cc similarity index 100% rename from bochs/cpu/flag_ctrl.cc rename to simulators/bochs/cpu/flag_ctrl.cc diff --git a/bochs/cpu/flag_ctrl_pro.cc b/simulators/bochs/cpu/flag_ctrl_pro.cc similarity index 100% rename from bochs/cpu/flag_ctrl_pro.cc rename to simulators/bochs/cpu/flag_ctrl_pro.cc diff --git a/bochs/cpu/fpu_emu.cc b/simulators/bochs/cpu/fpu_emu.cc similarity index 100% rename from bochs/cpu/fpu_emu.cc rename to simulators/bochs/cpu/fpu_emu.cc diff --git a/bochs/cpu/i387.h b/simulators/bochs/cpu/i387.h similarity index 100% rename from bochs/cpu/i387.h rename to simulators/bochs/cpu/i387.h diff --git a/bochs/cpu/ia_opcodes.h b/simulators/bochs/cpu/ia_opcodes.h similarity index 100% rename from bochs/cpu/ia_opcodes.h rename to simulators/bochs/cpu/ia_opcodes.h diff --git a/bochs/cpu/icache.cc b/simulators/bochs/cpu/icache.cc similarity index 100% rename from bochs/cpu/icache.cc rename to simulators/bochs/cpu/icache.cc diff --git a/bochs/cpu/icache.h b/simulators/bochs/cpu/icache.h similarity index 100% rename from bochs/cpu/icache.h rename to simulators/bochs/cpu/icache.h diff --git a/bochs/cpu/init.cc b/simulators/bochs/cpu/init.cc similarity index 100% rename from bochs/cpu/init.cc rename to simulators/bochs/cpu/init.cc diff --git a/bochs/cpu/instr.h b/simulators/bochs/cpu/instr.h similarity index 100% rename from bochs/cpu/instr.h rename to simulators/bochs/cpu/instr.h diff --git a/bochs/cpu/io.cc b/simulators/bochs/cpu/io.cc similarity index 100% rename from bochs/cpu/io.cc rename to simulators/bochs/cpu/io.cc diff --git a/bochs/cpu/iret.cc b/simulators/bochs/cpu/iret.cc similarity index 100% rename from bochs/cpu/iret.cc rename to simulators/bochs/cpu/iret.cc diff --git a/bochs/cpu/jmp_far.cc b/simulators/bochs/cpu/jmp_far.cc similarity index 100% rename from bochs/cpu/jmp_far.cc rename to simulators/bochs/cpu/jmp_far.cc diff --git a/bochs/cpu/lazy_flags.cc b/simulators/bochs/cpu/lazy_flags.cc similarity index 100% rename from bochs/cpu/lazy_flags.cc rename to simulators/bochs/cpu/lazy_flags.cc diff --git a/bochs/cpu/lazy_flags.h b/simulators/bochs/cpu/lazy_flags.h similarity index 100% rename from bochs/cpu/lazy_flags.h rename to simulators/bochs/cpu/lazy_flags.h diff --git a/bochs/cpu/load.cc b/simulators/bochs/cpu/load.cc similarity index 100% rename from bochs/cpu/load.cc rename to simulators/bochs/cpu/load.cc diff --git a/bochs/cpu/logical16.cc b/simulators/bochs/cpu/logical16.cc similarity index 100% rename from bochs/cpu/logical16.cc rename to simulators/bochs/cpu/logical16.cc diff --git a/bochs/cpu/logical32.cc b/simulators/bochs/cpu/logical32.cc similarity index 100% rename from bochs/cpu/logical32.cc rename to simulators/bochs/cpu/logical32.cc diff --git a/bochs/cpu/logical64.cc b/simulators/bochs/cpu/logical64.cc similarity index 100% rename from bochs/cpu/logical64.cc rename to simulators/bochs/cpu/logical64.cc diff --git a/bochs/cpu/logical8.cc b/simulators/bochs/cpu/logical8.cc similarity index 100% rename from bochs/cpu/logical8.cc rename to simulators/bochs/cpu/logical8.cc diff --git a/bochs/cpu/mmx.cc b/simulators/bochs/cpu/mmx.cc similarity index 100% rename from bochs/cpu/mmx.cc rename to simulators/bochs/cpu/mmx.cc diff --git a/bochs/cpu/model_specific.h b/simulators/bochs/cpu/model_specific.h similarity index 100% rename from bochs/cpu/model_specific.h rename to simulators/bochs/cpu/model_specific.h diff --git a/bochs/cpu/msr.cc b/simulators/bochs/cpu/msr.cc similarity index 100% rename from bochs/cpu/msr.cc rename to simulators/bochs/cpu/msr.cc diff --git a/bochs/cpu/mult16.cc b/simulators/bochs/cpu/mult16.cc similarity index 100% rename from bochs/cpu/mult16.cc rename to simulators/bochs/cpu/mult16.cc diff --git a/bochs/cpu/mult32.cc b/simulators/bochs/cpu/mult32.cc similarity index 100% rename from bochs/cpu/mult32.cc rename to simulators/bochs/cpu/mult32.cc diff --git a/bochs/cpu/mult64.cc b/simulators/bochs/cpu/mult64.cc similarity index 100% rename from bochs/cpu/mult64.cc rename to simulators/bochs/cpu/mult64.cc diff --git a/bochs/cpu/mult8.cc b/simulators/bochs/cpu/mult8.cc similarity index 100% rename from bochs/cpu/mult8.cc rename to simulators/bochs/cpu/mult8.cc diff --git a/bochs/cpu/paging.cc b/simulators/bochs/cpu/paging.cc similarity index 100% rename from bochs/cpu/paging.cc rename to simulators/bochs/cpu/paging.cc diff --git a/bochs/cpu/proc_ctrl.cc b/simulators/bochs/cpu/proc_ctrl.cc similarity index 100% rename from bochs/cpu/proc_ctrl.cc rename to simulators/bochs/cpu/proc_ctrl.cc diff --git a/bochs/cpu/protect_ctrl.cc b/simulators/bochs/cpu/protect_ctrl.cc similarity index 100% rename from bochs/cpu/protect_ctrl.cc rename to simulators/bochs/cpu/protect_ctrl.cc diff --git a/bochs/cpu/resolver.cc b/simulators/bochs/cpu/resolver.cc similarity index 100% rename from bochs/cpu/resolver.cc rename to simulators/bochs/cpu/resolver.cc diff --git a/bochs/cpu/ret_far.cc b/simulators/bochs/cpu/ret_far.cc similarity index 100% rename from bochs/cpu/ret_far.cc rename to simulators/bochs/cpu/ret_far.cc diff --git a/bochs/cpu/segment_ctrl.cc b/simulators/bochs/cpu/segment_ctrl.cc similarity index 100% rename from bochs/cpu/segment_ctrl.cc rename to simulators/bochs/cpu/segment_ctrl.cc diff --git a/bochs/cpu/segment_ctrl_pro.cc b/simulators/bochs/cpu/segment_ctrl_pro.cc similarity index 100% rename from bochs/cpu/segment_ctrl_pro.cc rename to simulators/bochs/cpu/segment_ctrl_pro.cc diff --git a/bochs/cpu/shift16.cc b/simulators/bochs/cpu/shift16.cc similarity index 100% rename from bochs/cpu/shift16.cc rename to simulators/bochs/cpu/shift16.cc diff --git a/bochs/cpu/shift32.cc b/simulators/bochs/cpu/shift32.cc similarity index 100% rename from bochs/cpu/shift32.cc rename to simulators/bochs/cpu/shift32.cc diff --git a/bochs/cpu/shift64.cc b/simulators/bochs/cpu/shift64.cc similarity index 100% rename from bochs/cpu/shift64.cc rename to simulators/bochs/cpu/shift64.cc diff --git a/bochs/cpu/shift8.cc b/simulators/bochs/cpu/shift8.cc similarity index 100% rename from bochs/cpu/shift8.cc rename to simulators/bochs/cpu/shift8.cc diff --git a/bochs/cpu/smm.cc b/simulators/bochs/cpu/smm.cc similarity index 100% rename from bochs/cpu/smm.cc rename to simulators/bochs/cpu/smm.cc diff --git a/bochs/cpu/smm.h b/simulators/bochs/cpu/smm.h similarity index 100% rename from bochs/cpu/smm.h rename to simulators/bochs/cpu/smm.h diff --git a/bochs/cpu/soft_int.cc b/simulators/bochs/cpu/soft_int.cc similarity index 100% rename from bochs/cpu/soft_int.cc rename to simulators/bochs/cpu/soft_int.cc diff --git a/bochs/cpu/sse.cc b/simulators/bochs/cpu/sse.cc similarity index 100% rename from bochs/cpu/sse.cc rename to simulators/bochs/cpu/sse.cc diff --git a/bochs/cpu/sse_move.cc b/simulators/bochs/cpu/sse_move.cc similarity index 100% rename from bochs/cpu/sse_move.cc rename to simulators/bochs/cpu/sse_move.cc diff --git a/bochs/cpu/sse_pfp.cc b/simulators/bochs/cpu/sse_pfp.cc similarity index 100% rename from bochs/cpu/sse_pfp.cc rename to simulators/bochs/cpu/sse_pfp.cc diff --git a/bochs/cpu/sse_rcp.cc b/simulators/bochs/cpu/sse_rcp.cc similarity index 100% rename from bochs/cpu/sse_rcp.cc rename to simulators/bochs/cpu/sse_rcp.cc diff --git a/bochs/cpu/sse_string.cc b/simulators/bochs/cpu/sse_string.cc similarity index 100% rename from bochs/cpu/sse_string.cc rename to simulators/bochs/cpu/sse_string.cc diff --git a/bochs/cpu/stack.h b/simulators/bochs/cpu/stack.h similarity index 100% rename from bochs/cpu/stack.h rename to simulators/bochs/cpu/stack.h diff --git a/bochs/cpu/stack16.cc b/simulators/bochs/cpu/stack16.cc similarity index 100% rename from bochs/cpu/stack16.cc rename to simulators/bochs/cpu/stack16.cc diff --git a/bochs/cpu/stack32.cc b/simulators/bochs/cpu/stack32.cc similarity index 100% rename from bochs/cpu/stack32.cc rename to simulators/bochs/cpu/stack32.cc diff --git a/bochs/cpu/stack64.cc b/simulators/bochs/cpu/stack64.cc similarity index 100% rename from bochs/cpu/stack64.cc rename to simulators/bochs/cpu/stack64.cc diff --git a/bochs/cpu/string.cc b/simulators/bochs/cpu/string.cc similarity index 100% rename from bochs/cpu/string.cc rename to simulators/bochs/cpu/string.cc diff --git a/bochs/cpu/tasking.cc b/simulators/bochs/cpu/tasking.cc similarity index 100% rename from bochs/cpu/tasking.cc rename to simulators/bochs/cpu/tasking.cc diff --git a/bochs/cpu/todo b/simulators/bochs/cpu/todo similarity index 100% rename from bochs/cpu/todo rename to simulators/bochs/cpu/todo diff --git a/bochs/cpu/vm8086.cc b/simulators/bochs/cpu/vm8086.cc similarity index 100% rename from bochs/cpu/vm8086.cc rename to simulators/bochs/cpu/vm8086.cc diff --git a/bochs/cpu/vmcs.cc b/simulators/bochs/cpu/vmcs.cc similarity index 100% rename from bochs/cpu/vmcs.cc rename to simulators/bochs/cpu/vmcs.cc diff --git a/bochs/cpu/vmexit.cc b/simulators/bochs/cpu/vmexit.cc similarity index 100% rename from bochs/cpu/vmexit.cc rename to simulators/bochs/cpu/vmexit.cc diff --git a/bochs/cpu/vmx.cc b/simulators/bochs/cpu/vmx.cc similarity index 100% rename from bochs/cpu/vmx.cc rename to simulators/bochs/cpu/vmx.cc diff --git a/bochs/cpu/vmx.h b/simulators/bochs/cpu/vmx.h similarity index 100% rename from bochs/cpu/vmx.h rename to simulators/bochs/cpu/vmx.h diff --git a/bochs/cpu/xmm.h b/simulators/bochs/cpu/xmm.h similarity index 100% rename from bochs/cpu/xmm.h rename to simulators/bochs/cpu/xmm.h diff --git a/bochs/cpu/xsave.cc b/simulators/bochs/cpu/xsave.cc similarity index 100% rename from bochs/cpu/xsave.cc rename to simulators/bochs/cpu/xsave.cc diff --git a/bochs/crc.cc b/simulators/bochs/crc.cc similarity index 100% rename from bochs/crc.cc rename to simulators/bochs/crc.cc diff --git a/bochs/disasm/Makefile.in b/simulators/bochs/disasm/Makefile.in similarity index 100% rename from bochs/disasm/Makefile.in rename to simulators/bochs/disasm/Makefile.in diff --git a/bochs/disasm/dis_decode.cc b/simulators/bochs/disasm/dis_decode.cc similarity index 100% rename from bochs/disasm/dis_decode.cc rename to simulators/bochs/disasm/dis_decode.cc diff --git a/bochs/disasm/dis_groups.cc b/simulators/bochs/disasm/dis_groups.cc similarity index 100% rename from bochs/disasm/dis_groups.cc rename to simulators/bochs/disasm/dis_groups.cc diff --git a/bochs/disasm/dis_tables.h b/simulators/bochs/disasm/dis_tables.h similarity index 100% rename from bochs/disasm/dis_tables.h rename to simulators/bochs/disasm/dis_tables.h diff --git a/bochs/disasm/dis_tables.inc b/simulators/bochs/disasm/dis_tables.inc similarity index 100% rename from bochs/disasm/dis_tables.inc rename to simulators/bochs/disasm/dis_tables.inc diff --git a/bochs/disasm/dis_tables_sse.inc b/simulators/bochs/disasm/dis_tables_sse.inc similarity index 100% rename from bochs/disasm/dis_tables_sse.inc rename to simulators/bochs/disasm/dis_tables_sse.inc diff --git a/bochs/disasm/dis_tables_x87.inc b/simulators/bochs/disasm/dis_tables_x87.inc similarity index 100% rename from bochs/disasm/dis_tables_x87.inc rename to simulators/bochs/disasm/dis_tables_x87.inc diff --git a/bochs/disasm/disasm.h b/simulators/bochs/disasm/disasm.h similarity index 100% rename from bochs/disasm/disasm.h rename to simulators/bochs/disasm/disasm.h diff --git a/bochs/disasm/opcodes.inc b/simulators/bochs/disasm/opcodes.inc similarity index 100% rename from bochs/disasm/opcodes.inc rename to simulators/bochs/disasm/opcodes.inc diff --git a/bochs/disasm/resolve.cc b/simulators/bochs/disasm/resolve.cc similarity index 100% rename from bochs/disasm/resolve.cc rename to simulators/bochs/disasm/resolve.cc diff --git a/bochs/disasm/syntax.cc b/simulators/bochs/disasm/syntax.cc similarity index 100% rename from bochs/disasm/syntax.cc rename to simulators/bochs/disasm/syntax.cc diff --git a/bochs/doc/docbook/Makefile.in b/simulators/bochs/doc/docbook/Makefile.in similarity index 100% rename from bochs/doc/docbook/Makefile.in rename to simulators/bochs/doc/docbook/Makefile.in diff --git a/bochs/doc/docbook/Makefile.jade b/simulators/bochs/doc/docbook/Makefile.jade similarity index 100% rename from bochs/doc/docbook/Makefile.jade rename to simulators/bochs/doc/docbook/Makefile.jade diff --git a/bochs/doc/docbook/README b/simulators/bochs/doc/docbook/README similarity index 100% rename from bochs/doc/docbook/README rename to simulators/bochs/doc/docbook/README diff --git a/bochs/doc/docbook/development/development.dbk b/simulators/bochs/doc/docbook/development/development.dbk similarity index 100% rename from bochs/doc/docbook/development/development.dbk rename to simulators/bochs/doc/docbook/development/development.dbk diff --git a/bochs/doc/docbook/documentation/documentation.dbk b/simulators/bochs/doc/docbook/documentation/documentation.dbk similarity index 100% rename from bochs/doc/docbook/documentation/documentation.dbk rename to simulators/bochs/doc/docbook/documentation/documentation.dbk diff --git a/bochs/doc/docbook/fixtitles.pl b/simulators/bochs/doc/docbook/fixtitles.pl similarity index 100% rename from bochs/doc/docbook/fixtitles.pl rename to simulators/bochs/doc/docbook/fixtitles.pl diff --git a/bochs/doc/docbook/images/dlxlinux-in-linux.png b/simulators/bochs/doc/docbook/images/dlxlinux-in-linux.png similarity index 100% rename from bochs/doc/docbook/images/dlxlinux-in-linux.png rename to simulators/bochs/doc/docbook/images/dlxlinux-in-linux.png diff --git a/bochs/doc/docbook/images/headerbar.png b/simulators/bochs/doc/docbook/images/headerbar.png similarity index 100% rename from bochs/doc/docbook/images/headerbar.png rename to simulators/bochs/doc/docbook/images/headerbar.png diff --git a/bochs/doc/docbook/images/undercon.png b/simulators/bochs/doc/docbook/images/undercon.png similarity index 100% rename from bochs/doc/docbook/images/undercon.png rename to simulators/bochs/doc/docbook/images/undercon.png diff --git a/bochs/doc/docbook/include/defs.sgm b/simulators/bochs/doc/docbook/include/defs.sgm similarity index 100% rename from bochs/doc/docbook/include/defs.sgm rename to simulators/bochs/doc/docbook/include/defs.sgm diff --git a/bochs/doc/docbook/index.html b/simulators/bochs/doc/docbook/index.html similarity index 100% rename from bochs/doc/docbook/index.html rename to simulators/bochs/doc/docbook/index.html diff --git a/bochs/doc/docbook/misc.txt b/simulators/bochs/doc/docbook/misc.txt similarity index 100% rename from bochs/doc/docbook/misc.txt rename to simulators/bochs/doc/docbook/misc.txt diff --git a/bochs/doc/docbook/outline.txt b/simulators/bochs/doc/docbook/outline.txt similarity index 100% rename from bochs/doc/docbook/outline.txt rename to simulators/bochs/doc/docbook/outline.txt diff --git a/bochs/doc/docbook/user/user.dbk b/simulators/bochs/doc/docbook/user/user.dbk similarity index 100% rename from bochs/doc/docbook/user/user.dbk rename to simulators/bochs/doc/docbook/user/user.dbk diff --git a/bochs/doc/man/bochs-dlx.1 b/simulators/bochs/doc/man/bochs-dlx.1 similarity index 100% rename from bochs/doc/man/bochs-dlx.1 rename to simulators/bochs/doc/man/bochs-dlx.1 diff --git a/bochs/doc/man/bochs.1 b/simulators/bochs/doc/man/bochs.1 similarity index 100% rename from bochs/doc/man/bochs.1 rename to simulators/bochs/doc/man/bochs.1 diff --git a/bochs/doc/man/bochsrc.5 b/simulators/bochs/doc/man/bochsrc.5 similarity index 100% rename from bochs/doc/man/bochsrc.5 rename to simulators/bochs/doc/man/bochsrc.5 diff --git a/bochs/doc/man/bxcommit.1 b/simulators/bochs/doc/man/bxcommit.1 similarity index 100% rename from bochs/doc/man/bxcommit.1 rename to simulators/bochs/doc/man/bxcommit.1 diff --git a/bochs/doc/man/bximage.1 b/simulators/bochs/doc/man/bximage.1 similarity index 100% rename from bochs/doc/man/bximage.1 rename to simulators/bochs/doc/man/bximage.1 diff --git a/bochs/docs-html/00README b/simulators/bochs/docs-html/00README similarity index 100% rename from bochs/docs-html/00README rename to simulators/bochs/docs-html/00README diff --git a/bochs/docs-html/biossums.txt b/simulators/bochs/docs-html/biossums.txt similarity index 100% rename from bochs/docs-html/biossums.txt rename to simulators/bochs/docs-html/biossums.txt diff --git a/bochs/docs-html/cosimulation.html b/simulators/bochs/docs-html/cosimulation.html similarity index 100% rename from bochs/docs-html/cosimulation.html rename to simulators/bochs/docs-html/cosimulation.html diff --git a/bochs/docs-html/enh_dbg_user_man.txt b/simulators/bochs/docs-html/enh_dbg_user_man.txt similarity index 100% rename from bochs/docs-html/enh_dbg_user_man.txt rename to simulators/bochs/docs-html/enh_dbg_user_man.txt diff --git a/bochs/docs-html/memory.txt b/simulators/bochs/docs-html/memory.txt similarity index 100% rename from bochs/docs-html/memory.txt rename to simulators/bochs/docs-html/memory.txt diff --git a/bochs/docs-html/random.txt b/simulators/bochs/docs-html/random.txt similarity index 100% rename from bochs/docs-html/random.txt rename to simulators/bochs/docs-html/random.txt diff --git a/bochs/dynamic/README b/simulators/bochs/dynamic/README similarity index 100% rename from bochs/dynamic/README rename to simulators/bochs/dynamic/README diff --git a/bochs/extplugin.h b/simulators/bochs/extplugin.h similarity index 100% rename from bochs/extplugin.h rename to simulators/bochs/extplugin.h diff --git a/bochs/font/vga.bitmap.h b/simulators/bochs/font/vga.bitmap.h similarity index 100% rename from bochs/font/vga.bitmap.h rename to simulators/bochs/font/vga.bitmap.h diff --git a/bochs/fpu/Makefile.in b/simulators/bochs/fpu/Makefile.in similarity index 100% rename from bochs/fpu/Makefile.in rename to simulators/bochs/fpu/Makefile.in diff --git a/bochs/fpu/control_w.h b/simulators/bochs/fpu/control_w.h similarity index 100% rename from bochs/fpu/control_w.h rename to simulators/bochs/fpu/control_w.h diff --git a/bochs/fpu/f2xm1.cc b/simulators/bochs/fpu/f2xm1.cc similarity index 100% rename from bochs/fpu/f2xm1.cc rename to simulators/bochs/fpu/f2xm1.cc diff --git a/bochs/fpu/ferr.cc b/simulators/bochs/fpu/ferr.cc similarity index 100% rename from bochs/fpu/ferr.cc rename to simulators/bochs/fpu/ferr.cc diff --git a/bochs/fpu/fpatan.cc b/simulators/bochs/fpu/fpatan.cc similarity index 100% rename from bochs/fpu/fpatan.cc rename to simulators/bochs/fpu/fpatan.cc diff --git a/bochs/fpu/fprem.cc b/simulators/bochs/fpu/fprem.cc similarity index 100% rename from bochs/fpu/fprem.cc rename to simulators/bochs/fpu/fprem.cc diff --git a/bochs/fpu/fpu.cc b/simulators/bochs/fpu/fpu.cc similarity index 100% rename from bochs/fpu/fpu.cc rename to simulators/bochs/fpu/fpu.cc diff --git a/bochs/fpu/fpu_arith.cc b/simulators/bochs/fpu/fpu_arith.cc similarity index 100% rename from bochs/fpu/fpu_arith.cc rename to simulators/bochs/fpu/fpu_arith.cc diff --git a/bochs/fpu/fpu_compare.cc b/simulators/bochs/fpu/fpu_compare.cc similarity index 100% rename from bochs/fpu/fpu_compare.cc rename to simulators/bochs/fpu/fpu_compare.cc diff --git a/bochs/fpu/fpu_const.cc b/simulators/bochs/fpu/fpu_const.cc similarity index 100% rename from bochs/fpu/fpu_const.cc rename to simulators/bochs/fpu/fpu_const.cc diff --git a/bochs/fpu/fpu_constant.h b/simulators/bochs/fpu/fpu_constant.h similarity index 100% rename from bochs/fpu/fpu_constant.h rename to simulators/bochs/fpu/fpu_constant.h diff --git a/bochs/fpu/fpu_load_store.cc b/simulators/bochs/fpu/fpu_load_store.cc similarity index 100% rename from bochs/fpu/fpu_load_store.cc rename to simulators/bochs/fpu/fpu_load_store.cc diff --git a/bochs/fpu/fpu_misc.cc b/simulators/bochs/fpu/fpu_misc.cc similarity index 100% rename from bochs/fpu/fpu_misc.cc rename to simulators/bochs/fpu/fpu_misc.cc diff --git a/bochs/fpu/fpu_tags.cc b/simulators/bochs/fpu/fpu_tags.cc similarity index 100% rename from bochs/fpu/fpu_tags.cc rename to simulators/bochs/fpu/fpu_tags.cc diff --git a/bochs/fpu/fpu_trans.cc b/simulators/bochs/fpu/fpu_trans.cc similarity index 100% rename from bochs/fpu/fpu_trans.cc rename to simulators/bochs/fpu/fpu_trans.cc diff --git a/bochs/fpu/fsincos.cc b/simulators/bochs/fpu/fsincos.cc similarity index 100% rename from bochs/fpu/fsincos.cc rename to simulators/bochs/fpu/fsincos.cc diff --git a/bochs/fpu/fyl2x.cc b/simulators/bochs/fpu/fyl2x.cc similarity index 100% rename from bochs/fpu/fyl2x.cc rename to simulators/bochs/fpu/fyl2x.cc diff --git a/bochs/fpu/poly.cc b/simulators/bochs/fpu/poly.cc similarity index 100% rename from bochs/fpu/poly.cc rename to simulators/bochs/fpu/poly.cc diff --git a/bochs/fpu/softfloat-compare.h b/simulators/bochs/fpu/softfloat-compare.h similarity index 100% rename from bochs/fpu/softfloat-compare.h rename to simulators/bochs/fpu/softfloat-compare.h diff --git a/bochs/fpu/softfloat-macros.h b/simulators/bochs/fpu/softfloat-macros.h similarity index 100% rename from bochs/fpu/softfloat-macros.h rename to simulators/bochs/fpu/softfloat-macros.h diff --git a/bochs/fpu/softfloat-round-pack.cc b/simulators/bochs/fpu/softfloat-round-pack.cc similarity index 100% rename from bochs/fpu/softfloat-round-pack.cc rename to simulators/bochs/fpu/softfloat-round-pack.cc diff --git a/bochs/fpu/softfloat-round-pack.h b/simulators/bochs/fpu/softfloat-round-pack.h similarity index 100% rename from bochs/fpu/softfloat-round-pack.h rename to simulators/bochs/fpu/softfloat-round-pack.h diff --git a/bochs/fpu/softfloat-specialize.cc b/simulators/bochs/fpu/softfloat-specialize.cc similarity index 100% rename from bochs/fpu/softfloat-specialize.cc rename to simulators/bochs/fpu/softfloat-specialize.cc diff --git a/bochs/fpu/softfloat-specialize.h b/simulators/bochs/fpu/softfloat-specialize.h similarity index 100% rename from bochs/fpu/softfloat-specialize.h rename to simulators/bochs/fpu/softfloat-specialize.h diff --git a/bochs/fpu/softfloat.cc b/simulators/bochs/fpu/softfloat.cc similarity index 100% rename from bochs/fpu/softfloat.cc rename to simulators/bochs/fpu/softfloat.cc diff --git a/bochs/fpu/softfloat.h b/simulators/bochs/fpu/softfloat.h similarity index 100% rename from bochs/fpu/softfloat.h rename to simulators/bochs/fpu/softfloat.h diff --git a/bochs/fpu/softfloatx80.cc b/simulators/bochs/fpu/softfloatx80.cc similarity index 100% rename from bochs/fpu/softfloatx80.cc rename to simulators/bochs/fpu/softfloatx80.cc diff --git a/bochs/fpu/softfloatx80.h b/simulators/bochs/fpu/softfloatx80.h similarity index 100% rename from bochs/fpu/softfloatx80.h rename to simulators/bochs/fpu/softfloatx80.h diff --git a/bochs/fpu/status_w.h b/simulators/bochs/fpu/status_w.h similarity index 100% rename from bochs/fpu/status_w.h rename to simulators/bochs/fpu/status_w.h diff --git a/bochs/fpu/tag_w.h b/simulators/bochs/fpu/tag_w.h similarity index 100% rename from bochs/fpu/tag_w.h rename to simulators/bochs/fpu/tag_w.h diff --git a/bochs/fpu/todo b/simulators/bochs/fpu/todo similarity index 100% rename from bochs/fpu/todo rename to simulators/bochs/fpu/todo diff --git a/bochs/gdbstub.cc b/simulators/bochs/gdbstub.cc similarity index 100% rename from bochs/gdbstub.cc rename to simulators/bochs/gdbstub.cc diff --git a/bochs/gui/Makefile.in b/simulators/bochs/gui/Makefile.in similarity index 100% rename from bochs/gui/Makefile.in rename to simulators/bochs/gui/Makefile.in diff --git a/bochs/gui/amigagui.h b/simulators/bochs/gui/amigagui.h similarity index 100% rename from bochs/gui/amigagui.h rename to simulators/bochs/gui/amigagui.h diff --git a/bochs/gui/amigaos.cc b/simulators/bochs/gui/amigaos.cc similarity index 100% rename from bochs/gui/amigaos.cc rename to simulators/bochs/gui/amigaos.cc diff --git a/bochs/gui/beos.cc b/simulators/bochs/gui/beos.cc similarity index 100% rename from bochs/gui/beos.cc rename to simulators/bochs/gui/beos.cc diff --git a/bochs/gui/bitmaps/cdromd.h b/simulators/bochs/gui/bitmaps/cdromd.h similarity index 100% rename from bochs/gui/bitmaps/cdromd.h rename to simulators/bochs/gui/bitmaps/cdromd.h diff --git a/bochs/gui/bitmaps/cdromd.xpm b/simulators/bochs/gui/bitmaps/cdromd.xpm similarity index 100% rename from bochs/gui/bitmaps/cdromd.xpm rename to simulators/bochs/gui/bitmaps/cdromd.xpm diff --git a/bochs/gui/bitmaps/configbutton.h b/simulators/bochs/gui/bitmaps/configbutton.h similarity index 100% rename from bochs/gui/bitmaps/configbutton.h rename to simulators/bochs/gui/bitmaps/configbutton.h diff --git a/bochs/gui/bitmaps/configbutton.xpm b/simulators/bochs/gui/bitmaps/configbutton.xpm similarity index 100% rename from bochs/gui/bitmaps/configbutton.xpm rename to simulators/bochs/gui/bitmaps/configbutton.xpm diff --git a/bochs/gui/bitmaps/copy.h b/simulators/bochs/gui/bitmaps/copy.h similarity index 100% rename from bochs/gui/bitmaps/copy.h rename to simulators/bochs/gui/bitmaps/copy.h diff --git a/bochs/gui/bitmaps/copy.xpm b/simulators/bochs/gui/bitmaps/copy.xpm similarity index 100% rename from bochs/gui/bitmaps/copy.xpm rename to simulators/bochs/gui/bitmaps/copy.xpm diff --git a/bochs/gui/bitmaps/floppya.h b/simulators/bochs/gui/bitmaps/floppya.h similarity index 100% rename from bochs/gui/bitmaps/floppya.h rename to simulators/bochs/gui/bitmaps/floppya.h diff --git a/bochs/gui/bitmaps/floppya.xpm b/simulators/bochs/gui/bitmaps/floppya.xpm similarity index 100% rename from bochs/gui/bitmaps/floppya.xpm rename to simulators/bochs/gui/bitmaps/floppya.xpm diff --git a/bochs/gui/bitmaps/floppyb.h b/simulators/bochs/gui/bitmaps/floppyb.h similarity index 100% rename from bochs/gui/bitmaps/floppyb.h rename to simulators/bochs/gui/bitmaps/floppyb.h diff --git a/bochs/gui/bitmaps/floppyb.xpm b/simulators/bochs/gui/bitmaps/floppyb.xpm similarity index 100% rename from bochs/gui/bitmaps/floppyb.xpm rename to simulators/bochs/gui/bitmaps/floppyb.xpm diff --git a/bochs/gui/bitmaps/mouse.h b/simulators/bochs/gui/bitmaps/mouse.h similarity index 100% rename from bochs/gui/bitmaps/mouse.h rename to simulators/bochs/gui/bitmaps/mouse.h diff --git a/bochs/gui/bitmaps/mouse.xpm b/simulators/bochs/gui/bitmaps/mouse.xpm similarity index 100% rename from bochs/gui/bitmaps/mouse.xpm rename to simulators/bochs/gui/bitmaps/mouse.xpm diff --git a/bochs/gui/bitmaps/paste.h b/simulators/bochs/gui/bitmaps/paste.h similarity index 100% rename from bochs/gui/bitmaps/paste.h rename to simulators/bochs/gui/bitmaps/paste.h diff --git a/bochs/gui/bitmaps/paste.xpm b/simulators/bochs/gui/bitmaps/paste.xpm similarity index 100% rename from bochs/gui/bitmaps/paste.xpm rename to simulators/bochs/gui/bitmaps/paste.xpm diff --git a/bochs/gui/bitmaps/power.h b/simulators/bochs/gui/bitmaps/power.h similarity index 100% rename from bochs/gui/bitmaps/power.h rename to simulators/bochs/gui/bitmaps/power.h diff --git a/bochs/gui/bitmaps/power.xpm b/simulators/bochs/gui/bitmaps/power.xpm similarity index 100% rename from bochs/gui/bitmaps/power.xpm rename to simulators/bochs/gui/bitmaps/power.xpm diff --git a/bochs/gui/bitmaps/reset.h b/simulators/bochs/gui/bitmaps/reset.h similarity index 100% rename from bochs/gui/bitmaps/reset.h rename to simulators/bochs/gui/bitmaps/reset.h diff --git a/bochs/gui/bitmaps/reset.xpm b/simulators/bochs/gui/bitmaps/reset.xpm similarity index 100% rename from bochs/gui/bitmaps/reset.xpm rename to simulators/bochs/gui/bitmaps/reset.xpm diff --git a/bochs/gui/bitmaps/saverestore.h b/simulators/bochs/gui/bitmaps/saverestore.h similarity index 100% rename from bochs/gui/bitmaps/saverestore.h rename to simulators/bochs/gui/bitmaps/saverestore.h diff --git a/bochs/gui/bitmaps/saverestore.xpm b/simulators/bochs/gui/bitmaps/saverestore.xpm similarity index 100% rename from bochs/gui/bitmaps/saverestore.xpm rename to simulators/bochs/gui/bitmaps/saverestore.xpm diff --git a/bochs/gui/bitmaps/snapshot.h b/simulators/bochs/gui/bitmaps/snapshot.h similarity index 100% rename from bochs/gui/bitmaps/snapshot.h rename to simulators/bochs/gui/bitmaps/snapshot.h diff --git a/bochs/gui/bitmaps/snapshot.xpm b/simulators/bochs/gui/bitmaps/snapshot.xpm similarity index 100% rename from bochs/gui/bitmaps/snapshot.xpm rename to simulators/bochs/gui/bitmaps/snapshot.xpm diff --git a/bochs/gui/bitmaps/userbutton.h b/simulators/bochs/gui/bitmaps/userbutton.h similarity index 100% rename from bochs/gui/bitmaps/userbutton.h rename to simulators/bochs/gui/bitmaps/userbutton.h diff --git a/bochs/gui/bitmaps/userbutton.xpm b/simulators/bochs/gui/bitmaps/userbutton.xpm similarity index 100% rename from bochs/gui/bitmaps/userbutton.xpm rename to simulators/bochs/gui/bitmaps/userbutton.xpm diff --git a/bochs/gui/carbon.cc b/simulators/bochs/gui/carbon.cc similarity index 100% rename from bochs/gui/carbon.cc rename to simulators/bochs/gui/carbon.cc diff --git a/bochs/gui/enh_dbg.cc b/simulators/bochs/gui/enh_dbg.cc similarity index 100% rename from bochs/gui/enh_dbg.cc rename to simulators/bochs/gui/enh_dbg.cc diff --git a/bochs/gui/enh_dbg.h b/simulators/bochs/gui/enh_dbg.h similarity index 100% rename from bochs/gui/enh_dbg.h rename to simulators/bochs/gui/enh_dbg.h diff --git a/bochs/gui/gtk_enh_dbg_osdep.cc b/simulators/bochs/gui/gtk_enh_dbg_osdep.cc similarity index 100% rename from bochs/gui/gtk_enh_dbg_osdep.cc rename to simulators/bochs/gui/gtk_enh_dbg_osdep.cc diff --git a/bochs/gui/gui.cc b/simulators/bochs/gui/gui.cc similarity index 100% rename from bochs/gui/gui.cc rename to simulators/bochs/gui/gui.cc diff --git a/bochs/gui/gui.h b/simulators/bochs/gui/gui.h similarity index 100% rename from bochs/gui/gui.h rename to simulators/bochs/gui/gui.h diff --git a/bochs/gui/icon_bochs.h b/simulators/bochs/gui/icon_bochs.h similarity index 100% rename from bochs/gui/icon_bochs.h rename to simulators/bochs/gui/icon_bochs.h diff --git a/bochs/gui/icon_bochs.xpm b/simulators/bochs/gui/icon_bochs.xpm similarity index 100% rename from bochs/gui/icon_bochs.xpm rename to simulators/bochs/gui/icon_bochs.xpm diff --git a/bochs/gui/keymap.cc b/simulators/bochs/gui/keymap.cc similarity index 100% rename from bochs/gui/keymap.cc rename to simulators/bochs/gui/keymap.cc diff --git a/bochs/gui/keymap.h b/simulators/bochs/gui/keymap.h similarity index 100% rename from bochs/gui/keymap.h rename to simulators/bochs/gui/keymap.h diff --git a/bochs/gui/keymaps/convertmap.pl b/simulators/bochs/gui/keymaps/convertmap.pl similarity index 100% rename from bochs/gui/keymaps/convertmap.pl rename to simulators/bochs/gui/keymaps/convertmap.pl diff --git a/bochs/gui/keymaps/sdl-pc-de.map b/simulators/bochs/gui/keymaps/sdl-pc-de.map similarity index 100% rename from bochs/gui/keymaps/sdl-pc-de.map rename to simulators/bochs/gui/keymaps/sdl-pc-de.map diff --git a/bochs/gui/keymaps/sdl-pc-us.map b/simulators/bochs/gui/keymaps/sdl-pc-us.map similarity index 100% rename from bochs/gui/keymaps/sdl-pc-us.map rename to simulators/bochs/gui/keymaps/sdl-pc-us.map diff --git a/bochs/gui/keymaps/x11-pc-be.map b/simulators/bochs/gui/keymaps/x11-pc-be.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-be.map rename to simulators/bochs/gui/keymaps/x11-pc-be.map diff --git a/bochs/gui/keymaps/x11-pc-da.map b/simulators/bochs/gui/keymaps/x11-pc-da.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-da.map rename to simulators/bochs/gui/keymaps/x11-pc-da.map diff --git a/bochs/gui/keymaps/x11-pc-de.map b/simulators/bochs/gui/keymaps/x11-pc-de.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-de.map rename to simulators/bochs/gui/keymaps/x11-pc-de.map diff --git a/bochs/gui/keymaps/x11-pc-es.map b/simulators/bochs/gui/keymaps/x11-pc-es.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-es.map rename to simulators/bochs/gui/keymaps/x11-pc-es.map diff --git a/bochs/gui/keymaps/x11-pc-fr.map b/simulators/bochs/gui/keymaps/x11-pc-fr.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-fr.map rename to simulators/bochs/gui/keymaps/x11-pc-fr.map diff --git a/bochs/gui/keymaps/x11-pc-it.map b/simulators/bochs/gui/keymaps/x11-pc-it.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-it.map rename to simulators/bochs/gui/keymaps/x11-pc-it.map diff --git a/bochs/gui/keymaps/x11-pc-ru.map b/simulators/bochs/gui/keymaps/x11-pc-ru.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-ru.map rename to simulators/bochs/gui/keymaps/x11-pc-ru.map diff --git a/bochs/gui/keymaps/x11-pc-se.map b/simulators/bochs/gui/keymaps/x11-pc-se.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-se.map rename to simulators/bochs/gui/keymaps/x11-pc-se.map diff --git a/bochs/gui/keymaps/x11-pc-si.map b/simulators/bochs/gui/keymaps/x11-pc-si.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-si.map rename to simulators/bochs/gui/keymaps/x11-pc-si.map diff --git a/bochs/gui/keymaps/x11-pc-uk.map b/simulators/bochs/gui/keymaps/x11-pc-uk.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-uk.map rename to simulators/bochs/gui/keymaps/x11-pc-uk.map diff --git a/bochs/gui/keymaps/x11-pc-us.map b/simulators/bochs/gui/keymaps/x11-pc-us.map similarity index 100% rename from bochs/gui/keymaps/x11-pc-us.map rename to simulators/bochs/gui/keymaps/x11-pc-us.map diff --git a/bochs/gui/macintosh.cc b/simulators/bochs/gui/macintosh.cc similarity index 100% rename from bochs/gui/macintosh.cc rename to simulators/bochs/gui/macintosh.cc diff --git a/bochs/gui/nogui.cc b/simulators/bochs/gui/nogui.cc similarity index 100% rename from bochs/gui/nogui.cc rename to simulators/bochs/gui/nogui.cc diff --git a/bochs/gui/paramtree.cc b/simulators/bochs/gui/paramtree.cc similarity index 100% rename from bochs/gui/paramtree.cc rename to simulators/bochs/gui/paramtree.cc diff --git a/bochs/gui/paramtree.h b/simulators/bochs/gui/paramtree.h similarity index 100% rename from bochs/gui/paramtree.h rename to simulators/bochs/gui/paramtree.h diff --git a/bochs/gui/rfb.cc b/simulators/bochs/gui/rfb.cc similarity index 100% rename from bochs/gui/rfb.cc rename to simulators/bochs/gui/rfb.cc diff --git a/bochs/gui/rfb.h b/simulators/bochs/gui/rfb.h similarity index 100% rename from bochs/gui/rfb.h rename to simulators/bochs/gui/rfb.h diff --git a/bochs/gui/rfbkeys.h b/simulators/bochs/gui/rfbkeys.h similarity index 100% rename from bochs/gui/rfbkeys.h rename to simulators/bochs/gui/rfbkeys.h diff --git a/bochs/gui/sdl.cc b/simulators/bochs/gui/sdl.cc similarity index 100% rename from bochs/gui/sdl.cc rename to simulators/bochs/gui/sdl.cc diff --git a/bochs/gui/sdl.h b/simulators/bochs/gui/sdl.h similarity index 100% rename from bochs/gui/sdl.h rename to simulators/bochs/gui/sdl.h diff --git a/bochs/gui/sdlkeys.h b/simulators/bochs/gui/sdlkeys.h similarity index 100% rename from bochs/gui/sdlkeys.h rename to simulators/bochs/gui/sdlkeys.h diff --git a/bochs/gui/siminterface.cc b/simulators/bochs/gui/siminterface.cc similarity index 100% rename from bochs/gui/siminterface.cc rename to simulators/bochs/gui/siminterface.cc diff --git a/bochs/gui/siminterface.h b/simulators/bochs/gui/siminterface.h similarity index 100% rename from bochs/gui/siminterface.h rename to simulators/bochs/gui/siminterface.h diff --git a/bochs/gui/svga.cc b/simulators/bochs/gui/svga.cc similarity index 100% rename from bochs/gui/svga.cc rename to simulators/bochs/gui/svga.cc diff --git a/bochs/gui/term.cc b/simulators/bochs/gui/term.cc similarity index 100% rename from bochs/gui/term.cc rename to simulators/bochs/gui/term.cc diff --git a/bochs/gui/textconfig.cc b/simulators/bochs/gui/textconfig.cc similarity index 100% rename from bochs/gui/textconfig.cc rename to simulators/bochs/gui/textconfig.cc diff --git a/bochs/gui/textconfig.h b/simulators/bochs/gui/textconfig.h similarity index 100% rename from bochs/gui/textconfig.h rename to simulators/bochs/gui/textconfig.h diff --git a/bochs/gui/wenhdbg_res.h b/simulators/bochs/gui/wenhdbg_res.h similarity index 100% rename from bochs/gui/wenhdbg_res.h rename to simulators/bochs/gui/wenhdbg_res.h diff --git a/bochs/gui/win32.cc b/simulators/bochs/gui/win32.cc similarity index 100% rename from bochs/gui/win32.cc rename to simulators/bochs/gui/win32.cc diff --git a/bochs/gui/win32_enh_dbg_osdep.cc b/simulators/bochs/gui/win32_enh_dbg_osdep.cc similarity index 100% rename from bochs/gui/win32_enh_dbg_osdep.cc rename to simulators/bochs/gui/win32_enh_dbg_osdep.cc diff --git a/bochs/gui/win32dialog.cc b/simulators/bochs/gui/win32dialog.cc similarity index 100% rename from bochs/gui/win32dialog.cc rename to simulators/bochs/gui/win32dialog.cc diff --git a/bochs/gui/win32dialog.h b/simulators/bochs/gui/win32dialog.h similarity index 100% rename from bochs/gui/win32dialog.h rename to simulators/bochs/gui/win32dialog.h diff --git a/bochs/gui/win32paramdlg.cc b/simulators/bochs/gui/win32paramdlg.cc similarity index 100% rename from bochs/gui/win32paramdlg.cc rename to simulators/bochs/gui/win32paramdlg.cc diff --git a/bochs/gui/win32paramdlg.h b/simulators/bochs/gui/win32paramdlg.h similarity index 100% rename from bochs/gui/win32paramdlg.h rename to simulators/bochs/gui/win32paramdlg.h diff --git a/bochs/gui/win32res.h b/simulators/bochs/gui/win32res.h similarity index 100% rename from bochs/gui/win32res.h rename to simulators/bochs/gui/win32res.h diff --git a/bochs/gui/wx.cc b/simulators/bochs/gui/wx.cc similarity index 100% rename from bochs/gui/wx.cc rename to simulators/bochs/gui/wx.cc diff --git a/bochs/gui/wxdialog.cc b/simulators/bochs/gui/wxdialog.cc similarity index 100% rename from bochs/gui/wxdialog.cc rename to simulators/bochs/gui/wxdialog.cc diff --git a/bochs/gui/wxdialog.h b/simulators/bochs/gui/wxdialog.h similarity index 100% rename from bochs/gui/wxdialog.h rename to simulators/bochs/gui/wxdialog.h diff --git a/bochs/gui/wxmain.cc b/simulators/bochs/gui/wxmain.cc similarity index 100% rename from bochs/gui/wxmain.cc rename to simulators/bochs/gui/wxmain.cc diff --git a/bochs/gui/wxmain.h b/simulators/bochs/gui/wxmain.h similarity index 100% rename from bochs/gui/wxmain.h rename to simulators/bochs/gui/wxmain.h diff --git a/bochs/gui/x.cc b/simulators/bochs/gui/x.cc similarity index 100% rename from bochs/gui/x.cc rename to simulators/bochs/gui/x.cc diff --git a/bochs/host/linux/pcidev/Make.kbuild b/simulators/bochs/host/linux/pcidev/Make.kbuild similarity index 100% rename from bochs/host/linux/pcidev/Make.kbuild rename to simulators/bochs/host/linux/pcidev/Make.kbuild diff --git a/bochs/host/linux/pcidev/Makefile.in b/simulators/bochs/host/linux/pcidev/Makefile.in similarity index 100% rename from bochs/host/linux/pcidev/Makefile.in rename to simulators/bochs/host/linux/pcidev/Makefile.in diff --git a/bochs/host/linux/pcidev/kernel_pcidev.h b/simulators/bochs/host/linux/pcidev/kernel_pcidev.h similarity index 100% rename from bochs/host/linux/pcidev/kernel_pcidev.h rename to simulators/bochs/host/linux/pcidev/kernel_pcidev.h diff --git a/bochs/host/linux/pcidev/pcidev.c b/simulators/bochs/host/linux/pcidev/pcidev.c similarity index 100% rename from bochs/host/linux/pcidev/pcidev.c rename to simulators/bochs/host/linux/pcidev/pcidev.c diff --git a/bochs/install-sh b/simulators/bochs/install-sh similarity index 100% rename from bochs/install-sh rename to simulators/bochs/install-sh diff --git a/bochs/instrument/example0/Makefile.in b/simulators/bochs/instrument/example0/Makefile.in similarity index 100% rename from bochs/instrument/example0/Makefile.in rename to simulators/bochs/instrument/example0/Makefile.in diff --git a/bochs/instrument/example0/instrument.cc b/simulators/bochs/instrument/example0/instrument.cc similarity index 100% rename from bochs/instrument/example0/instrument.cc rename to simulators/bochs/instrument/example0/instrument.cc diff --git a/bochs/instrument/example0/instrument.h b/simulators/bochs/instrument/example0/instrument.h similarity index 100% rename from bochs/instrument/example0/instrument.h rename to simulators/bochs/instrument/example0/instrument.h diff --git a/bochs/instrument/example1/Makefile.in b/simulators/bochs/instrument/example1/Makefile.in similarity index 100% rename from bochs/instrument/example1/Makefile.in rename to simulators/bochs/instrument/example1/Makefile.in diff --git a/bochs/instrument/example1/instrument.cc b/simulators/bochs/instrument/example1/instrument.cc similarity index 100% rename from bochs/instrument/example1/instrument.cc rename to simulators/bochs/instrument/example1/instrument.cc diff --git a/bochs/instrument/example1/instrument.h b/simulators/bochs/instrument/example1/instrument.h similarity index 100% rename from bochs/instrument/example1/instrument.h rename to simulators/bochs/instrument/example1/instrument.h diff --git a/bochs/instrument/example2/Makefile.in b/simulators/bochs/instrument/example2/Makefile.in similarity index 100% rename from bochs/instrument/example2/Makefile.in rename to simulators/bochs/instrument/example2/Makefile.in diff --git a/bochs/instrument/example2/instrument.cc b/simulators/bochs/instrument/example2/instrument.cc similarity index 100% rename from bochs/instrument/example2/instrument.cc rename to simulators/bochs/instrument/example2/instrument.cc diff --git a/bochs/instrument/example2/instrument.h b/simulators/bochs/instrument/example2/instrument.h similarity index 100% rename from bochs/instrument/example2/instrument.h rename to simulators/bochs/instrument/example2/instrument.h diff --git a/bochs/instrument/instrumentation.txt b/simulators/bochs/instrument/instrumentation.txt similarity index 100% rename from bochs/instrument/instrumentation.txt rename to simulators/bochs/instrument/instrumentation.txt diff --git a/bochs/instrument/stubs/Makefile.in b/simulators/bochs/instrument/stubs/Makefile.in similarity index 100% rename from bochs/instrument/stubs/Makefile.in rename to simulators/bochs/instrument/stubs/Makefile.in diff --git a/bochs/instrument/stubs/instrument.cc b/simulators/bochs/instrument/stubs/instrument.cc similarity index 100% rename from bochs/instrument/stubs/instrument.cc rename to simulators/bochs/instrument/stubs/instrument.cc diff --git a/bochs/instrument/stubs/instrument.h b/simulators/bochs/instrument/stubs/instrument.h similarity index 100% rename from bochs/instrument/stubs/instrument.h rename to simulators/bochs/instrument/stubs/instrument.h diff --git a/bochs/iodev/Makefile.in b/simulators/bochs/iodev/Makefile.in similarity index 100% rename from bochs/iodev/Makefile.in rename to simulators/bochs/iodev/Makefile.in diff --git a/bochs/iodev/acpi.cc b/simulators/bochs/iodev/acpi.cc similarity index 100% rename from bochs/iodev/acpi.cc rename to simulators/bochs/iodev/acpi.cc diff --git a/bochs/iodev/acpi.h b/simulators/bochs/iodev/acpi.h similarity index 100% rename from bochs/iodev/acpi.h rename to simulators/bochs/iodev/acpi.h diff --git a/bochs/iodev/aspi-win32.h b/simulators/bochs/iodev/aspi-win32.h similarity index 100% rename from bochs/iodev/aspi-win32.h rename to simulators/bochs/iodev/aspi-win32.h diff --git a/bochs/iodev/biosdev.cc b/simulators/bochs/iodev/biosdev.cc similarity index 100% rename from bochs/iodev/biosdev.cc rename to simulators/bochs/iodev/biosdev.cc diff --git a/bochs/iodev/biosdev.h b/simulators/bochs/iodev/biosdev.h similarity index 100% rename from bochs/iodev/biosdev.h rename to simulators/bochs/iodev/biosdev.h diff --git a/bochs/iodev/busmouse.cc b/simulators/bochs/iodev/busmouse.cc similarity index 100% rename from bochs/iodev/busmouse.cc rename to simulators/bochs/iodev/busmouse.cc diff --git a/bochs/iodev/busmouse.h b/simulators/bochs/iodev/busmouse.h similarity index 100% rename from bochs/iodev/busmouse.h rename to simulators/bochs/iodev/busmouse.h diff --git a/bochs/iodev/cdrom.cc b/simulators/bochs/iodev/cdrom.cc similarity index 100% rename from bochs/iodev/cdrom.cc rename to simulators/bochs/iodev/cdrom.cc diff --git a/bochs/iodev/cdrom.h b/simulators/bochs/iodev/cdrom.h similarity index 100% rename from bochs/iodev/cdrom.h rename to simulators/bochs/iodev/cdrom.h diff --git a/bochs/iodev/cdrom_amigaos.cc b/simulators/bochs/iodev/cdrom_amigaos.cc similarity index 100% rename from bochs/iodev/cdrom_amigaos.cc rename to simulators/bochs/iodev/cdrom_amigaos.cc diff --git a/bochs/iodev/cdrom_beos.cc b/simulators/bochs/iodev/cdrom_beos.cc similarity index 100% rename from bochs/iodev/cdrom_beos.cc rename to simulators/bochs/iodev/cdrom_beos.cc diff --git a/bochs/iodev/cdrom_beos.h b/simulators/bochs/iodev/cdrom_beos.h similarity index 100% rename from bochs/iodev/cdrom_beos.h rename to simulators/bochs/iodev/cdrom_beos.h diff --git a/bochs/iodev/cmos.cc b/simulators/bochs/iodev/cmos.cc similarity index 100% rename from bochs/iodev/cmos.cc rename to simulators/bochs/iodev/cmos.cc diff --git a/bochs/iodev/cmos.h b/simulators/bochs/iodev/cmos.h similarity index 100% rename from bochs/iodev/cmos.h rename to simulators/bochs/iodev/cmos.h diff --git a/bochs/iodev/crc32.cc b/simulators/bochs/iodev/crc32.cc similarity index 100% rename from bochs/iodev/crc32.cc rename to simulators/bochs/iodev/crc32.cc diff --git a/bochs/iodev/crc32.h b/simulators/bochs/iodev/crc32.h similarity index 100% rename from bochs/iodev/crc32.h rename to simulators/bochs/iodev/crc32.h diff --git a/bochs/iodev/devices.cc b/simulators/bochs/iodev/devices.cc similarity index 100% rename from bochs/iodev/devices.cc rename to simulators/bochs/iodev/devices.cc diff --git a/bochs/iodev/devices.txt b/simulators/bochs/iodev/devices.txt similarity index 100% rename from bochs/iodev/devices.txt rename to simulators/bochs/iodev/devices.txt diff --git a/bochs/iodev/dma.cc b/simulators/bochs/iodev/dma.cc similarity index 100% rename from bochs/iodev/dma.cc rename to simulators/bochs/iodev/dma.cc diff --git a/bochs/iodev/dma.h b/simulators/bochs/iodev/dma.h similarity index 100% rename from bochs/iodev/dma.h rename to simulators/bochs/iodev/dma.h diff --git a/bochs/iodev/eth.cc b/simulators/bochs/iodev/eth.cc similarity index 100% rename from bochs/iodev/eth.cc rename to simulators/bochs/iodev/eth.cc diff --git a/bochs/iodev/eth.h b/simulators/bochs/iodev/eth.h similarity index 100% rename from bochs/iodev/eth.h rename to simulators/bochs/iodev/eth.h diff --git a/bochs/iodev/eth_arpback.cc b/simulators/bochs/iodev/eth_arpback.cc similarity index 100% rename from bochs/iodev/eth_arpback.cc rename to simulators/bochs/iodev/eth_arpback.cc diff --git a/bochs/iodev/eth_fbsd.cc b/simulators/bochs/iodev/eth_fbsd.cc similarity index 100% rename from bochs/iodev/eth_fbsd.cc rename to simulators/bochs/iodev/eth_fbsd.cc diff --git a/bochs/iodev/eth_linux.cc b/simulators/bochs/iodev/eth_linux.cc similarity index 100% rename from bochs/iodev/eth_linux.cc rename to simulators/bochs/iodev/eth_linux.cc diff --git a/bochs/iodev/eth_null.cc b/simulators/bochs/iodev/eth_null.cc similarity index 100% rename from bochs/iodev/eth_null.cc rename to simulators/bochs/iodev/eth_null.cc diff --git a/bochs/iodev/eth_packetmaker.cc b/simulators/bochs/iodev/eth_packetmaker.cc similarity index 100% rename from bochs/iodev/eth_packetmaker.cc rename to simulators/bochs/iodev/eth_packetmaker.cc diff --git a/bochs/iodev/eth_packetmaker.h b/simulators/bochs/iodev/eth_packetmaker.h similarity index 100% rename from bochs/iodev/eth_packetmaker.h rename to simulators/bochs/iodev/eth_packetmaker.h diff --git a/bochs/iodev/eth_tap.cc b/simulators/bochs/iodev/eth_tap.cc similarity index 100% rename from bochs/iodev/eth_tap.cc rename to simulators/bochs/iodev/eth_tap.cc diff --git a/bochs/iodev/eth_tuntap.cc b/simulators/bochs/iodev/eth_tuntap.cc similarity index 100% rename from bochs/iodev/eth_tuntap.cc rename to simulators/bochs/iodev/eth_tuntap.cc diff --git a/bochs/iodev/eth_vde.cc b/simulators/bochs/iodev/eth_vde.cc similarity index 100% rename from bochs/iodev/eth_vde.cc rename to simulators/bochs/iodev/eth_vde.cc diff --git a/bochs/iodev/eth_vnet.cc b/simulators/bochs/iodev/eth_vnet.cc similarity index 100% rename from bochs/iodev/eth_vnet.cc rename to simulators/bochs/iodev/eth_vnet.cc diff --git a/bochs/iodev/eth_win32.cc b/simulators/bochs/iodev/eth_win32.cc similarity index 100% rename from bochs/iodev/eth_win32.cc rename to simulators/bochs/iodev/eth_win32.cc diff --git a/bochs/iodev/extfpuirq.cc b/simulators/bochs/iodev/extfpuirq.cc similarity index 100% rename from bochs/iodev/extfpuirq.cc rename to simulators/bochs/iodev/extfpuirq.cc diff --git a/bochs/iodev/extfpuirq.h b/simulators/bochs/iodev/extfpuirq.h similarity index 100% rename from bochs/iodev/extfpuirq.h rename to simulators/bochs/iodev/extfpuirq.h diff --git a/bochs/iodev/floppy.cc b/simulators/bochs/iodev/floppy.cc similarity index 100% rename from bochs/iodev/floppy.cc rename to simulators/bochs/iodev/floppy.cc diff --git a/bochs/iodev/floppy.h b/simulators/bochs/iodev/floppy.h similarity index 100% rename from bochs/iodev/floppy.h rename to simulators/bochs/iodev/floppy.h diff --git a/bochs/iodev/gameport.cc b/simulators/bochs/iodev/gameport.cc similarity index 100% rename from bochs/iodev/gameport.cc rename to simulators/bochs/iodev/gameport.cc diff --git a/bochs/iodev/gameport.h b/simulators/bochs/iodev/gameport.h similarity index 100% rename from bochs/iodev/gameport.h rename to simulators/bochs/iodev/gameport.h diff --git a/bochs/iodev/guest2host.cc b/simulators/bochs/iodev/guest2host.cc similarity index 100% rename from bochs/iodev/guest2host.cc rename to simulators/bochs/iodev/guest2host.cc diff --git a/bochs/iodev/guest2host.h b/simulators/bochs/iodev/guest2host.h similarity index 100% rename from bochs/iodev/guest2host.h rename to simulators/bochs/iodev/guest2host.h diff --git a/bochs/iodev/harddrv.cc b/simulators/bochs/iodev/harddrv.cc similarity index 100% rename from bochs/iodev/harddrv.cc rename to simulators/bochs/iodev/harddrv.cc diff --git a/bochs/iodev/harddrv.h b/simulators/bochs/iodev/harddrv.h similarity index 100% rename from bochs/iodev/harddrv.h rename to simulators/bochs/iodev/harddrv.h diff --git a/bochs/iodev/hdimage.cc b/simulators/bochs/iodev/hdimage.cc similarity index 100% rename from bochs/iodev/hdimage.cc rename to simulators/bochs/iodev/hdimage.cc diff --git a/bochs/iodev/hdimage.h b/simulators/bochs/iodev/hdimage.h similarity index 100% rename from bochs/iodev/hdimage.h rename to simulators/bochs/iodev/hdimage.h diff --git a/bochs/iodev/ioapic.cc b/simulators/bochs/iodev/ioapic.cc similarity index 100% rename from bochs/iodev/ioapic.cc rename to simulators/bochs/iodev/ioapic.cc diff --git a/bochs/iodev/ioapic.h b/simulators/bochs/iodev/ioapic.h similarity index 100% rename from bochs/iodev/ioapic.h rename to simulators/bochs/iodev/ioapic.h diff --git a/bochs/iodev/iodebug.cc b/simulators/bochs/iodev/iodebug.cc similarity index 100% rename from bochs/iodev/iodebug.cc rename to simulators/bochs/iodev/iodebug.cc diff --git a/bochs/iodev/iodebug.h b/simulators/bochs/iodev/iodebug.h similarity index 100% rename from bochs/iodev/iodebug.h rename to simulators/bochs/iodev/iodebug.h diff --git a/bochs/iodev/iodev.h b/simulators/bochs/iodev/iodev.h similarity index 100% rename from bochs/iodev/iodev.h rename to simulators/bochs/iodev/iodev.h diff --git a/bochs/iodev/keyboard.cc b/simulators/bochs/iodev/keyboard.cc similarity index 100% rename from bochs/iodev/keyboard.cc rename to simulators/bochs/iodev/keyboard.cc diff --git a/bochs/iodev/keyboard.h b/simulators/bochs/iodev/keyboard.h similarity index 100% rename from bochs/iodev/keyboard.h rename to simulators/bochs/iodev/keyboard.h diff --git a/bochs/iodev/ne2k.cc b/simulators/bochs/iodev/ne2k.cc similarity index 100% rename from bochs/iodev/ne2k.cc rename to simulators/bochs/iodev/ne2k.cc diff --git a/bochs/iodev/ne2k.h b/simulators/bochs/iodev/ne2k.h similarity index 100% rename from bochs/iodev/ne2k.h rename to simulators/bochs/iodev/ne2k.h diff --git a/bochs/iodev/parallel.cc b/simulators/bochs/iodev/parallel.cc similarity index 100% rename from bochs/iodev/parallel.cc rename to simulators/bochs/iodev/parallel.cc diff --git a/bochs/iodev/parallel.h b/simulators/bochs/iodev/parallel.h similarity index 100% rename from bochs/iodev/parallel.h rename to simulators/bochs/iodev/parallel.h diff --git a/bochs/iodev/pci.cc b/simulators/bochs/iodev/pci.cc similarity index 100% rename from bochs/iodev/pci.cc rename to simulators/bochs/iodev/pci.cc diff --git a/bochs/iodev/pci.h b/simulators/bochs/iodev/pci.h similarity index 100% rename from bochs/iodev/pci.h rename to simulators/bochs/iodev/pci.h diff --git a/bochs/iodev/pci2isa.cc b/simulators/bochs/iodev/pci2isa.cc similarity index 100% rename from bochs/iodev/pci2isa.cc rename to simulators/bochs/iodev/pci2isa.cc diff --git a/bochs/iodev/pci2isa.h b/simulators/bochs/iodev/pci2isa.h similarity index 100% rename from bochs/iodev/pci2isa.h rename to simulators/bochs/iodev/pci2isa.h diff --git a/bochs/iodev/pci_ide.cc b/simulators/bochs/iodev/pci_ide.cc similarity index 100% rename from bochs/iodev/pci_ide.cc rename to simulators/bochs/iodev/pci_ide.cc diff --git a/bochs/iodev/pci_ide.h b/simulators/bochs/iodev/pci_ide.h similarity index 100% rename from bochs/iodev/pci_ide.h rename to simulators/bochs/iodev/pci_ide.h diff --git a/bochs/iodev/pcidev.cc b/simulators/bochs/iodev/pcidev.cc similarity index 100% rename from bochs/iodev/pcidev.cc rename to simulators/bochs/iodev/pcidev.cc diff --git a/bochs/iodev/pcidev.h b/simulators/bochs/iodev/pcidev.h similarity index 100% rename from bochs/iodev/pcidev.h rename to simulators/bochs/iodev/pcidev.h diff --git a/bochs/iodev/pcipnic.cc b/simulators/bochs/iodev/pcipnic.cc similarity index 100% rename from bochs/iodev/pcipnic.cc rename to simulators/bochs/iodev/pcipnic.cc diff --git a/bochs/iodev/pcipnic.h b/simulators/bochs/iodev/pcipnic.h similarity index 100% rename from bochs/iodev/pcipnic.h rename to simulators/bochs/iodev/pcipnic.h diff --git a/bochs/iodev/pcivga.cc b/simulators/bochs/iodev/pcivga.cc similarity index 100% rename from bochs/iodev/pcivga.cc rename to simulators/bochs/iodev/pcivga.cc diff --git a/bochs/iodev/pcivga.h b/simulators/bochs/iodev/pcivga.h similarity index 100% rename from bochs/iodev/pcivga.h rename to simulators/bochs/iodev/pcivga.h diff --git a/bochs/iodev/pic.cc b/simulators/bochs/iodev/pic.cc similarity index 100% rename from bochs/iodev/pic.cc rename to simulators/bochs/iodev/pic.cc diff --git a/bochs/iodev/pic.h b/simulators/bochs/iodev/pic.h similarity index 100% rename from bochs/iodev/pic.h rename to simulators/bochs/iodev/pic.h diff --git a/bochs/iodev/pit82c54.cc b/simulators/bochs/iodev/pit82c54.cc similarity index 100% rename from bochs/iodev/pit82c54.cc rename to simulators/bochs/iodev/pit82c54.cc diff --git a/bochs/iodev/pit82c54.h b/simulators/bochs/iodev/pit82c54.h similarity index 100% rename from bochs/iodev/pit82c54.h rename to simulators/bochs/iodev/pit82c54.h diff --git a/bochs/iodev/pit_wrap.cc b/simulators/bochs/iodev/pit_wrap.cc similarity index 100% rename from bochs/iodev/pit_wrap.cc rename to simulators/bochs/iodev/pit_wrap.cc diff --git a/bochs/iodev/pit_wrap.h b/simulators/bochs/iodev/pit_wrap.h similarity index 100% rename from bochs/iodev/pit_wrap.h rename to simulators/bochs/iodev/pit_wrap.h diff --git a/bochs/iodev/pnic_api.h b/simulators/bochs/iodev/pnic_api.h similarity index 100% rename from bochs/iodev/pnic_api.h rename to simulators/bochs/iodev/pnic_api.h diff --git a/bochs/iodev/sb16.cc b/simulators/bochs/iodev/sb16.cc similarity index 100% rename from bochs/iodev/sb16.cc rename to simulators/bochs/iodev/sb16.cc diff --git a/bochs/iodev/sb16.h b/simulators/bochs/iodev/sb16.h similarity index 100% rename from bochs/iodev/sb16.h rename to simulators/bochs/iodev/sb16.h diff --git a/bochs/iodev/scancodes.cc b/simulators/bochs/iodev/scancodes.cc similarity index 100% rename from bochs/iodev/scancodes.cc rename to simulators/bochs/iodev/scancodes.cc diff --git a/bochs/iodev/scancodes.h b/simulators/bochs/iodev/scancodes.h similarity index 100% rename from bochs/iodev/scancodes.h rename to simulators/bochs/iodev/scancodes.h diff --git a/bochs/iodev/scsi_commands.h b/simulators/bochs/iodev/scsi_commands.h similarity index 100% rename from bochs/iodev/scsi_commands.h rename to simulators/bochs/iodev/scsi_commands.h diff --git a/bochs/iodev/scsi_device.cc b/simulators/bochs/iodev/scsi_device.cc similarity index 100% rename from bochs/iodev/scsi_device.cc rename to simulators/bochs/iodev/scsi_device.cc diff --git a/bochs/iodev/scsi_device.h b/simulators/bochs/iodev/scsi_device.h similarity index 100% rename from bochs/iodev/scsi_device.h rename to simulators/bochs/iodev/scsi_device.h diff --git a/bochs/iodev/scsidefs.h b/simulators/bochs/iodev/scsidefs.h similarity index 100% rename from bochs/iodev/scsidefs.h rename to simulators/bochs/iodev/scsidefs.h diff --git a/bochs/iodev/scsipt.h b/simulators/bochs/iodev/scsipt.h similarity index 100% rename from bochs/iodev/scsipt.h rename to simulators/bochs/iodev/scsipt.h diff --git a/bochs/iodev/serial.cc b/simulators/bochs/iodev/serial.cc similarity index 100% rename from bochs/iodev/serial.cc rename to simulators/bochs/iodev/serial.cc diff --git a/bochs/iodev/serial.h b/simulators/bochs/iodev/serial.h similarity index 100% rename from bochs/iodev/serial.h rename to simulators/bochs/iodev/serial.h diff --git a/bochs/iodev/serial_raw.cc b/simulators/bochs/iodev/serial_raw.cc similarity index 100% rename from bochs/iodev/serial_raw.cc rename to simulators/bochs/iodev/serial_raw.cc diff --git a/bochs/iodev/serial_raw.h b/simulators/bochs/iodev/serial_raw.h similarity index 100% rename from bochs/iodev/serial_raw.h rename to simulators/bochs/iodev/serial_raw.h diff --git a/bochs/iodev/slowdown_timer.cc b/simulators/bochs/iodev/slowdown_timer.cc similarity index 100% rename from bochs/iodev/slowdown_timer.cc rename to simulators/bochs/iodev/slowdown_timer.cc diff --git a/bochs/iodev/slowdown_timer.h b/simulators/bochs/iodev/slowdown_timer.h similarity index 100% rename from bochs/iodev/slowdown_timer.h rename to simulators/bochs/iodev/slowdown_timer.h diff --git a/bochs/iodev/soundlnx.cc b/simulators/bochs/iodev/soundlnx.cc similarity index 100% rename from bochs/iodev/soundlnx.cc rename to simulators/bochs/iodev/soundlnx.cc diff --git a/bochs/iodev/soundlnx.h b/simulators/bochs/iodev/soundlnx.h similarity index 100% rename from bochs/iodev/soundlnx.h rename to simulators/bochs/iodev/soundlnx.h diff --git a/bochs/iodev/soundmod.cc b/simulators/bochs/iodev/soundmod.cc similarity index 100% rename from bochs/iodev/soundmod.cc rename to simulators/bochs/iodev/soundmod.cc diff --git a/bochs/iodev/soundmod.h b/simulators/bochs/iodev/soundmod.h similarity index 100% rename from bochs/iodev/soundmod.h rename to simulators/bochs/iodev/soundmod.h diff --git a/bochs/iodev/soundosx.cc b/simulators/bochs/iodev/soundosx.cc similarity index 100% rename from bochs/iodev/soundosx.cc rename to simulators/bochs/iodev/soundosx.cc diff --git a/bochs/iodev/soundosx.h b/simulators/bochs/iodev/soundosx.h similarity index 100% rename from bochs/iodev/soundosx.h rename to simulators/bochs/iodev/soundosx.h diff --git a/bochs/iodev/soundwin.cc b/simulators/bochs/iodev/soundwin.cc similarity index 100% rename from bochs/iodev/soundwin.cc rename to simulators/bochs/iodev/soundwin.cc diff --git a/bochs/iodev/soundwin.h b/simulators/bochs/iodev/soundwin.h similarity index 100% rename from bochs/iodev/soundwin.h rename to simulators/bochs/iodev/soundwin.h diff --git a/bochs/iodev/speaker.cc b/simulators/bochs/iodev/speaker.cc similarity index 100% rename from bochs/iodev/speaker.cc rename to simulators/bochs/iodev/speaker.cc diff --git a/bochs/iodev/speaker.h b/simulators/bochs/iodev/speaker.h similarity index 100% rename from bochs/iodev/speaker.h rename to simulators/bochs/iodev/speaker.h diff --git a/bochs/iodev/svga_cirrus.cc b/simulators/bochs/iodev/svga_cirrus.cc similarity index 100% rename from bochs/iodev/svga_cirrus.cc rename to simulators/bochs/iodev/svga_cirrus.cc diff --git a/bochs/iodev/svga_cirrus.h b/simulators/bochs/iodev/svga_cirrus.h similarity index 100% rename from bochs/iodev/svga_cirrus.h rename to simulators/bochs/iodev/svga_cirrus.h diff --git a/bochs/iodev/unmapped.cc b/simulators/bochs/iodev/unmapped.cc similarity index 100% rename from bochs/iodev/unmapped.cc rename to simulators/bochs/iodev/unmapped.cc diff --git a/bochs/iodev/unmapped.h b/simulators/bochs/iodev/unmapped.h similarity index 100% rename from bochs/iodev/unmapped.h rename to simulators/bochs/iodev/unmapped.h diff --git a/bochs/iodev/usb_common.cc b/simulators/bochs/iodev/usb_common.cc similarity index 100% rename from bochs/iodev/usb_common.cc rename to simulators/bochs/iodev/usb_common.cc diff --git a/bochs/iodev/usb_common.h b/simulators/bochs/iodev/usb_common.h similarity index 100% rename from bochs/iodev/usb_common.h rename to simulators/bochs/iodev/usb_common.h diff --git a/bochs/iodev/usb_hid.cc b/simulators/bochs/iodev/usb_hid.cc similarity index 100% rename from bochs/iodev/usb_hid.cc rename to simulators/bochs/iodev/usb_hid.cc diff --git a/bochs/iodev/usb_hid.h b/simulators/bochs/iodev/usb_hid.h similarity index 100% rename from bochs/iodev/usb_hid.h rename to simulators/bochs/iodev/usb_hid.h diff --git a/bochs/iodev/usb_hub.cc b/simulators/bochs/iodev/usb_hub.cc similarity index 100% rename from bochs/iodev/usb_hub.cc rename to simulators/bochs/iodev/usb_hub.cc diff --git a/bochs/iodev/usb_hub.h b/simulators/bochs/iodev/usb_hub.h similarity index 100% rename from bochs/iodev/usb_hub.h rename to simulators/bochs/iodev/usb_hub.h diff --git a/bochs/iodev/usb_msd.cc b/simulators/bochs/iodev/usb_msd.cc similarity index 100% rename from bochs/iodev/usb_msd.cc rename to simulators/bochs/iodev/usb_msd.cc diff --git a/bochs/iodev/usb_msd.h b/simulators/bochs/iodev/usb_msd.h similarity index 100% rename from bochs/iodev/usb_msd.h rename to simulators/bochs/iodev/usb_msd.h diff --git a/bochs/iodev/usb_ohci.cc b/simulators/bochs/iodev/usb_ohci.cc similarity index 100% rename from bochs/iodev/usb_ohci.cc rename to simulators/bochs/iodev/usb_ohci.cc diff --git a/bochs/iodev/usb_ohci.h b/simulators/bochs/iodev/usb_ohci.h similarity index 100% rename from bochs/iodev/usb_ohci.h rename to simulators/bochs/iodev/usb_ohci.h diff --git a/bochs/iodev/usb_printer.cc b/simulators/bochs/iodev/usb_printer.cc similarity index 100% rename from bochs/iodev/usb_printer.cc rename to simulators/bochs/iodev/usb_printer.cc diff --git a/bochs/iodev/usb_printer.h b/simulators/bochs/iodev/usb_printer.h similarity index 100% rename from bochs/iodev/usb_printer.h rename to simulators/bochs/iodev/usb_printer.h diff --git a/bochs/iodev/usb_uhci.cc b/simulators/bochs/iodev/usb_uhci.cc similarity index 100% rename from bochs/iodev/usb_uhci.cc rename to simulators/bochs/iodev/usb_uhci.cc diff --git a/bochs/iodev/usb_uhci.h b/simulators/bochs/iodev/usb_uhci.h similarity index 100% rename from bochs/iodev/usb_uhci.h rename to simulators/bochs/iodev/usb_uhci.h diff --git a/bochs/iodev/vga.cc b/simulators/bochs/iodev/vga.cc similarity index 100% rename from bochs/iodev/vga.cc rename to simulators/bochs/iodev/vga.cc diff --git a/bochs/iodev/vga.h b/simulators/bochs/iodev/vga.h similarity index 100% rename from bochs/iodev/vga.h rename to simulators/bochs/iodev/vga.h diff --git a/bochs/iodev/virt_timer.cc b/simulators/bochs/iodev/virt_timer.cc similarity index 100% rename from bochs/iodev/virt_timer.cc rename to simulators/bochs/iodev/virt_timer.cc diff --git a/bochs/iodev/virt_timer.h b/simulators/bochs/iodev/virt_timer.h similarity index 100% rename from bochs/iodev/virt_timer.h rename to simulators/bochs/iodev/virt_timer.h diff --git a/bochs/iodev/vmware3.cc b/simulators/bochs/iodev/vmware3.cc similarity index 100% rename from bochs/iodev/vmware3.cc rename to simulators/bochs/iodev/vmware3.cc diff --git a/bochs/iodev/vmware3.h b/simulators/bochs/iodev/vmware3.h similarity index 100% rename from bochs/iodev/vmware3.h rename to simulators/bochs/iodev/vmware3.h diff --git a/bochs/iodev/vmware4.cc b/simulators/bochs/iodev/vmware4.cc similarity index 100% rename from bochs/iodev/vmware4.cc rename to simulators/bochs/iodev/vmware4.cc diff --git a/bochs/iodev/vmware4.h b/simulators/bochs/iodev/vmware4.h similarity index 100% rename from bochs/iodev/vmware4.h rename to simulators/bochs/iodev/vmware4.h diff --git a/bochs/iodev/vvfat.cc b/simulators/bochs/iodev/vvfat.cc similarity index 100% rename from bochs/iodev/vvfat.cc rename to simulators/bochs/iodev/vvfat.cc diff --git a/bochs/iodev/vvfat.h b/simulators/bochs/iodev/vvfat.h similarity index 100% rename from bochs/iodev/vvfat.h rename to simulators/bochs/iodev/vvfat.h diff --git a/bochs/load32bitOShack.cc b/simulators/bochs/load32bitOShack.cc similarity index 100% rename from bochs/load32bitOShack.cc rename to simulators/bochs/load32bitOShack.cc diff --git a/bochs/logio.cc b/simulators/bochs/logio.cc similarity index 100% rename from bochs/logio.cc rename to simulators/bochs/logio.cc diff --git a/bochs/ltdl.c b/simulators/bochs/ltdl.c similarity index 100% rename from bochs/ltdl.c rename to simulators/bochs/ltdl.c diff --git a/bochs/ltdl.h b/simulators/bochs/ltdl.h similarity index 100% rename from bochs/ltdl.h rename to simulators/bochs/ltdl.h diff --git a/bochs/ltdlconf.h.in b/simulators/bochs/ltdlconf.h.in similarity index 100% rename from bochs/ltdlconf.h.in rename to simulators/bochs/ltdlconf.h.in diff --git a/bochs/ltmain.sh b/simulators/bochs/ltmain.sh similarity index 100% rename from bochs/ltmain.sh rename to simulators/bochs/ltmain.sh diff --git a/bochs/main.cc b/simulators/bochs/main.cc similarity index 100% rename from bochs/main.cc rename to simulators/bochs/main.cc diff --git a/bochs/make-ag++.sh b/simulators/bochs/make-ag++.sh similarity index 100% rename from bochs/make-ag++.sh rename to simulators/bochs/make-ag++.sh diff --git a/bochs/memory/Makefile.in b/simulators/bochs/memory/Makefile.in similarity index 100% rename from bochs/memory/Makefile.in rename to simulators/bochs/memory/Makefile.in diff --git a/bochs/memory/memory.cc b/simulators/bochs/memory/memory.cc similarity index 100% rename from bochs/memory/memory.cc rename to simulators/bochs/memory/memory.cc diff --git a/bochs/memory/memory.h b/simulators/bochs/memory/memory.h similarity index 100% rename from bochs/memory/memory.h rename to simulators/bochs/memory/memory.h diff --git a/bochs/memory/misc_mem.cc b/simulators/bochs/memory/misc_mem.cc similarity index 100% rename from bochs/memory/misc_mem.cc rename to simulators/bochs/memory/misc_mem.cc diff --git a/bochs/misc/Makefile.in b/simulators/bochs/misc/Makefile.in similarity index 100% rename from bochs/misc/Makefile.in rename to simulators/bochs/misc/Makefile.in diff --git a/bochs/misc/bxcommit.c b/simulators/bochs/misc/bxcommit.c similarity index 100% rename from bochs/misc/bxcommit.c rename to simulators/bochs/misc/bxcommit.c diff --git a/bochs/misc/bximage.c b/simulators/bochs/misc/bximage.c similarity index 100% rename from bochs/misc/bximage.c rename to simulators/bochs/misc/bximage.c diff --git a/bochs/misc/make_cmos_image.cc b/simulators/bochs/misc/make_cmos_image.cc similarity index 100% rename from bochs/misc/make_cmos_image.cc rename to simulators/bochs/misc/make_cmos_image.cc diff --git a/bochs/misc/niclist.c b/simulators/bochs/misc/niclist.c similarity index 100% rename from bochs/misc/niclist.c rename to simulators/bochs/misc/niclist.c diff --git a/bochs/misc/sb16/sb16ctrl.c b/simulators/bochs/misc/sb16/sb16ctrl.c similarity index 100% rename from bochs/misc/sb16/sb16ctrl.c rename to simulators/bochs/misc/sb16/sb16ctrl.c diff --git a/bochs/misc/sb16/sb16ctrl.example b/simulators/bochs/misc/sb16/sb16ctrl.example similarity index 100% rename from bochs/misc/sb16/sb16ctrl.example rename to simulators/bochs/misc/sb16/sb16ctrl.example diff --git a/bochs/misc/sb16/sb16ctrl.exe b/simulators/bochs/misc/sb16/sb16ctrl.exe similarity index 100% rename from bochs/misc/sb16/sb16ctrl.exe rename to simulators/bochs/misc/sb16/sb16ctrl.exe diff --git a/bochs/misc/spoolpipe.c b/simulators/bochs/misc/spoolpipe.c similarity index 100% rename from bochs/misc/spoolpipe.c rename to simulators/bochs/misc/spoolpipe.c diff --git a/bochs/misc/test-access-check.cc b/simulators/bochs/misc/test-access-check.cc similarity index 100% rename from bochs/misc/test-access-check.cc rename to simulators/bochs/misc/test-access-check.cc diff --git a/bochs/msrs.def b/simulators/bochs/msrs.def similarity index 100% rename from bochs/msrs.def rename to simulators/bochs/msrs.def diff --git a/bochs/osdep.cc b/simulators/bochs/osdep.cc similarity index 100% rename from bochs/osdep.cc rename to simulators/bochs/osdep.cc diff --git a/bochs/osdep.h b/simulators/bochs/osdep.h similarity index 100% rename from bochs/osdep.h rename to simulators/bochs/osdep.h diff --git a/bochs/param_names.h b/simulators/bochs/param_names.h similarity index 100% rename from bochs/param_names.h rename to simulators/bochs/param_names.h diff --git a/bochs/patches/HEADER b/simulators/bochs/patches/HEADER similarity index 100% rename from bochs/patches/HEADER rename to simulators/bochs/patches/HEADER diff --git a/bochs/patches/NOTES b/simulators/bochs/patches/NOTES similarity index 100% rename from bochs/patches/NOTES rename to simulators/bochs/patches/NOTES diff --git a/bochs/patches/beos-gui-fabo.capture-filter b/simulators/bochs/patches/beos-gui-fabo.capture-filter similarity index 100% rename from bochs/patches/beos-gui-fabo.capture-filter rename to simulators/bochs/patches/beos-gui-fabo.capture-filter diff --git a/bochs/patches/beos-gui-fabo.capture-filter.README b/simulators/bochs/patches/beos-gui-fabo.capture-filter.README similarity index 100% rename from bochs/patches/beos-gui-fabo.capture-filter.README rename to simulators/bochs/patches/beos-gui-fabo.capture-filter.README diff --git a/bochs/patches/bochs-bios-win32.diff b/simulators/bochs/patches/bochs-bios-win32.diff similarity index 100% rename from bochs/patches/bochs-bios-win32.diff rename to simulators/bochs/patches/bochs-bios-win32.diff diff --git a/bochs/patches/patch.beos-gui-fabo b/simulators/bochs/patches/patch.beos-gui-fabo similarity index 100% rename from bochs/patches/patch.beos-gui-fabo rename to simulators/bochs/patches/patch.beos-gui-fabo diff --git a/bochs/patches/patch.beos-gui-fabo-template b/simulators/bochs/patches/patch.beos-gui-fabo-template similarity index 100% rename from bochs/patches/patch.beos-gui-fabo-template rename to simulators/bochs/patches/patch.beos-gui-fabo-template diff --git a/bochs/patches/patch.cosimulation b/simulators/bochs/patches/patch.cosimulation similarity index 100% rename from bochs/patches/patch.cosimulation rename to simulators/bochs/patches/patch.cosimulation diff --git a/bochs/patches/patch.decode-interrupts.gz b/simulators/bochs/patches/patch.decode-interrupts.gz similarity index 100% rename from bochs/patches/patch.decode-interrupts.gz rename to simulators/bochs/patches/patch.decode-interrupts.gz diff --git a/bochs/patches/patch.example-override-ask b/simulators/bochs/patches/patch.example-override-ask similarity index 100% rename from bochs/patches/patch.example-override-ask rename to simulators/bochs/patches/patch.example-override-ask diff --git a/bochs/patches/patch.example-user-plugin b/simulators/bochs/patches/patch.example-user-plugin similarity index 100% rename from bochs/patches/patch.example-user-plugin rename to simulators/bochs/patches/patch.example-user-plugin diff --git a/bochs/patches/patch.fast-dma-cbothamy b/simulators/bochs/patches/patch.fast-dma-cbothamy similarity index 100% rename from bochs/patches/patch.fast-dma-cbothamy rename to simulators/bochs/patches/patch.fast-dma-cbothamy diff --git a/bochs/patches/patch.floppy-athiel b/simulators/bochs/patches/patch.floppy-athiel similarity index 100% rename from bochs/patches/patch.floppy-athiel rename to simulators/bochs/patches/patch.floppy-athiel diff --git a/bochs/patches/patch.hosttime-port b/simulators/bochs/patches/patch.hosttime-port similarity index 100% rename from bochs/patches/patch.hosttime-port rename to simulators/bochs/patches/patch.hosttime-port diff --git a/bochs/patches/patch.marklog b/simulators/bochs/patches/patch.marklog similarity index 100% rename from bochs/patches/patch.marklog rename to simulators/bochs/patches/patch.marklog diff --git a/bochs/patches/patch.mingw-resources b/simulators/bochs/patches/patch.mingw-resources similarity index 100% rename from bochs/patches/patch.mingw-resources rename to simulators/bochs/patches/patch.mingw-resources diff --git a/bochs/pc_system.cc b/simulators/bochs/pc_system.cc similarity index 100% rename from bochs/pc_system.cc rename to simulators/bochs/pc_system.cc diff --git a/bochs/pc_system.h b/simulators/bochs/pc_system.h similarity index 100% rename from bochs/pc_system.h rename to simulators/bochs/pc_system.h diff --git a/bochs/plex86-interface.cc b/simulators/bochs/plex86-interface.cc similarity index 100% rename from bochs/plex86-interface.cc rename to simulators/bochs/plex86-interface.cc diff --git a/bochs/plex86-interface.h b/simulators/bochs/plex86-interface.h similarity index 100% rename from bochs/plex86-interface.h rename to simulators/bochs/plex86-interface.h diff --git a/bochs/plex86/COPYING b/simulators/bochs/plex86/COPYING similarity index 100% rename from bochs/plex86/COPYING rename to simulators/bochs/plex86/COPYING diff --git a/bochs/plex86/Makefile.in b/simulators/bochs/plex86/Makefile.in similarity index 100% rename from bochs/plex86/Makefile.in rename to simulators/bochs/plex86/Makefile.in diff --git a/bochs/plex86/PERFORMANCE b/simulators/bochs/plex86/PERFORMANCE similarity index 100% rename from bochs/plex86/PERFORMANCE rename to simulators/bochs/plex86/PERFORMANCE diff --git a/bochs/plex86/TODO b/simulators/bochs/plex86/TODO similarity index 100% rename from bochs/plex86/TODO rename to simulators/bochs/plex86/TODO diff --git a/bochs/plex86/config.h.in b/simulators/bochs/plex86/config.h.in similarity index 100% rename from bochs/plex86/config.h.in rename to simulators/bochs/plex86/config.h.in diff --git a/bochs/plex86/configure b/simulators/bochs/plex86/configure similarity index 100% rename from bochs/plex86/configure rename to simulators/bochs/plex86/configure diff --git a/bochs/plex86/configure.in b/simulators/bochs/plex86/configure.in similarity index 100% rename from bochs/plex86/configure.in rename to simulators/bochs/plex86/configure.in diff --git a/bochs/plex86/descriptor.h b/simulators/bochs/plex86/descriptor.h similarity index 100% rename from bochs/plex86/descriptor.h rename to simulators/bochs/plex86/descriptor.h diff --git a/bochs/plex86/kernel/Makefile.in b/simulators/bochs/plex86/kernel/Makefile.in similarity index 100% rename from bochs/plex86/kernel/Makefile.in rename to simulators/bochs/plex86/kernel/Makefile.in diff --git a/bochs/plex86/kernel/fault-mon.c b/simulators/bochs/plex86/kernel/fault-mon.c similarity index 100% rename from bochs/plex86/kernel/fault-mon.c rename to simulators/bochs/plex86/kernel/fault-mon.c diff --git a/bochs/plex86/kernel/freebsd/Makefile b/simulators/bochs/plex86/kernel/freebsd/Makefile similarity index 100% rename from bochs/plex86/kernel/freebsd/Makefile rename to simulators/bochs/plex86/kernel/freebsd/Makefile diff --git a/bochs/plex86/kernel/host-beos.c b/simulators/bochs/plex86/kernel/host-beos.c similarity index 100% rename from bochs/plex86/kernel/host-beos.c rename to simulators/bochs/plex86/kernel/host-beos.c diff --git a/bochs/plex86/kernel/host-freebsd.c b/simulators/bochs/plex86/kernel/host-freebsd.c similarity index 100% rename from bochs/plex86/kernel/host-freebsd.c rename to simulators/bochs/plex86/kernel/host-freebsd.c diff --git a/bochs/plex86/kernel/host-linux.c b/simulators/bochs/plex86/kernel/host-linux.c similarity index 100% rename from bochs/plex86/kernel/host-linux.c rename to simulators/bochs/plex86/kernel/host-linux.c diff --git a/bochs/plex86/kernel/host-netbsd.c b/simulators/bochs/plex86/kernel/host-netbsd.c similarity index 100% rename from bochs/plex86/kernel/host-netbsd.c rename to simulators/bochs/plex86/kernel/host-netbsd.c diff --git a/bochs/plex86/kernel/host-null.c b/simulators/bochs/plex86/kernel/host-null.c similarity index 100% rename from bochs/plex86/kernel/host-null.c rename to simulators/bochs/plex86/kernel/host-null.c diff --git a/bochs/plex86/kernel/include/descriptor2.h b/simulators/bochs/plex86/kernel/include/descriptor2.h similarity index 100% rename from bochs/plex86/kernel/include/descriptor2.h rename to simulators/bochs/plex86/kernel/include/descriptor2.h diff --git a/bochs/plex86/kernel/include/eflags.h b/simulators/bochs/plex86/kernel/include/eflags.h similarity index 100% rename from bochs/plex86/kernel/include/eflags.h rename to simulators/bochs/plex86/kernel/include/eflags.h diff --git a/bochs/plex86/kernel/include/guest_context.h b/simulators/bochs/plex86/kernel/include/guest_context.h similarity index 100% rename from bochs/plex86/kernel/include/guest_context.h rename to simulators/bochs/plex86/kernel/include/guest_context.h diff --git a/bochs/plex86/kernel/include/monitor.h b/simulators/bochs/plex86/kernel/include/monitor.h similarity index 100% rename from bochs/plex86/kernel/include/monitor.h rename to simulators/bochs/plex86/kernel/include/monitor.h diff --git a/bochs/plex86/kernel/include/paging.h b/simulators/bochs/plex86/kernel/include/paging.h similarity index 100% rename from bochs/plex86/kernel/include/paging.h rename to simulators/bochs/plex86/kernel/include/paging.h diff --git a/bochs/plex86/kernel/include/tss.h b/simulators/bochs/plex86/kernel/include/tss.h similarity index 100% rename from bochs/plex86/kernel/include/tss.h rename to simulators/bochs/plex86/kernel/include/tss.h diff --git a/bochs/plex86/kernel/monitor-host.c b/simulators/bochs/plex86/kernel/monitor-host.c similarity index 100% rename from bochs/plex86/kernel/monitor-host.c rename to simulators/bochs/plex86/kernel/monitor-host.c diff --git a/bochs/plex86/kernel/monitor-mon.c b/simulators/bochs/plex86/kernel/monitor-mon.c similarity index 100% rename from bochs/plex86/kernel/monitor-mon.c rename to simulators/bochs/plex86/kernel/monitor-mon.c diff --git a/bochs/plex86/kernel/nexus.S b/simulators/bochs/plex86/kernel/nexus.S similarity index 100% rename from bochs/plex86/kernel/nexus.S rename to simulators/bochs/plex86/kernel/nexus.S diff --git a/bochs/plex86/kernel/paging-mon.c b/simulators/bochs/plex86/kernel/paging-mon.c similarity index 100% rename from bochs/plex86/kernel/paging-mon.c rename to simulators/bochs/plex86/kernel/paging-mon.c diff --git a/bochs/plex86/kernel/panic-mon.c b/simulators/bochs/plex86/kernel/panic-mon.c similarity index 100% rename from bochs/plex86/kernel/panic-mon.c rename to simulators/bochs/plex86/kernel/panic-mon.c diff --git a/bochs/plex86/kernel/print-mon.c b/simulators/bochs/plex86/kernel/print-mon.c similarity index 100% rename from bochs/plex86/kernel/print-mon.c rename to simulators/bochs/plex86/kernel/print-mon.c diff --git a/bochs/plex86/kernel/util-nexus.c b/simulators/bochs/plex86/kernel/util-nexus.c similarity index 100% rename from bochs/plex86/kernel/util-nexus.c rename to simulators/bochs/plex86/kernel/util-nexus.c diff --git a/bochs/plex86/misc/load_module.sh b/simulators/bochs/plex86/misc/load_module.sh similarity index 100% rename from bochs/plex86/misc/load_module.sh rename to simulators/bochs/plex86/misc/load_module.sh diff --git a/bochs/plex86/misc/netbsd_post.sh b/simulators/bochs/plex86/misc/netbsd_post.sh similarity index 100% rename from bochs/plex86/misc/netbsd_post.sh rename to simulators/bochs/plex86/misc/netbsd_post.sh diff --git a/bochs/plex86/misc/unload_module.sh b/simulators/bochs/plex86/misc/unload_module.sh similarity index 100% rename from bochs/plex86/misc/unload_module.sh rename to simulators/bochs/plex86/misc/unload_module.sh diff --git a/bochs/plex86/plex86.h b/simulators/bochs/plex86/plex86.h similarity index 100% rename from bochs/plex86/plex86.h rename to simulators/bochs/plex86/plex86.h diff --git a/bochs/plugin.cc b/simulators/bochs/plugin.cc similarity index 100% rename from bochs/plugin.cc rename to simulators/bochs/plugin.cc diff --git a/bochs/plugin.h b/simulators/bochs/plugin.h similarity index 100% rename from bochs/plugin.h rename to simulators/bochs/plugin.h diff --git a/bochs/win32_enh_dbg.rc b/simulators/bochs/win32_enh_dbg.rc similarity index 100% rename from bochs/win32_enh_dbg.rc rename to simulators/bochs/win32_enh_dbg.rc diff --git a/bochs/win32res.rc b/simulators/bochs/win32res.rc similarity index 100% rename from bochs/win32res.rc rename to simulators/bochs/win32res.rc diff --git a/bochs/wxbochs.rc b/simulators/bochs/wxbochs.rc similarity index 100% rename from bochs/wxbochs.rc rename to simulators/bochs/wxbochs.rc diff --git a/ovp/CMakeLists.txt b/simulators/ovp/CMakeLists.txt similarity index 93% rename from ovp/CMakeLists.txt rename to simulators/ovp/CMakeLists.txt index 034d9ff4..a93a566c 100644 --- a/ovp/CMakeLists.txt +++ b/simulators/ovp/CMakeLists.txt @@ -36,9 +36,9 @@ set(SIM_LDFLAGS $ENV{IMPERAS_HOME}/bin/$ENV{IMPERAS_ARCH}/libRuntimeLoader.so) include_directories(${CMAKE_SOURCE_DIR}) -include_directories(${CMAKE_SOURCE_DIR}/core) +include_directories(${CMAKE_SOURCE_DIR}/src/core) include_directories(${CMAKE_BINARY_DIR}) -include_directories(${CMAKE_BINARY_DIR}/core) +include_directories(${CMAKE_BINARY_DIR}/src/core) include_directories($ENV{IMPERAS_HOME}/ImpPublic/include/host) #add_subdirectory(ovpworld.org/mmc/flakyMemory/1.0/model) diff --git a/ovp/OVPCpu.hpp b/simulators/ovp/OVPCpu.hpp similarity index 99% rename from ovp/OVPCpu.hpp rename to simulators/ovp/OVPCpu.hpp index 6ecee3f3..512a60d5 100644 --- a/ovp/OVPCpu.hpp +++ b/simulators/ovp/OVPCpu.hpp @@ -2,7 +2,7 @@ #define _OVPCpu_HPP_ #include "icm/icmCpuManager.hpp" -#include "SAL/Register.hpp" +#include "sal/Register.hpp" #include "OVPPlatform.hpp" extern OVPPlatform ovpplatform; diff --git a/ovp/OVPPlatform.cc b/simulators/ovp/OVPPlatform.cc similarity index 95% rename from ovp/OVPPlatform.cc rename to simulators/ovp/OVPPlatform.cc index 218c90ca..05cb5802 100644 --- a/ovp/OVPPlatform.cc +++ b/simulators/ovp/OVPPlatform.cc @@ -1,8 +1,8 @@ #include "OVPCpu.hpp" #include "OVPStatusRegister.hpp" #include "OVPPlatform.hpp" -#include "SAL/Register.hpp" -#include "SAL/SALInst.hpp" +#include "sal/Register.hpp" +#include "sal/SALInst.hpp" OVPPlatform ovpplatform; diff --git a/ovp/OVPPlatform.hpp b/simulators/ovp/OVPPlatform.hpp similarity index 100% rename from ovp/OVPPlatform.hpp rename to simulators/ovp/OVPPlatform.hpp diff --git a/ovp/OVPStatusRegister.hpp b/simulators/ovp/OVPStatusRegister.hpp similarity index 96% rename from ovp/OVPStatusRegister.hpp rename to simulators/ovp/OVPStatusRegister.hpp index 5acf424d..c18894b8 100644 --- a/ovp/OVPStatusRegister.hpp +++ b/simulators/ovp/OVPStatusRegister.hpp @@ -1,14 +1,13 @@ #ifndef __OVP_STATUS_REGISTER_HPP__ #define __OVP_STATUS_REGISTER_HPP__ -#include "SAL/ovp/OVPRegister.hpp" +#include "sal/ovp/OVPRegister.hpp" /** * \class OVPStatusRegister * Abstract class for status register implementation */ class OVPStatusRegister : public fail::OVPRegister { - protected: public: diff --git a/ovp/README b/simulators/ovp/README similarity index 100% rename from ovp/README rename to simulators/ovp/README diff --git a/ovp/armmModel/CMakeLists.txt b/simulators/ovp/armmModel/CMakeLists.txt similarity index 100% rename from ovp/armmModel/CMakeLists.txt rename to simulators/ovp/armmModel/CMakeLists.txt diff --git a/ovp/armmModel/Makefile b/simulators/ovp/armmModel/Makefile similarity index 100% rename from ovp/armmModel/Makefile rename to simulators/ovp/armmModel/Makefile diff --git a/ovp/armmModel/armAttributeEntriesThumb16.h b/simulators/ovp/armmModel/armAttributeEntriesThumb16.h similarity index 100% rename from ovp/armmModel/armAttributeEntriesThumb16.h rename to simulators/ovp/armmModel/armAttributeEntriesThumb16.h diff --git a/ovp/armmModel/armAttributeEntriesThumb32.h b/simulators/ovp/armmModel/armAttributeEntriesThumb32.h similarity index 100% rename from ovp/armmModel/armAttributeEntriesThumb32.h rename to simulators/ovp/armmModel/armAttributeEntriesThumb32.h diff --git a/ovp/armmModel/armBitMacros.h b/simulators/ovp/armmModel/armBitMacros.h similarity index 100% rename from ovp/armmModel/armBitMacros.h rename to simulators/ovp/armmModel/armBitMacros.h diff --git a/ovp/armmModel/armBus.c b/simulators/ovp/armmModel/armBus.c similarity index 100% rename from ovp/armmModel/armBus.c rename to simulators/ovp/armmModel/armBus.c diff --git a/ovp/armmModel/armConfig.h b/simulators/ovp/armmModel/armConfig.h similarity index 100% rename from ovp/armmModel/armConfig.h rename to simulators/ovp/armmModel/armConfig.h diff --git a/ovp/armmModel/armDebug.h b/simulators/ovp/armmModel/armDebug.h similarity index 100% rename from ovp/armmModel/armDebug.h rename to simulators/ovp/armmModel/armDebug.h diff --git a/ovp/armmModel/armDecode.h b/simulators/ovp/armmModel/armDecode.h similarity index 100% rename from ovp/armmModel/armDecode.h rename to simulators/ovp/armmModel/armDecode.h diff --git a/ovp/armmModel/armDecodeEntriesThumb16.h b/simulators/ovp/armmModel/armDecodeEntriesThumb16.h similarity index 100% rename from ovp/armmModel/armDecodeEntriesThumb16.h rename to simulators/ovp/armmModel/armDecodeEntriesThumb16.h diff --git a/ovp/armmModel/armDecodeEntriesThumb32.h b/simulators/ovp/armmModel/armDecodeEntriesThumb32.h similarity index 100% rename from ovp/armmModel/armDecodeEntriesThumb32.h rename to simulators/ovp/armmModel/armDecodeEntriesThumb32.h diff --git a/ovp/armmModel/armDecodeThumb.h b/simulators/ovp/armmModel/armDecodeThumb.h similarity index 100% rename from ovp/armmModel/armDecodeThumb.h rename to simulators/ovp/armmModel/armDecodeThumb.h diff --git a/ovp/armmModel/armDecodeTypes.h b/simulators/ovp/armmModel/armDecodeTypes.h similarity index 100% rename from ovp/armmModel/armDecodeTypes.h rename to simulators/ovp/armmModel/armDecodeTypes.h diff --git a/ovp/armmModel/armDisassemble.h b/simulators/ovp/armmModel/armDisassemble.h similarity index 100% rename from ovp/armmModel/armDisassemble.h rename to simulators/ovp/armmModel/armDisassemble.h diff --git a/ovp/armmModel/armDisassembleFormats.h b/simulators/ovp/armmModel/armDisassembleFormats.h similarity index 100% rename from ovp/armmModel/armDisassembleFormats.h rename to simulators/ovp/armmModel/armDisassembleFormats.h diff --git a/ovp/armmModel/armEmit.h b/simulators/ovp/armmModel/armEmit.h similarity index 100% rename from ovp/armmModel/armEmit.h rename to simulators/ovp/armmModel/armEmit.h diff --git a/ovp/armmModel/armExceptionTypes.h b/simulators/ovp/armmModel/armExceptionTypes.h similarity index 100% rename from ovp/armmModel/armExceptionTypes.h rename to simulators/ovp/armmModel/armExceptionTypes.h diff --git a/ovp/armmModel/armExceptions.h b/simulators/ovp/armmModel/armExceptions.h similarity index 100% rename from ovp/armmModel/armExceptions.h rename to simulators/ovp/armmModel/armExceptions.h diff --git a/ovp/armmModel/armFPConstants.h b/simulators/ovp/armmModel/armFPConstants.h similarity index 100% rename from ovp/armmModel/armFPConstants.h rename to simulators/ovp/armmModel/armFPConstants.h diff --git a/ovp/armmModel/armFunctions.h b/simulators/ovp/armmModel/armFunctions.h similarity index 100% rename from ovp/armmModel/armFunctions.h rename to simulators/ovp/armmModel/armFunctions.h diff --git a/ovp/armmModel/armInfo.c b/simulators/ovp/armmModel/armInfo.c similarity index 100% rename from ovp/armmModel/armInfo.c rename to simulators/ovp/armmModel/armInfo.c diff --git a/ovp/armmModel/armMessage.h b/simulators/ovp/armmModel/armMessage.h similarity index 100% rename from ovp/armmModel/armMessage.h rename to simulators/ovp/armmModel/armMessage.h diff --git a/ovp/armmModel/armMode.h b/simulators/ovp/armmModel/armMode.h similarity index 100% rename from ovp/armmModel/armMode.h rename to simulators/ovp/armmModel/armMode.h diff --git a/ovp/armmModel/armMorph.h b/simulators/ovp/armmModel/armMorph.h similarity index 100% rename from ovp/armmModel/armMorph.h rename to simulators/ovp/armmModel/armMorph.h diff --git a/ovp/armmModel/armMorphEntries.h b/simulators/ovp/armmModel/armMorphEntries.h similarity index 100% rename from ovp/armmModel/armMorphEntries.h rename to simulators/ovp/armmModel/armMorphEntries.h diff --git a/ovp/armmModel/armMorphFunctions.h b/simulators/ovp/armmModel/armMorphFunctions.h similarity index 100% rename from ovp/armmModel/armMorphFunctions.h rename to simulators/ovp/armmModel/armMorphFunctions.h diff --git a/ovp/armmModel/armRegisters.h b/simulators/ovp/armmModel/armRegisters.h similarity index 100% rename from ovp/armmModel/armRegisters.h rename to simulators/ovp/armmModel/armRegisters.h diff --git a/ovp/armmModel/armStructure.h b/simulators/ovp/armmModel/armStructure.h similarity index 100% rename from ovp/armmModel/armStructure.h rename to simulators/ovp/armmModel/armStructure.h diff --git a/ovp/armmModel/armSys.h b/simulators/ovp/armmModel/armSys.h similarity index 100% rename from ovp/armmModel/armSys.h rename to simulators/ovp/armmModel/armSys.h diff --git a/ovp/armmModel/armSysRegisters.h b/simulators/ovp/armmModel/armSysRegisters.h similarity index 100% rename from ovp/armmModel/armSysRegisters.h rename to simulators/ovp/armmModel/armSysRegisters.h diff --git a/ovp/armmModel/armTypeRefs.h b/simulators/ovp/armmModel/armTypeRefs.h similarity index 100% rename from ovp/armmModel/armTypeRefs.h rename to simulators/ovp/armmModel/armTypeRefs.h diff --git a/ovp/armmModel/armUtils.h b/simulators/ovp/armmModel/armUtils.h similarity index 100% rename from ovp/armmModel/armUtils.h rename to simulators/ovp/armmModel/armUtils.h diff --git a/ovp/armmModel/armVFP.h b/simulators/ovp/armmModel/armVFP.h similarity index 100% rename from ovp/armmModel/armVFP.h rename to simulators/ovp/armmModel/armVFP.h diff --git a/ovp/armmModel/armVM.h b/simulators/ovp/armmModel/armVM.h similarity index 100% rename from ovp/armmModel/armVM.h rename to simulators/ovp/armmModel/armVM.h diff --git a/ovp/armmModel/armVariant.h b/simulators/ovp/armmModel/armVariant.h similarity index 100% rename from ovp/armmModel/armVariant.h rename to simulators/ovp/armmModel/armVariant.h diff --git a/ovp/armmModel/armmAttrs.c b/simulators/ovp/armmModel/armmAttrs.c similarity index 100% rename from ovp/armmModel/armmAttrs.c rename to simulators/ovp/armmModel/armmAttrs.c diff --git a/ovp/armmModel/armmConfigList.c b/simulators/ovp/armmModel/armmConfigList.c similarity index 100% rename from ovp/armmModel/armmConfigList.c rename to simulators/ovp/armmModel/armmConfigList.c diff --git a/ovp/armmModel/armmDebug.c b/simulators/ovp/armmModel/armmDebug.c similarity index 100% rename from ovp/armmModel/armmDebug.c rename to simulators/ovp/armmModel/armmDebug.c diff --git a/ovp/armmModel/armmDecode.c b/simulators/ovp/armmModel/armmDecode.c similarity index 100% rename from ovp/armmModel/armmDecode.c rename to simulators/ovp/armmModel/armmDecode.c diff --git a/ovp/armmModel/armmDecodeThumb.c b/simulators/ovp/armmModel/armmDecodeThumb.c similarity index 100% rename from ovp/armmModel/armmDecodeThumb.c rename to simulators/ovp/armmModel/armmDecodeThumb.c diff --git a/ovp/armmModel/armmDisassemble.c b/simulators/ovp/armmModel/armmDisassemble.c similarity index 100% rename from ovp/armmModel/armmDisassemble.c rename to simulators/ovp/armmModel/armmDisassemble.c diff --git a/ovp/armmModel/armmDoc.c b/simulators/ovp/armmModel/armmDoc.c similarity index 100% rename from ovp/armmModel/armmDoc.c rename to simulators/ovp/armmModel/armmDoc.c diff --git a/ovp/armmModel/armmDoc.h b/simulators/ovp/armmModel/armmDoc.h similarity index 100% rename from ovp/armmModel/armmDoc.h rename to simulators/ovp/armmModel/armmDoc.h diff --git a/ovp/armmModel/armmEmit.c b/simulators/ovp/armmModel/armmEmit.c similarity index 100% rename from ovp/armmModel/armmEmit.c rename to simulators/ovp/armmModel/armmEmit.c diff --git a/ovp/armmModel/armmExceptions.c b/simulators/ovp/armmModel/armmExceptions.c similarity index 100% rename from ovp/armmModel/armmExceptions.c rename to simulators/ovp/armmModel/armmExceptions.c diff --git a/ovp/armmModel/armmMain.c b/simulators/ovp/armmModel/armmMain.c similarity index 100% rename from ovp/armmModel/armmMain.c rename to simulators/ovp/armmModel/armmMain.c diff --git a/ovp/armmModel/armmMorphFunctions.c b/simulators/ovp/armmModel/armmMorphFunctions.c similarity index 100% rename from ovp/armmModel/armmMorphFunctions.c rename to simulators/ovp/armmModel/armmMorphFunctions.c diff --git a/ovp/armmModel/armmMorphTable.c b/simulators/ovp/armmModel/armmMorphTable.c similarity index 100% rename from ovp/armmModel/armmMorphTable.c rename to simulators/ovp/armmModel/armmMorphTable.c diff --git a/ovp/armmModel/armmParameters.c b/simulators/ovp/armmModel/armmParameters.c similarity index 100% rename from ovp/armmModel/armmParameters.c rename to simulators/ovp/armmModel/armmParameters.c diff --git a/ovp/armmModel/armmParameters.h b/simulators/ovp/armmModel/armmParameters.h similarity index 100% rename from ovp/armmModel/armmParameters.h rename to simulators/ovp/armmModel/armmParameters.h diff --git a/ovp/armmModel/armmSemiHost.c b/simulators/ovp/armmModel/armmSemiHost.c similarity index 100% rename from ovp/armmModel/armmSemiHost.c rename to simulators/ovp/armmModel/armmSemiHost.c diff --git a/ovp/armmModel/armmSys.c b/simulators/ovp/armmModel/armmSys.c similarity index 100% rename from ovp/armmModel/armmSys.c rename to simulators/ovp/armmModel/armmSys.c diff --git a/ovp/armmModel/armmUtils.c b/simulators/ovp/armmModel/armmUtils.c similarity index 100% rename from ovp/armmModel/armmUtils.c rename to simulators/ovp/armmModel/armmUtils.c diff --git a/ovp/armmModel/armmVFP.c b/simulators/ovp/armmModel/armmVFP.c similarity index 100% rename from ovp/armmModel/armmVFP.c rename to simulators/ovp/armmModel/armmVFP.c diff --git a/ovp/armmModel/armmVM.c b/simulators/ovp/armmModel/armmVM.c similarity index 100% rename from ovp/armmModel/armmVM.c rename to simulators/ovp/armmModel/armmVM.c diff --git a/ovp/armmModel/export.def b/simulators/ovp/armmModel/export.def similarity index 100% rename from ovp/armmModel/export.def rename to simulators/ovp/armmModel/export.def diff --git a/ovp/armmModel/failSALlink.cc b/simulators/ovp/armmModel/failSALlink.cc similarity index 87% rename from ovp/armmModel/failSALlink.cc rename to simulators/ovp/armmModel/failSALlink.cc index 8fcada3e..cdc59403 100644 --- a/ovp/armmModel/failSALlink.cc +++ b/simulators/ovp/armmModel/failSALlink.cc @@ -1,5 +1,5 @@ #include -//#include "SAL/SimulatorController.hpp" +//#include "sal/SimulatorController.hpp" using namespace std; diff --git a/ovp/cortexM3/CMakeLists.txt b/simulators/ovp/cortexM3/CMakeLists.txt similarity index 80% rename from ovp/cortexM3/CMakeLists.txt rename to simulators/ovp/cortexM3/CMakeLists.txt index 49b8393a..32eff41d 100644 --- a/ovp/cortexM3/CMakeLists.txt +++ b/simulators/ovp/cortexM3/CMakeLists.txt @@ -10,6 +10,6 @@ add_executable(ovp_cortexM3 ${SRCS}) add_dependencies(ovp_cortexM3 ovpstatusmessages ) -target_link_libraries(ovp_cortexM3 ${SIM_LDFLAGS} SAL controller jobserver util ovpstatusmessages) +target_link_libraries(ovp_cortexM3 ${SIM_LDFLAGS} sal cpn comm efw util ovpstatusmessages) ## OVP links all needed shared libraries via a runtimeloader set_target_properties(ovp_cortexM3 PROPERTIES LINK_FLAGS "-L${CMAKE_BINARY_DIR}/lib -lpcl -lprotobuf -m32 ") diff --git a/ovp/cortexM3/platform/platform.cc b/simulators/ovp/cortexM3/platform/platform.cc similarity index 99% rename from ovp/cortexM3/platform/platform.cc rename to simulators/ovp/cortexM3/platform/platform.cc index 93454023..ac05e7aa 100644 --- a/ovp/cortexM3/platform/platform.cc +++ b/simulators/ovp/cortexM3/platform/platform.cc @@ -24,7 +24,7 @@ #include "platform.hpp" #include "statreg.hpp" -#include "SAL/SALInst.hpp" +#include "sal/SALInst.hpp" #include "icm/icmCpuManager.h" #include "icm/icmQuery.h" diff --git a/ovp/cortexM3/platform/platform.hpp b/simulators/ovp/cortexM3/platform/platform.hpp similarity index 100% rename from ovp/cortexM3/platform/platform.hpp rename to simulators/ovp/cortexM3/platform/platform.hpp diff --git a/ovp/cortexM3/platform/statreg.hpp b/simulators/ovp/cortexM3/platform/statreg.hpp similarity index 100% rename from ovp/cortexM3/platform/statreg.hpp rename to simulators/ovp/cortexM3/platform/statreg.hpp diff --git a/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/CMakeLists.txt b/simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/CMakeLists.txt similarity index 82% rename from ovp/ovpworld.org/mmc/flakyMemory/1.0/model/CMakeLists.txt rename to simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/CMakeLists.txt index c915107f..5f48a2f4 100644 --- a/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/CMakeLists.txt +++ b/simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/CMakeLists.txt @@ -6,8 +6,8 @@ add_definitions("-m32") message(STATUS "flaky ld flags: ${HOST_LDFLAGS}") add_library(flaky SHARED ${SRCS}) -add_dependencies(flaky protomessages SAL) +add_dependencies(flaky msg sal) set_target_properties(flaky PROPERTIES LINK_FLAGS "${HOST_LDFLAGS} -m32") -target_link_libraries(flaky ${IMPERAS_VMISTUBS} ${LIBRARY_OUTPUT_PATH}/libSAL.a) +target_link_libraries(flaky ${IMPERAS_VMISTUBS} ${LIBRARY_OUTPUT_PATH}/libsal.a) diff --git a/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.cpp b/simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.cpp similarity index 100% rename from ovp/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.cpp rename to simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.cpp diff --git a/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.h b/simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.h similarity index 100% rename from ovp/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.h rename to simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/flipBits.h diff --git a/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/model.cpp b/simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/model.cpp similarity index 98% rename from ovp/ovpworld.org/mmc/flakyMemory/1.0/model/model.cpp rename to simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/model.cpp index 26960297..0e03f31e 100644 --- a/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/model.cpp +++ b/simulators/ovp/ovpworld.org/mmc/flakyMemory/1.0/model/model.cpp @@ -15,8 +15,8 @@ extern "C" { #include "flipBits.h" } -//#include "../core/SAL/ovp/OVPController.hpp" -#include "SAL/SALInst.hpp" +//#include "sal/ovp/OVPController.hpp" +#include "sal/SALInst.hpp" // Model prefix (used by vmiMessage interface) #define CPU_PREFIX "flakyMemory" diff --git a/ovp/setImperas.sh b/simulators/ovp/setImperas.sh similarity index 100% rename from ovp/setImperas.sh rename to simulators/ovp/setImperas.sh diff --git a/ovp/statusmsg/CMakeLists.txt b/simulators/ovp/statusmsg/CMakeLists.txt similarity index 100% rename from ovp/statusmsg/CMakeLists.txt rename to simulators/ovp/statusmsg/CMakeLists.txt diff --git a/ovp/statusmsg/OVPStatusMessage.proto b/simulators/ovp/statusmsg/OVPStatusMessage.proto similarity index 100% rename from ovp/statusmsg/OVPStatusMessage.proto rename to simulators/ovp/statusmsg/OVPStatusMessage.proto diff --git a/core/jobserver/messagedefs/protogen.sh b/simulators/ovp/statusmsg/protogen.sh similarity index 100% rename from core/jobserver/messagedefs/protogen.sh rename to simulators/ovp/statusmsg/protogen.sh diff --git a/ovp/test1/CMakeLists.txt b/simulators/ovp/test1/CMakeLists.txt similarity index 91% rename from ovp/test1/CMakeLists.txt rename to simulators/ovp/test1/CMakeLists.txt index 8b544803..2886eb3e 100644 --- a/ovp/test1/CMakeLists.txt +++ b/simulators/ovp/test1/CMakeLists.txt @@ -7,7 +7,7 @@ set(SRCS platform/platform.cpp ) add_executable(ovp ${SRCS}) -add_dependencies(ovp protomessages) +add_dependencies(ovp msg) target_link_libraries(ovp ${SIM_LDFLAGS} ) ## OVP links all needed shared libraries via a runtimeloader set_target_properties(ovp PROPERTIES LINK_FLAGS " -m32 ") diff --git a/ovp/test1/application.elf b/simulators/ovp/test1/application.elf similarity index 100% rename from ovp/test1/application.elf rename to simulators/ovp/test1/application.elf diff --git a/ovp/test1/application/application.c b/simulators/ovp/test1/application/application.c similarity index 100% rename from ovp/test1/application/application.c rename to simulators/ovp/test1/application/application.c diff --git a/ovp/test1/platform/beforeInstruction.cpp b/simulators/ovp/test1/platform/beforeInstruction.cpp similarity index 100% rename from ovp/test1/platform/beforeInstruction.cpp rename to simulators/ovp/test1/platform/beforeInstruction.cpp diff --git a/ovp/test1/platform/beforeInstruction.hpp b/simulators/ovp/test1/platform/beforeInstruction.hpp similarity index 100% rename from ovp/test1/platform/beforeInstruction.hpp rename to simulators/ovp/test1/platform/beforeInstruction.hpp diff --git a/ovp/test1/platform/flakyMemory.cpp b/simulators/ovp/test1/platform/flakyMemory.cpp similarity index 100% rename from ovp/test1/platform/flakyMemory.cpp rename to simulators/ovp/test1/platform/flakyMemory.cpp diff --git a/ovp/test1/platform/flakyMemory.hpp b/simulators/ovp/test1/platform/flakyMemory.hpp similarity index 100% rename from ovp/test1/platform/flakyMemory.hpp rename to simulators/ovp/test1/platform/flakyMemory.hpp diff --git a/ovp/test1/platform/platform.cpp b/simulators/ovp/test1/platform/platform.cpp similarity index 100% rename from ovp/test1/platform/platform.cpp rename to simulators/ovp/test1/platform/platform.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..d5b7c565 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,39 @@ +### Setup search paths for headers ## +include_directories(${CMAKE_CURRENT_BINARY_DIR}/core) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/core) +# Note: CMAKE_CURRENT_BINARY_DIR is needed to find "FailConfig.hpp", which +# is generated by CMake from config/FailConfig.hpp.in and stored in +# your build-dir. (The same goes for "FailControlMessage.pb.h", etc.) +# This is done in the "src"-folder because experiments need to include +# Fail* headers as well (see hierarchy of CMakeLists.txt's). + +## Add CMakeLists from subdirectories ## +# The Fail* core source files (and it's subdirectories): +add_subdirectory(core) + +# Here we add all user-defined experiments (which fills the target list) +add_subdirectory(experiments/) +message(STATUS "[${PROJECT_NAME}] Chosen experiment targets:") +foreach(experiment_name ${EXPERIMENTS_ACTIVATED}) + message(STATUS "[${PROJECT_NAME}] -> ${experiment_name}") +endforeach(experiment_name) + +# Here we add activated plugins +add_subdirectory(plugins/) +message(STATUS "[${PROJECT_NAME}] Chosen plugin targets:") +foreach(plugin_name ${PLUGINS_ACTIVATED}) + message(STATUS "[${PROJECT_NAME}] -> ${plugin_name}") +endforeach(plugin_name) + +## Merge all resulting Fail* libs into a single libfail.a and copy it into the fail source directory +add_custom_target(fail + COMMAND ${CMAKE_SOURCE_DIR}/cmake/mergelib.sh ${LIBRARY_OUTPUT_PATH} && ${CMAKE_COMMAND} -E copy ${LIBRARY_OUTPUT_PATH}/libfail.a ${CMAKE_SOURCE_DIR}/src +) +# FIXME: "libfail.a" should not be located in the source-tree...?! + +## Setup build dependencies of the Fail* lib +## -> the Fail* targets and user defined experiment targets +add_dependencies(fail sal util cpn efw comm protomessages ${EXPERIMENTS_ACTIVATED} ${PLUGINS_ACTIVATED}) + +# Let make clean also delete libfail.a +set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${LIBRARY_OUTPUT_PATH}/libfail.a) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt new file mode 100644 index 00000000..8f5d5ea2 --- /dev/null +++ b/src/core/CMakeLists.txt @@ -0,0 +1,36 @@ +### Add Boost and Threads +find_package(Boost 1.42 COMPONENTS thread REQUIRED) +find_package(Threads) +include_directories(${Boost_INCLUDE_DIRS}) +link_directories(${Boost_LIBRARY_DIRS}) + +### Setup doxygen documentation +# TODO: put into helpers.cmake +find_package(Doxygen) +if(DOXYGEN_FOUND) +# Using a .in file means we can use CMake to insert project settings +# into the doxyfile. For example, CMake will replace @PROJECT_NAME@ in +# a configured file with the CMake PROJECT_NAME variable's value. +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY} +) + +## call make doc to generate documentation +add_custom_target(doc + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "[${PROJECT_NAME}] Generating Fail* documentation with Doxygen" VERBATIM +) +endif(DOXYGEN_FOUND) + +## Add CMakeLists from subdirectories ## +# The autogenerated header files +add_subdirectory(config) + +# Fail* targets +add_subdirectory(comm) +add_subdirectory(cpn) +add_subdirectory(efw) +add_subdirectory(sal) +add_subdirectory(util) diff --git a/core/Doxyfile.in b/src/core/Doxyfile.in similarity index 100% rename from core/Doxyfile.in rename to src/core/Doxyfile.in diff --git a/src/core/comm/CMakeLists.txt b/src/core/comm/CMakeLists.txt new file mode 100644 index 00000000..279d3a09 --- /dev/null +++ b/src/core/comm/CMakeLists.txt @@ -0,0 +1,8 @@ +set(SRCS + SocketComm.cc +) + +add_subdirectory(msg) + +add_library(comm ${SRCS}) +add_dependencies(comm msg) diff --git a/core/controller/ExperimentData.hpp b/src/core/comm/ExperimentData.hpp similarity index 82% rename from core/controller/ExperimentData.hpp rename to src/core/comm/ExperimentData.hpp index dd90d96e..a9bddfbd 100644 --- a/core/controller/ExperimentData.hpp +++ b/src/core/comm/ExperimentData.hpp @@ -1,6 +1,6 @@ /** * \brief This is the base class for all user-defined data types for - * expirement parameter and results. + * expirement parameter and results. */ #ifndef __EXPERIMENT_DATA_HPP__ @@ -15,18 +15,17 @@ namespace fail { * \class ExperimentData * Container for experiment data with wrapper methods for serialization and deserialization. */ -class ExperimentData -{ +class ExperimentData { protected: google::protobuf::Message* msg; uint32_t m_workloadID; public: ExperimentData() : msg(0), m_workloadID(0) {}; - ExperimentData(google::protobuf::Message* m) : msg(m) , m_workloadID(0) {}; + ExperimentData(google::protobuf::Message* m) : msg(m) , m_workloadID(0) { } - google::protobuf::Message& getMessage() { return *msg; }; - uint32_t getWorkloadID() const { return m_workloadID;}; - void setWorkloadID(uint32_t id) { m_workloadID = id; }; + google::protobuf::Message& getMessage() { return *msg; } + uint32_t getWorkloadID() const { return m_workloadID; }; + void setWorkloadID(uint32_t id) { m_workloadID = id; } /** * Serializes the ExperimentData. * @param ped output the target-stream. diff --git a/core/jobserver/SocketComm.cc b/src/core/comm/SocketComm.cc similarity index 87% rename from core/jobserver/SocketComm.cc rename to src/core/comm/SocketComm.cc index 8ccb0835..cb09d535 100644 --- a/core/jobserver/SocketComm.cc +++ b/src/core/comm/SocketComm.cc @@ -4,7 +4,7 @@ namespace fail { -bool SocketComm::send_msg(int sockfd, google::protobuf::Message& msg) +bool SocketComm::sendMsg(int sockfd, google::protobuf::Message& msg) { #ifdef USE_SIZE_PREFIX int size = htonl(msg.ByteSize()); @@ -25,7 +25,7 @@ bool SocketComm::send_msg(int sockfd, google::protobuf::Message& msg) return true; } -bool SocketComm::rcv_msg(int sockfd, google::protobuf::Message& msg) +bool SocketComm::rcvMsg(int sockfd, google::protobuf::Message& msg) { #ifdef USE_SIZE_PREFIX int size; @@ -37,7 +37,7 @@ bool SocketComm::rcv_msg(int sockfd, google::protobuf::Message& msg) char *buf = new char[size]; // FIXME: read() may need to be called multiple times until all data was read if (read(sockfd, buf, size) != size) { - delete[] buf; + delete [] buf; return false; } std::string st(buf, size); diff --git a/core/jobserver/SocketComm.hpp b/src/core/comm/SocketComm.hpp similarity index 85% rename from core/jobserver/SocketComm.hpp rename to src/core/comm/SocketComm.hpp index b009dbb8..097b023d 100644 --- a/core/jobserver/SocketComm.hpp +++ b/src/core/comm/SocketComm.hpp @@ -19,21 +19,21 @@ namespace fail { class SocketComm { -public: +public: /** * Send Protobuf-generated message * @param sockfd open socket descriptor to write to * @param Msg Reference to Protobuf generated message type * \return false if message sending failed */ - static bool send_msg(int sockfd, google::protobuf::Message& msg); + static bool sendMsg(int sockfd, google::protobuf::Message& msg); /** * Receive Protobuf-generated message * @param sockfd open socket descriptor to read from * @param Msg Reference to Protobuf generated message type * \return false if message reception failed */ - static bool rcv_msg(int sockfd, google::protobuf::Message& msg); + static bool rcvMsg(int sockfd, google::protobuf::Message& msg); }; } // end-of-namespace: fail diff --git a/core/jobserver/messagedefs/CMakeLists.txt b/src/core/comm/msg/CMakeLists.txt similarity index 68% rename from core/jobserver/messagedefs/CMakeLists.txt rename to src/core/comm/msg/CMakeLists.txt index 7746f070..5bd41fad 100644 --- a/core/jobserver/messagedefs/CMakeLists.txt +++ b/src/core/comm/msg/CMakeLists.txt @@ -8,8 +8,8 @@ find_package(Protobuf REQUIRED) include_directories(${PROTOBUF_INCLUDE_DIRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) -PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${MY_PROTOS} ) +PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${MY_PROTOS}) ## Build library -add_library(protomessages ${PROTO_SRCS} ${PROTO_HDRS} ) +add_library(msg ${PROTO_SRCS} ${PROTO_HDRS}) diff --git a/core/jobserver/messagedefs/FailControlMessage.proto b/src/core/comm/msg/FailControlMessage.proto similarity index 100% rename from core/jobserver/messagedefs/FailControlMessage.proto rename to src/core/comm/msg/FailControlMessage.proto diff --git a/ovp/statusmsg/protogen.sh b/src/core/comm/msg/protogen.sh similarity index 100% rename from ovp/statusmsg/protogen.sh rename to src/core/comm/msg/protogen.sh diff --git a/core/config/CMakeLists.txt b/src/core/config/CMakeLists.txt similarity index 93% rename from core/config/CMakeLists.txt rename to src/core/config/CMakeLists.txt index 0a5b1791..81bc3246 100644 --- a/core/config/CMakeLists.txt +++ b/src/core/config/CMakeLists.txt @@ -1,6 +1,6 @@ #### Configuration file emitting BUILD_OVP/BOCHS defines #### -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/variant_config.hpp.in - ${CMAKE_CURRENT_BINARY_DIR}/variant_config.hpp) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/VariantConfig.hpp.in + ${CMAKE_CURRENT_BINARY_DIR}/VariantConfig.hpp) OPTION(CONFIG_EVENT_BREAKPOINTS "Event source: Breakpoints" OFF) OPTION(CONFIG_EVENT_MEMREAD "Event source: Memory reads" OFF) diff --git a/core/config/FailConfig.hpp.in b/src/core/config/FailConfig.hpp.in similarity index 100% rename from core/config/FailConfig.hpp.in rename to src/core/config/FailConfig.hpp.in diff --git a/src/core/config/VariantConfig.hpp.in b/src/core/config/VariantConfig.hpp.in new file mode 100644 index 00000000..6e591b3f --- /dev/null +++ b/src/core/config/VariantConfig.hpp.in @@ -0,0 +1,7 @@ +#ifndef __VARIANT_CONFIG_HPP__ + #define __VARIANT_CONFIG_HPP__ + +#cmakedefine BUILD_OVP +#cmakedefine BUILD_BOCHS + +#endif // __VARIANT_CONFIG_HPP__ diff --git a/src/core/cpn/CMakeLists.txt b/src/core/cpn/CMakeLists.txt new file mode 100644 index 00000000..33576cec --- /dev/null +++ b/src/core/cpn/CMakeLists.txt @@ -0,0 +1,8 @@ +set(SRCS + CampaignManager.cc + JobServer.cc +) + +add_library(cpn ${SRCS}) + +add_dependencies(cpn comm) diff --git a/core/controller/Campaign.hpp b/src/core/cpn/Campaign.hpp similarity index 96% rename from core/controller/Campaign.hpp rename to src/core/cpn/Campaign.hpp index f11d29b5..1fd155a3 100644 --- a/core/controller/Campaign.hpp +++ b/src/core/cpn/Campaign.hpp @@ -12,7 +12,7 @@ namespace fail { */ class Campaign { public: - Campaign() { }; + Campaign() { } /** * Defines the campaign. * @return \c true if the campaign was successful, \c false otherwise diff --git a/core/controller/CampaignManager.cc b/src/core/cpn/CampaignManager.cc similarity index 100% rename from core/controller/CampaignManager.cc rename to src/core/cpn/CampaignManager.cc diff --git a/core/controller/CampaignManager.hpp b/src/core/cpn/CampaignManager.hpp similarity index 94% rename from core/controller/CampaignManager.hpp rename to src/core/cpn/CampaignManager.hpp index 0c80cedf..26b1ac99 100644 --- a/core/controller/CampaignManager.hpp +++ b/src/core/cpn/CampaignManager.hpp @@ -5,10 +5,10 @@ #ifndef __CAMPAIGN_MANAGER_HPP__ #define __CAMPAIGN_MANAGER_HPP__ -#include "SAL/SALInst.hpp" -#include "ExperimentData.hpp" -#include "jobserver/JobServer.hpp" -#include "controller/Campaign.hpp" +#include "sal/SALInst.hpp" +#include "comm/ExperimentData.hpp" +#include "JobServer.hpp" +#include "Campaign.hpp" namespace fail { @@ -60,14 +60,14 @@ public: * Signal, that there will not come any further parameter sets. */ void noMoreParameters() { m_jobserver.setNoMoreExperiments(); } - /** - * Wait actively, until all experiments expired. - */ -// void waitForCompletion(); /** * User campaign has finished. */ void done() { m_jobserver.done(); } + /** + * Wait actively, until all experiments expired. + */ +// void waitForCompletion(); }; extern CampaignManager campaignmanager; diff --git a/core/jobserver/JobServer.cc b/src/core/cpn/JobServer.cc similarity index 77% rename from core/jobserver/JobServer.cc rename to src/core/cpn/JobServer.cc index 126a45e7..c61c909f 100644 --- a/core/jobserver/JobServer.cc +++ b/src/core/cpn/JobServer.cc @@ -9,10 +9,10 @@ #include #include +#include "comm/msg/FailControlMessage.pb.h" +#include "comm/SocketComm.hpp" #include "JobServer.hpp" -#include "jobserver/messagedefs/FailControlMessage.pb.h" -#include "SocketComm.hpp" -#include "controller/Minion.hpp" +#include "Minion.hpp" #ifndef __puma #include @@ -61,7 +61,7 @@ void JobServer::measure() // TODO: Log-level? cout << "\n[Server] Logging throughput in \"" << SERVER_PERF_LOG_PATH << "\"..." << endl; ofstream m_file(SERVER_PERF_LOG_PATH, std::ios::trunc); // overwrite existing perf-logs - if(!m_file.is_open()) { + if (!m_file.is_open()) { cerr << "[Server] Perf-logging has been enabled" << "but I was not able to write the log-file \"" << SERVER_PERF_LOG_PATH << "\"." << endl; @@ -71,7 +71,7 @@ void JobServer::measure() m_file << "time\tthroughput" << endl; unsigned diff = 0; - while(!m_finish) { + while (!m_finish) { // Format: 1st column (seconds)[TAB]2nd column (throughput) m_file << counter << "\t" << (m_DoneCount - diff) << endl; counter += SERVER_PERF_STEPPING_SEC; @@ -86,44 +86,47 @@ void JobServer::measure() #ifndef __puma /** - * This is a predicate class for the remove_if operator - * on the thread list. The operator waits for - * timeout milliseconds to join each thread in the list. - * If the join was successful, the exited thread is deallocated - * and removed from the list. + * This is a predicate class for the remove_if operator on the thread + * list. The operator waits for timeout milliseconds to join each + * thread in the list. If the join was successful, the exited thread + * is deallocated and removed from the list. */ struct timed_join_successful { - int timeout_ms; - timed_join_successful(int timeout) : timeout_ms(timeout){}; - - bool operator()( boost::thread * threadelement ){ - boost::posix_time::time_duration timeout = boost::posix_time::milliseconds(timeout_ms); - if(threadelement->timed_join(timeout)){ - delete threadelement; - return true; - }else{ - return false; + int timeout_ms; + timed_join_successful(int timeout) + : timeout_ms(timeout) { } + + bool operator()(boost::thread* threadelement) + { + boost::posix_time::time_duration timeout = boost::posix_time::milliseconds(timeout_ms); + if (threadelement->timed_join(timeout)) { + delete threadelement; + return true; + } else { + return false; + } } - -} }; #endif -void JobServer::run(){ +void JobServer::run() +{ struct sockaddr_in clientaddr; socklen_t clen = sizeof(clientaddr); // implementation of server-client communication int s; - if((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) { + if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); + // TODO: Log-level? return; } /* Enable address reuse */ int on = 1; - if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) { + if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) { perror("setsockopt"); + // TODO: Log-level? return; } @@ -134,37 +137,41 @@ void JobServer::run(){ saddr.sin_addr.s_addr = htons(INADDR_ANY); /* bind to port */ - if(bind(s, (struct sockaddr*) &saddr, sizeof(saddr)) == -1) { + if (bind(s, (struct sockaddr*) &saddr, sizeof(saddr)) == -1) { perror("bind"); + // TODO: Log-level? return; } /* Listen with a backlog of maxThreads */ - if(listen(s, m_maxThreads) == -1) { + if (listen(s, m_maxThreads) == -1) { perror("listen"); + // TODO: Log-level? return; } cout << "JobServer listening...." << endl; + // TODO: Log-level? #ifndef __puma boost::thread* th; while(!m_finish){ // Accept connection int cs = accept(s, (struct sockaddr*)&clientaddr, &clen); - if(cs == -1) { + if (cs == -1) { perror("accept"); + // TODO: Log-level? return; } // Spawn a thread for further communication, // and add this thread to a list threads // We can limit the generation of threads here. - if(m_threadlist.size() < m_maxThreads){ + if (m_threadlist.size() < m_maxThreads) { th = new boost::thread(CommThread(cs, *this)); m_threadlist.push_back(th); - }else{ + } else { // Run over list with a timed_join, // removing finished threads. do { - m_threadlist.remove_if( timed_join_successful(m_threadtimeout) ); + m_threadlist.remove_if(timed_join_successful(m_threadtimeout)); } while(m_threadlist.size() == m_maxThreads); // Start new thread th = new boost::thread(CommThread(cs, *this)); @@ -175,9 +182,8 @@ void JobServer::run(){ close(s); // when all undone Jobs are distributed -> call a timed_join on all spawned // TODO: interrupt threads that do not want to join.. - while(m_threadlist.size() > 0){ + while (m_threadlist.size() > 0) m_threadlist.remove_if( timed_join_successful(m_threadtimeout) ); - } #endif } @@ -189,7 +195,7 @@ void CommThread::operator()() FailControlMessage ctrlmsg; minion.setSocketDescriptor(m_sock); - if (!SocketComm::rcv_msg(minion.getSocketDescriptor(), ctrlmsg)) { + if (!SocketComm::rcvMsg(minion.getSocketDescriptor(), ctrlmsg)) { cout << "!![Server] failed to read complete message from client" << endl; close(m_sock); return; @@ -211,7 +217,7 @@ void CommThread::operator()() ctrlmsg.Clear(); ctrlmsg.set_command(FailControlMessage_Command_DIE); ctrlmsg.set_build_id(42); - SocketComm::send_msg(minion.getSocketDescriptor(), ctrlmsg); + SocketComm::sendMsg(minion.getSocketDescriptor(), ctrlmsg); } close(m_sock); @@ -226,26 +232,26 @@ void CommThread::sendPendingExperimentData(Minion& minion) FailControlMessage ctrlmsg; ctrlmsg.set_build_id(42); ExperimentData * exp = 0; - if(m_js.m_undoneJobs.Dequeue_nb(exp) == true) { + if (m_js.m_undoneJobs.Dequeue_nb(exp) == true) { // Got an element from queue, assign ID to workload and send to minion uint32_t workloadID = m_js.m_counter.increment(); // increment workload counter exp->setWorkloadID(workloadID); // store ID for identification when receiving result - if(!m_js.m_runningJobs.insert(workloadID, exp)) { + if (!m_js.m_runningJobs.insert(workloadID, exp)) { cout << "!![Server]could not insert workload id: [" << workloadID << "] double entry?" << endl; } ctrlmsg.set_command(FailControlMessage_Command_WORK_FOLLOWS); ctrlmsg.set_workloadid(workloadID); // set workload id //cout << ">>[Server] Sending workload [" << workloadID << "]" << endl; cout << ">>[" << workloadID << "] " << flush; - SocketComm::send_msg(minion.getSocketDescriptor(), ctrlmsg); - SocketComm::send_msg(minion.getSocketDescriptor(), exp->getMessage()); + SocketComm::sendMsg(minion.getSocketDescriptor(), ctrlmsg); + SocketComm::sendMsg(minion.getSocketDescriptor(), exp->getMessage()); return; } #ifndef __puma boost::unique_lock lock(m_CommMutex); #endif - if((exp = m_js.m_runningJobs.pickone()) != NULL) { // 2nd priority + if ((exp = m_js.m_runningJobs.pickone()) != NULL) { // 2nd priority // (This picks one running job.) // TODO: Improve selection of parameter set to be resent: // - currently: Linear complexity! @@ -263,19 +269,19 @@ void CommThread::sendPendingExperimentData(Minion& minion) ctrlmsg.set_workloadid(workloadID); // set workload id //cout << ">>[Server] Re-sending workload [" << workloadID << "]" << endl; cout << ">>R[" << workloadID << "] " << flush; - SocketComm::send_msg(minion.getSocketDescriptor(), ctrlmsg); - SocketComm::send_msg(minion.getSocketDescriptor(), exp->getMessage()); - } else if(m_js.noMoreExperiments() == false) { + SocketComm::sendMsg(minion.getSocketDescriptor(), ctrlmsg); + SocketComm::sendMsg(minion.getSocketDescriptor(), exp->getMessage()); + } else if (m_js.noMoreExperiments() == false) { // Currently we have no workload (even the running-job-queue is empty!), but // the campaign is not over yet. Minion can try again later. ctrlmsg.set_command(FailControlMessage_Command_COME_AGAIN); - SocketComm::send_msg(minion.getSocketDescriptor(), ctrlmsg); + SocketComm::sendMsg(minion.getSocketDescriptor(), ctrlmsg); cout << "--[Server] No workload, come again..." << endl; } else { // No more elements, and campaign is over. Minion can die. ctrlmsg.set_command(FailControlMessage_Command_DIE); cout << "--[Server] No workload, and no campaign, please die." << endl; - SocketComm::send_msg(minion.getSocketDescriptor(), ctrlmsg); + SocketComm::sendMsg(minion.getSocketDescriptor(), ctrlmsg); } } @@ -288,8 +294,8 @@ void CommThread::receiveExperimentResults(Minion& minion, uint32_t workloadID) ExperimentData * exp; // Get exp* from running jobs //cout << "<<[Server] Received result for workload id [" << workloadID << "]" << endl; cout << "<<[" << workloadID << "] " << flush; - if(m_js.m_runningJobs.remove(workloadID, exp)) { // ExperimentData* found - SocketComm::rcv_msg(minion.getSocketDescriptor(), exp->getMessage() ); // deserialize results. + if (m_js.m_runningJobs.remove(workloadID, exp)) { // ExperimentData* found + SocketComm::rcvMsg(minion.getSocketDescriptor(), exp->getMessage() ); // deserialize results. m_js.m_doneJobs.Enqueue(exp); // Put results in done queue.. #ifdef SERVER_PERFORMANCE_MEASURE ++JobServer::m_DoneCount; diff --git a/core/jobserver/JobServer.hpp b/src/core/cpn/JobServer.hpp similarity index 75% rename from core/jobserver/JobServer.hpp rename to src/core/cpn/JobServer.hpp index 43196300..66ecee39 100644 --- a/core/jobserver/JobServer.hpp +++ b/src/core/cpn/JobServer.hpp @@ -1,7 +1,7 @@ #ifndef __JOB_SERVER_H__ #define __JOB_SERVER_H__ -#include "controller/Minion.hpp" +#include "Minion.hpp" #include "util/SynchronizedQueue.hpp" #include "util/SynchronizedCounter.hpp" #include "util/SynchronizedMap.hpp" @@ -25,8 +25,8 @@ class CommThread; * experiment parameter sets, which the Jobserver will distribute to requesting * clients. The campaign controller can wait for all results, or a timeout. */ -class JobServer -{ +class JobServer { +private: //! The TCP Port number int m_port; //! TODO nice termination concept @@ -51,7 +51,6 @@ class JobServer boost::thread* m_measureThread; //! the performance measurement thread #endif #endif - //! Atomic counter for Workload IDs. SynchronizedCounter m_counter; //! Map of running jobs (referenced by Workload ID @@ -61,29 +60,6 @@ class JobServer //! List of finished experiment results. SynchronizedQueue m_doneJobs; friend class CommThread; //!< CommThread is allowed access the job queues. -public: - JobServer(int port = 1111) : m_port(port), m_finish(false), m_noMoreExps(false), - m_maxThreads(128), m_threadtimeout(0) { -#ifndef __puma - m_serverThread = new boost::thread(&JobServer::run, this); // run operator()() in a thread. -#ifdef SERVER_PERFORMANCE_MEASURE - m_measureThread = new boost::thread(&JobServer::measure, this); -#endif -#endif - }; - ~JobServer() - { -#ifndef __puma - // Cleanup of m_serverThread, etc. - delete m_serverThread; -#ifdef SERVER_PERFORMANCE_MEASURE - delete m_measureThread; -#endif -#endif // __puma - }; - - private: - /** * The actual startup of the Jobserver. * Here we initalize the network socket @@ -93,45 +69,59 @@ public: #ifdef SERVER_PERFORMANCE_MEASURE void measure(); #endif - void sendWork(int sockfd); -public: - +public: + JobServer(int port = 1111) : m_port(port), m_finish(false), m_noMoreExps(false), + m_maxThreads(128), m_threadtimeout(0) + { +#ifndef __puma + m_serverThread = new boost::thread(&JobServer::run, this); // run operator()() in a thread. +#ifdef SERVER_PERFORMANCE_MEASURE + m_measureThread = new boost::thread(&JobServer::measure, this); +#endif +#endif + } + ~JobServer() + { +#ifndef __puma + // Cleanup of m_serverThread, etc. + delete m_serverThread; +#ifdef SERVER_PERFORMANCE_MEASURE + delete m_measureThread; +#endif +#endif // __puma + } /** * Adds a new experiment data set to the job queue. * @param data Pointer to an expoeriment data object - */ + */ void addParam(ExperimentData* data); - /** - * Retrieve an experiment result. - * - * Blocks if we currently have no results. Returns NULL if no results - * are to be expected, because no parameter sets were enqueued - * beforehand. + * Retrieve an experiment result. Blocks if we currently have no results. + * Returns \c NULL if no results are to be expected, because no parameter + * sets were enqueued beforehand. + * @return pointer to experiment result data */ ExperimentData* getDone(); - /** - * The Campaign controller must signalize, that - * there will be no more parameter sets. - * We need this, as we allow concurrent parameter + * The Campaign controller must signalize, that there will be no + * more parameter sets. We need this, as we allow concurrent parameter * generation and distribution. */ - void setNoMoreExperiments(){ m_noMoreExps = true; }; - + void setNoMoreExperiments() { m_noMoreExps = true; } /** - * corresponding getter-method @see setNoMoreExperiments + * Checks whether there are no more experiment paremeter sets. + * @return \c true if no more parameter sets available, \c false otherwise + * @see setNoMoreExperiments */ - bool noMoreExperiments()const { return m_noMoreExps; }; + bool noMoreExperiments() const { return m_noMoreExps; } /** - * The Campaign Controller can signalize, that - * the jobserver can stop listening for client - * connections. + * The Campaign Controller can signalize, that the jobserver can + * stop listening for client connections. */ - void done() { m_finish = true; }; + void done() { m_finish = true; } }; /** @@ -141,19 +131,14 @@ public: * with the minions. */ class CommThread { +private: int m_sock; //! Socket descriptor of the connection JobServer& m_js; //! Calling jobserver #ifndef __puma static boost::mutex m_CommMutex; //! to synchronise the communication #endif // __puma -public: - CommThread(int sockfd, JobServer& p) : m_sock(sockfd), m_js(p) {}; - /** - * The thread's entry point. - */ - void operator() (); -private: - /// FIXME concerns are not really separated yet ;) + + // FIXME: Concerns are not really separated yet ;) /** * Called after minion calls for work. * Tries to deque a parameter set non blocking, and @@ -169,6 +154,13 @@ private: * @param workloadID The workload id of the result message */ void receiveExperimentResults(Minion& minion, uint32_t workloadID); +public: + CommThread(int sockfd, JobServer& p) + : m_sock(sockfd), m_js(p) { } + /** + * The thread's entry point. + */ + void operator()(); }; } // end-of-namespace: fail diff --git a/src/core/cpn/Minion.hpp b/src/core/cpn/Minion.hpp new file mode 100644 index 00000000..dd6da7df --- /dev/null +++ b/src/core/cpn/Minion.hpp @@ -0,0 +1,71 @@ +/** + * \brief The representation of a minion. + */ + +#ifndef __MINION_HPP__ + #define __MINION_HPP__ + +#include + +#include "comm/ExperimentData.hpp" + +namespace fail { + +/** + * \class Minion + * + * Contains all informations about a minion. + */ +class Minion { +private: + std::string hostname; + bool isWorking; + ExperimentData* currentExperimentData; + int sockfd; +public: + Minion() : isWorking(false), currentExperimentData(0), sockfd(-1) { } + /** + * Sets the socket descriptor. + * @param sock the new socket descriptor (used internal) + */ + void setSocketDescriptor(int sock) { sockfd = sock; } + /** + * Retrives the socket descriptor. + * @return the socket descriptor + */ + int getSocketDescriptor() const { return (sockfd); } + /** + * Returns the hostname of the minion. + * @return the hostname + */ + const std::string& getHostname() { return (hostname); } + /** + * Sets the hostname of the minion. + * @param host the hostname + */ + void setHostname(const std::string& host) { hostname = host; } + /** + * Returns the current ExperimentData which the minion is working with. + * @return a pointer of the current ExperimentData + */ + ExperimentData* getCurrentExperimentData() { return currentExperimentData; } + /** + * Sets the current ExperimentData which the minion is working with. + * @param exp the current ExperimentData + */ + void setCurrentExperimentData(ExperimentData* exp) { currentExperimentData = exp; } + /** + * Returns the current state of the minion. + * @return the current state + */ + bool isBusy() { return (isWorking); } + /** + * Sets the current state of the minion + * @param state the current state + */ + void setBusy(bool state) { isWorking = state; } +}; + +} // end-of-namespace: fail + +#endif // __MINION_HPP__ diff --git a/src/core/efw/CMakeLists.txt b/src/core/efw/CMakeLists.txt new file mode 100644 index 00000000..cbe589d8 --- /dev/null +++ b/src/core/efw/CMakeLists.txt @@ -0,0 +1,10 @@ +set(SRCS + CoroutineManager.cc + JobClient.cc +) + +# FIXME: Add dependency check for pcl-library here. + +add_library(efw ${SRCS}) + +add_dependencies(efw comm) diff --git a/core/controller/CoroutineManager.cc b/src/core/efw/CoroutineManager.cc similarity index 93% rename from core/controller/CoroutineManager.cc rename to src/core/efw/CoroutineManager.cc index 506ac64c..82547149 100644 --- a/core/controller/CoroutineManager.cc +++ b/src/core/efw/CoroutineManager.cc @@ -2,7 +2,7 @@ #include #include "CoroutineManager.hpp" -#include "../controller/ExperimentFlow.hpp" +#include "ExperimentFlow.hpp" namespace fail { @@ -81,10 +81,11 @@ void CoroutineManager::resume() ExperimentFlow* CoroutineManager::getCurrent() { coroutine_t cr = co_current(); - for(std::map::iterator it = m_Flows.begin(); + for (std::map::iterator it = m_Flows.begin(); it != m_Flows.end(); it++) - if(it->second == cr) - return (it->first); + if (it->second == cr) + return it->first; + assert(false && "FATAL ERROR: The current flow could not be retrieved!"); return 0; } diff --git a/src/core/efw/CoroutineManager.hpp b/src/core/efw/CoroutineManager.hpp new file mode 100644 index 00000000..d7a40e66 --- /dev/null +++ b/src/core/efw/CoroutineManager.hpp @@ -0,0 +1,72 @@ +#ifndef __COROUTINE_MANAGER_HPP__ + #define __COROUTINE_MANAGER_HPP__ + +#include +#include + +#include // the underlying "portable coroutine library" + +namespace fail { + +class ExperimentFlow; + +/** + * \class CoroutineManager + * Manages the experiments flow encapsulated in coroutines. Each + * experiment (flow) has it's associated data structure which is + * represented by the ExperimentData-class. + */ +class CoroutineManager { +private: + //! the default stack size for coroutines (= experiment flows) + static const unsigned STACK_SIZE_DEFAULT = 4096*4096; + //! the abstraction for coroutine identification + typedef coroutine_t corohandle_t; + typedef std::map flowmap_t; + //! the mapping "flows <-> coro-handle" + flowmap_t m_Flows; + //! the simulator/backend coroutine handle + corohandle_t m_simCoro; + //! stack of coroutines that explicitly activated another one with toggle() + std::stack m_togglerstack; + //! manages the run-calls for each ExperimentFlow-object + static void m_invoke(void* pData); +public: + static const ExperimentFlow* SIM_FLOW; //!< the simulator coroutine flow + + CoroutineManager() : m_simCoro(co_current()) { } + ~CoroutineManager(); + /** + * Creates a new coroutine for the specified experiment flow. + * @param flow the flow to be executed in the newly created coroutine + */ + void create(ExperimentFlow* flow); + /** + * Destroys coroutine for the specified experiment flow. + * @param flow the flow to be removed + */ + void remove(ExperimentFlow* flow); + /** + * Switches the control flow to the experiment \a flow. If \a flow is + * equal to \c SIM_FLOW, the control will be handed back to the + * simulator. The current control flow is pushed onto an + * internal stack. + * @param flow the destination control flow or \c SIM_FLOW (= \c NULL ) + */ + void toggle(ExperimentFlow* flow); + /** + * Gives the control back to the coroutine that toggle()d the + * current one, by drawing from the internal stack built from + * calls to toggle(). + */ + void resume(); + /** + * Retrieves the current (active) coroutine (= flow). + * @return the current experiment flow. + */ + ExperimentFlow* getCurrent(); +}; + +} // end-of-namespace: fail + +#endif // __COROUTINE_MANAGER_HPP__ diff --git a/src/core/efw/ExperimentFlow.hpp b/src/core/efw/ExperimentFlow.hpp new file mode 100644 index 00000000..5825bfe5 --- /dev/null +++ b/src/core/efw/ExperimentFlow.hpp @@ -0,0 +1,37 @@ +#ifndef __EXPERIMENT_FLOW_HPP__ + #define __EXPERIMENT_FLOW_HPP__ + +#include "sal/SALInst.hpp" + +namespace fail { + +/** + * \class ExperimentFlow + * Basic interface for user-defined experiments. To create a new experiment, + * derive your own class from ExperimentFlow and define the run method. + */ +class ExperimentFlow { +public: + ExperimentFlow() { } + /** + * Defines the experiment flow. + * @return \c true if the experiment was successful, \c false otherwise + */ + virtual bool run() = 0; + /** + * The entry point for this experiment's coroutine. + * Should do some cleanup afterwards. + */ + void coroutine_entry() + { + run(); + simulator.clearEvents(this); // remove residual events + // FIXME: Consider removing this call (see EventList.cc, void remove(ExperimentFlow* flow)) + // a) with the advantage that we will potentially prevent serious segfaults but + // b) with the drawback that we cannot enforce any cleanups. + } +}; + +} // end-of-namespace: fail + +#endif // __EXPERIMENT_FLOW_HPP__ diff --git a/core/jobserver/JobClient.cc b/src/core/efw/JobClient.cc similarity index 51% rename from core/jobserver/JobClient.cc rename to src/core/efw/JobClient.cc index d616c0b4..b3770be5 100644 --- a/core/jobserver/JobClient.cc +++ b/src/core/efw/JobClient.cc @@ -4,7 +4,7 @@ using namespace std; namespace fail { -JobClient::JobClient(std::string server, int port) +JobClient::JobClient(const std::string& server, int port) { m_server_port = port; m_server = server; @@ -37,12 +37,12 @@ bool JobClient::connectToServer() memcpy(&serv_addr.sin_addr.s_addr, m_server_ent->h_addr, m_server_ent->h_length); serv_addr.sin_port = htons(m_server_port); - int retries = CLIENT_RETRY_COUNT; - while(true) { - if(connect(m_sockfd, (sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { + int retries = CLIENT_RETRY_COUNT; + while (true) { + if (connect(m_sockfd, (sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { perror("[Client@connect()]"); // TODO: Log-level? - if(retries > 0) { + if (retries > 0) { // Wait CLIENT_RAND_BACKOFF_TSTART to RAND_BACKOFF_TEND seconds: int delay = rand() % (CLIENT_RAND_BACKOFF_TEND-CLIENT_RAND_BACKOFF_TSTART) + CLIENT_RAND_BACKOFF_TSTART; cout << "[Client] Retrying to connect to server in ~" << delay << "s..." << endl; @@ -62,67 +62,72 @@ bool JobClient::connectToServer() cout << "[Client] Connection established!" << endl; // TODO: Log-level? - return true; + return true; } -bool JobClient::getParam(ExperimentData& exp){ - while(1) { // Here we try to acquire a parameter set - switch(tryToGetExperimentData(exp)){ - // Jobserver will sent workload, params are set in \c exp - case FailControlMessage_Command_WORK_FOLLOWS: return true; - // Nothing to do right now, but maybe later - case FailControlMessage_Command_COME_AGAIN: - sleep(1); - continue; - default: - return false; - } +bool JobClient::getParam(ExperimentData& exp) +{ + while (1) { // Here we try to acquire a parameter set + switch (tryToGetExperimentData(exp)) { + // Jobserver will sent workload, params are set in \c exp + case FailControlMessage_Command_WORK_FOLLOWS: return true; + // Nothing to do right now, but maybe later + case FailControlMessage_Command_COME_AGAIN: + sleep(1); + continue; + default: + return false; } + } } + FailControlMessage_Command JobClient::tryToGetExperimentData(ExperimentData& exp) { - // Connection failed, minion can die - if( !connectToServer() ) return FailControlMessage_Command_DIE; - - // Retrieve ExperimentData - FailControlMessage ctrlmsg; - ctrlmsg.set_command(FailControlMessage_Command_NEED_WORK); - ctrlmsg.set_build_id(42); + // Connection failed, minion can die + if (!connectToServer()) + return FailControlMessage_Command_DIE; - SocketComm::send_msg(m_sockfd, ctrlmsg); - ctrlmsg.Clear(); - SocketComm::rcv_msg(m_sockfd, ctrlmsg); + // Retrieve ExperimentData + FailControlMessage ctrlmsg; + ctrlmsg.set_command(FailControlMessage_Command_NEED_WORK); + ctrlmsg.set_build_id(42); - switch(ctrlmsg.command()){ - case FailControlMessage_Command_WORK_FOLLOWS: - SocketComm::rcv_msg(m_sockfd, exp.getMessage()); + SocketComm::sendMsg(m_sockfd, ctrlmsg); + ctrlmsg.Clear(); + SocketComm::rcvMsg(m_sockfd, ctrlmsg); + + switch (ctrlmsg.command()) { + case FailControlMessage_Command_WORK_FOLLOWS: + SocketComm::rcvMsg(m_sockfd, exp.getMessage()); exp.setWorkloadID(ctrlmsg.workloadid()); // Store workload id of experiment data break; - case FailControlMessage_Command_COME_AGAIN: + case FailControlMessage_Command_COME_AGAIN: break; - - default: + default: break; - } - close(m_sockfd); - return ctrlmsg.command(); + } + close(m_sockfd); + return ctrlmsg.command(); } bool JobClient::sendResult(ExperimentData& result) { - if (!connectToServer() ) return false; - // Send back results - FailControlMessage ctrlmsg; - ctrlmsg.set_command(FailControlMessage_Command_RESULT_FOLLOWS); - ctrlmsg.set_build_id(42); - ctrlmsg.set_workloadid(result.getWorkloadID()); - cout << "[Client] Sending back result [" << std::dec << result.getWorkloadID() << "]..." << endl; - // TODO: Log-level? - SocketComm::send_msg(m_sockfd, ctrlmsg); - SocketComm::send_msg(m_sockfd, result.getMessage()); - // close connection. - close(m_sockfd); - return true; + if (!connectToServer()) + return false; + + // Send back results + FailControlMessage ctrlmsg; + ctrlmsg.set_command(FailControlMessage_Command_RESULT_FOLLOWS); + ctrlmsg.set_build_id(42); + ctrlmsg.set_workloadid(result.getWorkloadID()); + cout << "[Client] Sending back result [" << std::dec << result.getWorkloadID() << "]..." << endl; + // TODO: Log-level? + SocketComm::sendMsg(m_sockfd, ctrlmsg); + SocketComm::sendMsg(m_sockfd, result.getMessage()); + + // Close connection. + close(m_sockfd); + return true; } } // end-of-namespace: fail diff --git a/core/jobserver/JobClient.hpp b/src/core/efw/JobClient.hpp similarity index 83% rename from core/jobserver/JobClient.hpp rename to src/core/efw/JobClient.hpp index faa1fd7e..ec6757b7 100644 --- a/core/jobserver/JobClient.hpp +++ b/src/core/efw/JobClient.hpp @@ -7,9 +7,9 @@ #include #include -#include "SocketComm.hpp" -#include "controller/ExperimentData.hpp" -#include "jobserver/messagedefs/FailControlMessage.pb.h" +#include "comm/SocketComm.hpp" +#include "comm/ExperimentData.hpp" +#include "comm/msg/FailControlMessage.pb.h" #include "config/FailConfig.hpp" namespace fail { @@ -29,10 +29,9 @@ private: bool connectToServer(); - FailControlMessage_Command tryToGetExperimentData(ExperimentData& exp); + FailControlMessage_Command tryToGetExperimentData(ExperimentData& exp); public: - // FIXME: This should be a const reference to std::string... - JobClient(std::string server = "localhost", int port = 1111); + JobClient(const std::string& server = "localhost", int port = 1111); /** * Receive experiment data set from (remote) JobServer * The caller (experiment developer) is responsible for @@ -42,7 +41,6 @@ public: * @return \c true if parameter have been received and put into \c exp, \c false else. */ bool getParam(ExperimentData& exp); - /** * Send back experiment result to the (remote) JobServer * The caller (experiment developer) is responsible for diff --git a/core/controller/BufferCache.cc b/src/core/sal/BufferCache.cc similarity index 81% rename from core/controller/BufferCache.cc rename to src/core/sal/BufferCache.cc index 058c9407..cc876f77 100644 --- a/core/controller/BufferCache.cc +++ b/src/core/sal/BufferCache.cc @@ -3,7 +3,8 @@ namespace fail { -template int BufferCache::add(T val) +template +int BufferCache::add(T val) { size_t new_size = getCount() + 1; size_t new_last_index = getCount(); @@ -16,7 +17,8 @@ template int BufferCache::add(T val) return res; } -template int BufferCache::remove(T val) +template +int BufferCache::remove(T val) { bool do_remove = false; for (size_t i = 0; i < getCount(); i++) { @@ -39,14 +41,16 @@ template int BufferCache::remove(T val) return res; } -template void BufferCache::clear() +template +void BufferCache::clear() { setCount(0); free(m_Buffer); m_Buffer = NULL; } -template int BufferCache::erase(int idx) +template +int BufferCache::erase(int idx) { for (size_t i = idx; i < getCount() - 1; i++) { set(i, get(i + 1)); @@ -58,7 +62,8 @@ template int BufferCache::erase(int idx) return idx; } -template int BufferCache::reallocate_buffer(size_t new_size) +template +int BufferCache::reallocate_buffer(size_t new_size) { if (new_size == 0) { clear(); diff --git a/core/controller/BufferCache.hpp b/src/core/sal/BufferCache.hpp similarity index 90% rename from core/controller/BufferCache.hpp rename to src/core/sal/BufferCache.hpp index 7ae3355b..c08c4efa 100644 --- a/core/controller/BufferCache.hpp +++ b/src/core/sal/BufferCache.hpp @@ -17,8 +17,32 @@ namespace fail { * untyped and therefore quite slow event handling mechanism of Fail*. * To keep the code easily readable, the buffer management methods * are less performant than the could be (remove() and erase() have linear complexity). + * + * FIXME: This desription sounds like a contradiction... + * (-> "quite slow event handling" vs. "are less performant than the could be") + * + * FIXME: Why not using std::vector? ("A simple dynamic array") */ -template class BufferCache { +template +class BufferCache { +private: + // TODO: comments ("//!<") needed! + T *m_Buffer; + size_t m_BufferCount; +protected: + /** + * Changes the current length of the array. Should be inlined. + * @param new_count the new array length + */ + inline void setCount(size_t new_count) { m_BufferCount = new_count; } + /** + * Reallocates the buffer. This implementation is extremely primitive, + * but since the amount of entries is small, + * this will not be significant, hopefully. Should be inlined. + * @param new_size the new number of elements in the array + * @return 0 if successful, an error code otherwise (ATM only 10 if malloc() fails) + */ + inline int reallocate_buffer(size_t new_size); public: BufferCache() : m_Buffer(NULL), m_BufferCount(0) {} @@ -62,24 +86,6 @@ public: * @return the array length */ inline size_t getCount() { return m_BufferCount; } -protected: - /** - * Changes the current length of the array. Should be inlined. - * @param new_count the new array length - */ - inline void setCount(size_t new_count) { m_BufferCount = new_count; } - /** - * Reallocates the buffer. This implementation is extremely primitive, - * but since the amount of entries is small, - * this will not be significant, hopefully. Should be inlined. - * @param new_size the new number of elements in the array - * @return 0 if successful, an error code otherwise (ATM only 10 if malloc() fails) - */ - inline int reallocate_buffer(size_t new_size); -private: - // TODO: comments needed! - T *m_Buffer; - size_t m_BufferCount; }; } // end-of-namespace: fail diff --git a/core/SAL/CMakeLists.txt b/src/core/sal/CMakeLists.txt similarity index 62% rename from core/SAL/CMakeLists.txt rename to src/core/sal/CMakeLists.txt index cf78e69f..fc2a2147 100644 --- a/core/SAL/CMakeLists.txt +++ b/src/core/sal/CMakeLists.txt @@ -1,5 +1,8 @@ if(BUILD_BOCHS) set(SRCS + BufferCache.cc + Event.cc + EventList.cc Memory.cc Register.cc SimulatorController.cc @@ -7,6 +10,9 @@ if(BUILD_BOCHS) ) else() set(SRCS + BufferCache.cc + Event.cc + EventList.cc Memory.cc Register.cc SimulatorController.cc @@ -14,5 +20,6 @@ else() ) endif(BUILD_BOCHS) +add_library(sal ${SRCS}) -add_library(SAL ${SRCS}) +add_dependencies(sal efw) diff --git a/core/controller/Event.cc b/src/core/sal/Event.cc similarity index 98% rename from core/controller/Event.cc rename to src/core/sal/Event.cc index 24de8b9f..c4e0e6d4 100644 --- a/core/controller/Event.cc +++ b/src/core/sal/Event.cc @@ -1,5 +1,5 @@ #include "Event.hpp" -#include "../SAL/SALInst.hpp" +#include "SALInst.hpp" namespace fail { diff --git a/core/controller/Event.hpp b/src/core/sal/Event.hpp similarity index 99% rename from core/controller/Event.hpp rename to src/core/sal/Event.hpp index 361a5115..053b0f2e 100644 --- a/core/controller/Event.hpp +++ b/src/core/sal/Event.hpp @@ -8,7 +8,7 @@ #include #include -#include "../SAL/SALConfig.hpp" +#include "SALConfig.hpp" namespace fail { diff --git a/core/controller/EventList.cc b/src/core/sal/EventList.cc similarity index 99% rename from core/controller/EventList.cc rename to src/core/sal/EventList.cc index 483887d4..0d27f7da 100644 --- a/core/controller/EventList.cc +++ b/src/core/sal/EventList.cc @@ -1,7 +1,7 @@ #include #include "EventList.hpp" -#include "../SAL/SALInst.hpp" +#include "SALInst.hpp" namespace fail { diff --git a/core/controller/EventList.hpp b/src/core/sal/EventList.hpp similarity index 100% rename from core/controller/EventList.hpp rename to src/core/sal/EventList.hpp diff --git a/core/SAL/Memory.cc b/src/core/sal/Memory.cc similarity index 100% rename from core/SAL/Memory.cc rename to src/core/sal/Memory.cc diff --git a/core/SAL/Memory.hpp b/src/core/sal/Memory.hpp similarity index 100% rename from core/SAL/Memory.hpp rename to src/core/sal/Memory.hpp diff --git a/core/SAL/Register.cc b/src/core/sal/Register.cc similarity index 100% rename from core/SAL/Register.cc rename to src/core/sal/Register.cc diff --git a/core/SAL/Register.hpp b/src/core/sal/Register.hpp similarity index 100% rename from core/SAL/Register.hpp rename to src/core/sal/Register.hpp diff --git a/core/SAL/SALConfig.hpp b/src/core/sal/SALConfig.hpp similarity index 95% rename from core/SAL/SALConfig.hpp rename to src/core/sal/SALConfig.hpp index 0a6ea06b..5aae2f59 100644 --- a/core/SAL/SALConfig.hpp +++ b/src/core/sal/SALConfig.hpp @@ -2,7 +2,8 @@ #define __SAL_CONFIG_HPP__ #include -#include "config/variant_config.hpp" + +#include "config/VariantConfig.hpp" // Type-config depends on the current selected simulator: #if defined BUILD_BOCHS diff --git a/core/SAL/SALInst.hpp b/src/core/sal/SALInst.hpp similarity index 94% rename from core/SAL/SALInst.hpp rename to src/core/sal/SALInst.hpp index 3195c396..ca814cfe 100644 --- a/core/SAL/SALInst.hpp +++ b/src/core/sal/SALInst.hpp @@ -2,7 +2,7 @@ #define __SAL_INSTANCE_HPP__ #include "SALConfig.hpp" -#include "config/variant_config.hpp" +#include "config/VariantConfig.hpp" #ifdef BUILD_BOCHS diff --git a/core/SAL/SimulatorController.cc b/src/core/sal/SimulatorController.cc similarity index 83% rename from core/SAL/SimulatorController.cc rename to src/core/sal/SimulatorController.cc index facd0dab..66755185 100644 --- a/core/SAL/SimulatorController.cc +++ b/src/core/sal/SimulatorController.cc @@ -1,6 +1,5 @@ #include "SimulatorController.hpp" #include "SALInst.hpp" -#include "../controller/Event.hpp" namespace fail { @@ -9,7 +8,7 @@ ConcreteSimulatorController simulator; EventId SimulatorController::addEvent(BaseEvent* ev) { - assert(ev != NULL && "FATAL ERROR: ev pointer cannot be NULL!"); + assert(ev != NULL && "FATAL ERROR: Argument (ptr) cannot be NULL!"); EventId ret = m_EvList.add(ev, m_Flows.getCurrent()); // Call the common postprocessing function: if (!onEventAddition(ev)) { // If the return value signals "false"..., @@ -242,45 +241,6 @@ BaseEvent* SimulatorController::addEventAndWait(BaseEvent* ev) return (waitAny()); } -template -T* SimulatorController::getExperimentData() -{ - //BEGIN ONLY FOR TESTING------REMOVE--------REMOVE---------REMOVE--------REMOVE-------REMOVE------- - //Daten in Struktur schreiben und in Datei speichern - std::ofstream fileWrite; - fileWrite.open("test.txt"); - - T* faultCovExWrite = new T();; - faultCovExWrite->set_data_name("Testfall 42"); - - //Namen setzen - faultCovExWrite->set_data_name("Testfall 42"); - //Instruktionpointer 1 - faultCovExWrite->set_m_instrptr1(0x4711); - //Instruktionpointer 2 - faultCovExWrite->set_m_instrptr2(0x1122); - - //In ExperimentData verpacken - ExperimentData exDaWrite(faultCovExWrite); - //Serialisierung ueber Wrapper-Methode in ExperimentData - exDaWrite.serialize(&fileWrite); - - //cout << "Ausgabe: " << out << endl; - - fileWrite.close(); - - std::ifstream fileRead; - fileRead.open("test.txt"); - //END ONLY FOR TESTING------REMOVE--------REMOVE---------REMOVE--------REMOVE-------REMOVE------- - //TODO: implement server-client communication---------------------------------------------- - - T* concreteExpDat = new T(); - ExperimentData exDaRead(concreteExpDat); - exDaRead.unserialize(&fileRead); - - return (concreteExpDat); -} - void SimulatorController::terminate(int exCode) { // Attention: This could cause problems, e.g., because of non-closed sockets diff --git a/core/SAL/SimulatorController.hpp b/src/core/sal/SimulatorController.hpp similarity index 96% rename from core/SAL/SimulatorController.hpp rename to src/core/sal/SimulatorController.hpp index a2af79fc..bf7a2fa1 100644 --- a/core/SAL/SimulatorController.hpp +++ b/src/core/sal/SimulatorController.hpp @@ -6,15 +6,10 @@ #include #include -// -//>END ONLY FOR TEST - -#include "../controller/Event.hpp" -#include "../controller/EventList.hpp" -#include "../controller/CoroutineManager.hpp" -#include "../controller/ExperimentData.hpp" +#include "efw/CoroutineManager.hpp" +#include "EventList.hpp" #include "SALConfig.hpp" +#include "Event.hpp" namespace fail { @@ -269,11 +264,6 @@ class SimulatorController * @return the actual number of events */ unsigned getEventCount() const { return m_EvList.getEventCount(); } - /** - * Fetches data for the experiments from the Job-Server. - * @return the Experiment-Data from the Job-Server. - */ - template T* getExperimentData(); }; } // end-of-namespace: fail diff --git a/core/SAL/bochs/BochsConfig.hpp b/src/core/sal/bochs/BochsConfig.hpp similarity index 77% rename from core/SAL/bochs/BochsConfig.hpp rename to src/core/sal/bochs/BochsConfig.hpp index 50f3c7e1..3b46a20c 100644 --- a/core/SAL/bochs/BochsConfig.hpp +++ b/src/core/sal/bochs/BochsConfig.hpp @@ -1,12 +1,14 @@ +/** + * \brief Type definitions and configuration settings for + * the Bochs simulator. + */ + #ifndef __BOCHS_CONFIG_HPP__ #define __BOCHS_CONFIG_HPP__ -#include "../../../bochs/bochs.h" -#include "../../../bochs/config.h" +#include "bochs.h" +#include "config.h" -// Type definitions and configuration settings for -// the Bochs simulator. - namespace fail { typedef bx_address guest_address_t; //!< the guest memory address type diff --git a/core/SAL/bochs/BochsController.cc b/src/core/sal/bochs/BochsController.cc similarity index 94% rename from core/SAL/bochs/BochsController.cc rename to src/core/sal/bochs/BochsController.cc index dde84864..fa1f6b82 100644 --- a/core/SAL/bochs/BochsController.cc +++ b/src/core/sal/bochs/BochsController.cc @@ -304,4 +304,19 @@ void BochsController::onEventTrigger(BaseEvent* pev) // Note: Maybe more stuff to do here for other event types. } +const std::string& BochsController::getMnemonic() const +{ + static std::string str; + bxICacheEntry_c* pEntry = BX_CPU(0)->getICacheEntry(); + assert(pEntry != NULL && "FATAL ERROR: Bochs internal function returned NULL (not expected)!"); + bxInstruction_c* pInstr = pEntry->i; + assert(pInstr != NULL && "FATAL ERROR: Bochs internal member was NULL (not expected)!"); + const char* pszName = get_bx_opcode_name(pInstr->getIaOpcode()); + if (pszName != NULL) + str = pszName; + else + str.clear(); + return str; +} + } // end-of-namespace: fail diff --git a/src/core/sal/bochs/BochsController.hpp b/src/core/sal/bochs/BochsController.hpp new file mode 100644 index 00000000..1512fd54 --- /dev/null +++ b/src/core/sal/bochs/BochsController.hpp @@ -0,0 +1,181 @@ +#ifndef __BOCHS_CONTROLLER_HPP__ + #define __BOCHS_CONTROLLER_HPP__ + +#include +#include +#include +#include +#include + +#include "FailBochsGlobals.hpp" + +#include "../SimulatorController.hpp" +#include "../Event.hpp" + +#include "bochs.h" +#include "cpu/cpu.h" +#include "config.h" +#include "iodev/iodev.h" +#include "pc_system.h" + +namespace fail { + +class ExperimentFlow; + +/** + * \class BochsController + * Bochs-specific implementation of a SimulatorController. + */ +class BochsController : public SimulatorController { +private: + ExperimentFlow* m_CurrFlow; //!< Stores the current flow for save/restore-operations + #ifdef DEBUG + unsigned m_Regularity; //! regularity of instruction ptr output + unsigned m_Counter; //! current instr-ptr counter + std::ostream* m_pDest; //! debug output object (defaults to \c std::cout) + #endif + /** + * Static internal event handler for TimerEvents. This static function is + * called when a previously registered (Bochs) timer triggers. This function + * searches for the provided TimerEvent object within the EventList and + * fires such an event by calling \c fireActiveEvents(). + * @param thisPtr a pointer to the TimerEvent-object triggered + * + * FIXME: Due to Bochs internal timer and ips-configuration related stuff, + * the simulator sometimes panics with "keyboard error:21" (see line + * 1777 in bios/rombios.c, function keyboard_init()) if a TimerEvent + * is added *before* the bios has been loaded and initialized. To + * reproduce this error, try adding a TimerEvent as the initial step + * in your experiment code and wait for it (addEventAndWait()). + */ + static void m_onTimerTrigger(void *thisPtr); + /** + * Registers a timer in the Bochs simulator. This timer fires \a TimerEvents + * to inform the corresponding experiment-flow. Note that the number of timers + * (in Bochs) is limited to \c BX_MAX_TIMERS (defaults to 64 in v2.4.6). + * @param pev a pointer to the (experiment flow-) allocated TimerEvent object, + * providing all required information to start the time, e.g. the + * timeout value. + * @return \c The unique id of the timer recently created. This id is carried + * along with the TimerEvent, @see getId(). On error, -1 is returned + * (e.g. because a timer with the same id is already existing) + */ + timer_id_t m_registerTimer(TimerEvent* pev); + /** + * Deletes a timer. No further events will be triggered by the timer. + * @param pev a pointer to the TimerEvent-object to be removed + * @return \c true if the timer with \a pev->getId() has been removed + * successfully, \c false otherwise + */ + bool m_unregisterTimer(TimerEvent* pev); +public: + // Initialize the controller. + BochsController(); + ~BochsController(); + /* ******************************************************************** + * Standard Event Handler API: + * ********************************************************************/ + /** + * Instruction pointer modification handler. This method is called (from + * the Breakpoints aspect) every time when the Bochs-internal IP changes. + * @param instrPtr the new instruction pointer + * @param address_space the address space the CPU is currently in + */ + void onInstrPtrChanged(address_t instrPtr, address_t address_space); + /** + * I/O port communication handler. This method is called (from + * the IOPortCom aspect) every time when Bochs performs a port I/O operation. + * @param data the data transmitted + * @param port the port it was transmitted on + * @param out true if the I/O traffic has been outbound, false otherwise + */ + void onIOPortEvent(unsigned char data, unsigned port, bool out); + /** + * This method is called when an experiment flow adds a new event by + * calling \c simulator.addEvent(pev) or \c simulator.addEventAndWait(pev). + * More specifically, the event will be added to the event-list first + * (buffer-list, to be precise) and then this event handler is called. + * @param pev the event which has been added + * @return You should return \c true to continue and \c false to prevent + * the addition of the event \a pev. + */ + bool onEventAddition(BaseEvent* pev); + /** + * This method is called when an experiment flow removes an event from + * the event-management by calling \c removeEvent(prev), \c clearEvents() + * or by deleting a complete flow (\c removeFlow). More specifically, + * this event handler will be called *before* the event is actually deleted. + * @param pev the event to be deleted when returning from the event handler + */ + void onEventDeletion(BaseEvent* pev); + /** + * This method is called when an previously added event is about to be + * triggered by the simulator-backend. More specifically, this event handler + * will be called *before* the event is actually triggered, i.e. before the + * corresponding coroutine is toggled. + * @param pev the event to be triggered when returning from the event handler + */ + void onEventTrigger(BaseEvent* pev); + /* ******************************************************************** + * Simulator Controller & Access API: + * ********************************************************************/ + /** + * Save simulator state. + * @param path Location to store state information + */ + void save(const std::string& path); + /** + * Save finished: Callback from Simulator + */ + void saveDone(); + /** + * Restore simulator state. Clears all Events. + * @param path Location to previously saved state information + */ + void restore(const std::string& path); + /** + * Restore finished: Callback from Simulator + */ + void restoreDone(); + /** + * Reboot simulator. Clears all Events. + */ + void reboot(); + /** + * Reboot finished: Callback from Simulator + */ + void rebootDone(); + /** + * Fire an interrupt. + * @param irq Interrupt to be fired + */ + void fireInterrupt(unsigned irq); + /** + * Fire done: Callback from Simulator + */ + void fireInterruptDone(); + /* ******************************************************************** + * BochsController-specific (not implemented in SimulatorController!): + * ********************************************************************/ + #ifdef DEBUG + /** + * Enables instruction pointer debugging output. + * @param regularity the output regularity; 1 to display every + * instruction pointer, 0 to disable + * @param dest specifies the output destition; defaults to \c std::cout + */ + void dbgEnableInstrPtrOutput(unsigned regularity, std::ostream* dest = &std::cout); + #endif + /** + * Retrieves the textual description (mnemonic) for the current + * instruction. The format of the returned string is Bochs-specific. + * @return the mnemonic of the current instruction whose address + * is given by \c Register::getInstructionPointer(). On errors, + * the returned string is empty + */ + const std::string& getMnemonic() const; +}; + +} // end-of-namespace: fail + +#endif // __BOCHS_CONTROLLER_HPP__ diff --git a/core/SAL/bochs/BochsHelpers.hpp b/src/core/sal/bochs/BochsHelpers.hpp similarity index 85% rename from core/SAL/bochs/BochsHelpers.hpp rename to src/core/sal/bochs/BochsHelpers.hpp index 4fa9c3c8..9138c9e9 100644 --- a/core/SAL/bochs/BochsHelpers.hpp +++ b/src/core/sal/bochs/BochsHelpers.hpp @@ -1,7 +1,7 @@ #ifndef __BOCHS_HELPERS_HPP__ #define __BOCHS_HELPERS_HPP__ -#include "../../../bochs/cpu/cpu.h" +#include "cpu/cpu.h" static inline BX_CPU_C *getCPU(BX_CPU_C *that) { diff --git a/src/core/sal/bochs/BochsMemory.hpp b/src/core/sal/bochs/BochsMemory.hpp new file mode 100644 index 00000000..1a9720e4 --- /dev/null +++ b/src/core/sal/bochs/BochsMemory.hpp @@ -0,0 +1,110 @@ +#ifndef __BOCHS_MEMORY_HPP__ + #define __BOCHS_MEMORY_HPP__ + +#include "../Memory.hpp" + +namespace fail { + +/** + * \class BochsMemoryManager + * Represents a concrete implemenation of the abstract + * MemoryManager to provide access to Bochs' memory pool. + */ +class BochsMemoryManager : public MemoryManager { +public: + /** + * Constructs a new MemoryManager object and initializes + * it's attributes appropriately. + */ + BochsMemoryManager() : MemoryManager() { } + /** + * Retrieves the size of the available simulated memory. + * @return the size of the memory pool in bytes + */ + size_t getPoolSize() const { return static_cast(BX_MEM(0)->get_memory_len()); } + /** + * Retrieves the starting address of the host memory. This is the + * first valid address in memory. + * @return the starting address + */ + host_address_t getStartAddr() const { return 0; } + /** + * Retrieves the byte at address \a addr in the memory. + * @param addr The guest address where the byte is located. + * The address is expected to be valid. + * @return the byte at \a addr + */ + byte_t getByte(guest_address_t addr) + { + host_address_t haddr = guestToHost(addr); + assert(haddr != (host_address_t)ADDR_INV && "FATAL ERROR: Invalid guest address provided!"); + return static_cast(*reinterpret_cast(haddr)); + } + /** + * Retrieves \a cnt bytes at address \a addr from the memory. + * @param addr The guest address where the bytes are located. + * The address is expected to be valid. + * @param cnt The number of bytes to be retrieved. \a addr + \a cnt + * is expected to not exceed the memory limit. + * @param dest Pointer to destination buffer to copy the data to. + */ + void getBytes(guest_address_t addr, size_t cnt, void *dest) + { + char *d = static_cast(dest); + for (size_t i = 0; i < cnt; ++i) + d[i] = getByte(addr + i); + } + /** + * Writes the byte \a data to memory. + * @param addr The guest address to write. + * The address is expected to be valid. + * @param data The new byte to write + */ + void setByte(guest_address_t addr, byte_t data) + { + host_address_t haddr = guestToHost(addr); + assert(haddr != (host_address_t)ADDR_INV && + "FATAL ERROR: Invalid guest address provided!"); + *reinterpret_cast(haddr) = data; + } + /** + * Copies data to memory. + * @param addr The guest address to write. + * The address is expected to be valid. + * @param cnt The number of bytes to be retrieved. \a addr + \a cnt + * is expected to not exceed the memory limit. + * @param src Pointer to data to be copied. + */ + void setBytes(guest_address_t addr, size_t cnt, void const *src) + { + char const *s = static_cast(src); + for (size_t i = 0; i < cnt; ++i) + setByte(addr + i, s[i]); + } + /** + * Transforms the guest address \a addr to a host address. + * @param addr The (logical) guest address to be transformed + * @return the transformed (host) address or \c ADDR_INV on errors + */ + host_address_t guestToHost(guest_address_t addr) + { + const unsigned SEGMENT_SELECTOR_IDX = 2; // always the code segment + const bx_address logicalAddr = static_cast(addr); // offset within the segment + // Get the linear address: + Bit32u linearAddr = BX_CPU(0)->get_laddr32(SEGMENT_SELECTOR_IDX/*seg*/, logicalAddr/*offset*/); + // Map the linear address to the physical address: + bx_phy_address physicalAddr; + bx_bool fValid = BX_CPU(0)->dbg_xlate_linear2phy(linearAddr, (bx_phy_address*)&physicalAddr); + // Determine the *host* address of the physical address: + Bit8u* hostAddr = BX_MEM(0)->getHostMemAddr(BX_CPU(0), physicalAddr, BX_READ); + // Now, hostAddr contains the "final" address + if (!fValid) + return ((host_address_t)ADDR_INV); // error + else + return (reinterpret_cast(hostAddr)); // okay + } +}; + +} // end-of-namespace: fail + +#endif // __BOCHS_MEMORY_HPP__ diff --git a/core/SAL/bochs/BochsNonVerbose.ah b/src/core/sal/bochs/BochsNonVerbose.ah similarity index 87% rename from core/SAL/bochs/BochsNonVerbose.ah rename to src/core/sal/bochs/BochsNonVerbose.ah index 97548655..fb08374d 100644 --- a/core/SAL/bochs/BochsNonVerbose.ah +++ b/src/core/sal/bochs/BochsNonVerbose.ah @@ -7,18 +7,17 @@ #include "bochs.h" +/* // Doesn't work because AspectC++ doesn't deal properly with variadic parameter // lists: -/* aspect BochsNonVerbose { - // needed to suppress Bochs output *before* a state restore finished - // FIXME ac++ segfaults if we use call() instead of execution() + // Needed to suppress Bochs output *before* a state restore finished + // FIXME: ac++ segfaults if we use call() instead of execution(). advice execution("% logfunctions::debug(...)") || execution("% logfunctions::info(...)") || execution("% logfunctions::pass(...)") || execution("% logfunctions::error(...)") - : around () { - } + : around () { } }; */ diff --git a/src/core/sal/bochs/BochsRegister.hpp b/src/core/sal/bochs/BochsRegister.hpp new file mode 100644 index 00000000..14ae69ed --- /dev/null +++ b/src/core/sal/bochs/BochsRegister.hpp @@ -0,0 +1,238 @@ +#ifndef __BOCHS_REGISTER_HPP__ + #define __BOCHS_REGISTER_HPP__ + +#include "../Register.hpp" + +#include "bochs.h" + +#include +#include + +namespace fail { + +/** + * \class BochsRegister + * Bochs-specific implementation of x86 registers. + */ +class BochsRegister : public Register { +protected: + regdata_t* m_pData; +public: + /** + * Constructs a new register object. + * @param id the global unique id + * @param width width of the register (8, 16, 32 or 64 bit should + * suffice) + * @param link pointer to bochs interal register memory + * @param t type of the register + */ + BochsRegister(unsigned int id, regwidth_t width, regdata_t* link, RegisterType t) + : Register(id, t, width), m_pData(link) { } + /** + * Retrieves the data of the register. + * @return the current register data + */ + regdata_t getData() { return (*m_pData); } + /** + * Sets the content of the register. + * @param data the new register data to be written + */ + void setData(regdata_t data) { *m_pData = data; } +}; + +/** + * \class BxGPReg + * Bochs-specific implementation of x86 general purpose (GP) registers. + */ +class BxGPReg : public BochsRegister { +public: + /** + * Constructs a new general purpose register. + * @param id the global unique id + * @param width width of the register (8, 16, 32 or 64 bit should + * suffice) + * @param link pointer to bochs interal register memory + */ + BxGPReg(unsigned int id, regwidth_t width, regdata_t* link) + : BochsRegister(id, width, link, RT_GP) { } +}; + +/** + * \enum GPRegisterId + * Symbolic identifier to access Bochs' general purpose register + * (within the corresponding GP set), e.g. + * \code + * // Print %eax register data: + * BochsController bc(...); + * cout << bc.getRegisterManager().getSetOfType(RT_GP) + * .getRegister(RID_EAX)->getData(); + * \endcode + */ +enum GPRegisterId { + #if BX_SUPPORT_X86_64 // 64 bit register id's: + RID_RAX = 0, RID_RCX, RID_RDX, RID_RBX, RID_RSP, RID_RBP, RID_RSI, RID_RDI, + RID_R8, RID_R9, RID_R10, RID_R11, RID_R12, RID_R13, RID_R14, RID_R15, + #else // 32 bit register id's: + RID_EAX = 0, RID_ECX, RID_EDX, RID_EBX, RID_ESP, RID_EBP, RID_ESI, RID_EDI, + #endif + RID_CAX = 0, RID_CCX, RID_CDX, RID_CBX, RID_CSP, RID_CBP, RID_CSI, RID_CDI, + RID_LAST_GP_ID +}; + +/** + * \enum PCRegisterId + * Symbolic identifier to access Bochs' program counter register. + */ +enum PCRegisterId { RID_PC = RID_LAST_GP_ID, RID_LAST_PC_ID }; + +/** + * \enum FlagsRegisterId + * Symbolic identifier to access Bochs' flags register. + */ +enum FlagsRegisterId { RID_FLAGS = RID_LAST_PC_ID }; + +/** + * \class BxPCReg + * Bochs-specific implementation of the x86 program counter register. + */ +class BxPCReg : public BochsRegister { +public: + /** + * Constructs a new program counter register. + * @param id the global unique id + * @param width width of the register (8, 16, 32 or 64 bit should + * suffice) + * @param link pointer to bochs internal register memory + */ + BxPCReg(unsigned int id, regwidth_t width, regdata_t* link) + : BochsRegister(id, width, link, RT_PC) { } +}; + +/** + * \class BxFlagsReg + * Bochs-specific implementation of the FLAGS status register. + */ +class BxFlagsReg : public BochsRegister { +public: + /** + * Constructs a new FLAGS status register. The refenced FLAGS are + * allocated as follows: + * -------------------------------------------------- + * 31|30|29|28| 27|26|25|24| 23|22|21|20| 19|18|17|16 + * ==|==|=====| ==|==|==|==| ==|==|==|==| ==|==|==|== + * 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|ID|VP| VF|AC|VM|RF + * + * 15|14|13|12| 11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0 + * ==|==|=====| ==|==|==|==| ==|==|==|==| ==|==|==|== + * 0|NT| IOPL| OF|DF|IF|TF| SF|ZF| 0|AF| 0|PF| 1|CF + * -------------------------------------------------- + * @param id the global unique id + * @param link pointer to bochs internal register memory + */ + BxFlagsReg(unsigned int id, regdata_t* link) + : BochsRegister(id, 32, link, RT_ST) { } + + /** + * Returns \c true if the corresponding flag is set, or \c false + * otherwise. + */ + bool getCarryFlag() const { return (BX_CPU(0)->get_CF()); } + bool getParityFlag() const { return (BX_CPU(0)->get_PF()); } + bool getZeroFlag() const { return (BX_CPU(0)->get_ZF()); } + bool getSignFlag() const { return (BX_CPU(0)->get_SF()); } + bool getOverflowFlag() const { return (BX_CPU(0)->get_OF()); } + + bool getTrapFlag() const { return (BX_CPU(0)->get_TF()); } + bool getInterruptFlag() const { return (BX_CPU(0)->get_IF()); } + bool getDirectionFlag() const { return (BX_CPU(0)->get_DF()); } + unsigned getIOPrivilegeLevel() const { return (BX_CPU(0)->get_IOPL()); } + bool getNestedTaskFlag() const { return (BX_CPU(0)->get_NT()); } + bool getResumeFlag() const { return (BX_CPU(0)->get_RF()); } + bool getVMFlag() const { return (BX_CPU(0)->get_VM()); } + bool getAlignmentCheckFlag() const { return (BX_CPU(0)->get_AC()); } + bool getVInterruptFlag() const { return (BX_CPU(0)->get_VIF()); } + bool getVInterruptPendingFlag() const { return (BX_CPU(0)->get_VIP()); } + bool getIdentificationFlag() const { return (BX_CPU(0)->get_ID()); } + + /** + * Sets/resets various status FLAGS. + */ + void setCarryFlag(bool bit) { BX_CPU(0)->set_CF(bit); } + void setParityFlag(bool bit) { BX_CPU(0)->set_PF(bit); } + void setZeroFlag(bool bit) { BX_CPU(0)->set_ZF(bit); } + void setSignFlag(bool bit) { BX_CPU(0)->set_SF(bit); } + void setOverflowFlag(bool bit) { BX_CPU(0)->set_OF(bit); } + + void setTrapFlag(bool bit) { BX_CPU(0)->set_TF(bit); } + void setInterruptFlag(bool bit) { BX_CPU(0)->set_IF(bit); } + void setDirectionFlag(bool bit) { BX_CPU(0)->set_DF(bit); } + void setIOPrivilegeLevel(unsigned lvl) { BX_CPU(0)->set_IOPL(lvl); } + void setNestedTaskFlag(bool bit) { BX_CPU(0)->set_NT(bit); } + void setResumeFlag(bool bit) { BX_CPU(0)->set_RF(bit); } + void setVMFlag(bool bit) { BX_CPU(0)->set_VM(bit); } + void setAlignmentCheckFlag(bool bit) { BX_CPU(0)->set_AC(bit); } + void setVInterruptFlag(bool bit) { BX_CPU(0)->set_VIF(bit); } + void setVInterruptPendingFlag(bool bit) { BX_CPU(0)->set_VIP(bit); } + void setIdentificationFlag(bool bit) { BX_CPU(0)->set_ID(bit); } + + /** + * Sets the content of the status register. + * @param data the new register data to be written; note that only the + * 32 lower bits are used (bits 32-63 are ignored in 64 bit mode) + */ + void setData(regdata_t data) + { + #ifdef BX_SUPPORT_X86_64 + // We are in 64 bit mode: Just assign the lower 32 bits! + (*m_pData) = ((*m_pData) & 0xFFFFFFFF00000000ULL) | + (data & 0xFFFFFFFFULL); + #else + *m_pData = data; + #endif + } +}; + +/** + * \class BochsRegister + * Bochs-specific implementation of the RegisterManager. + */ +class BochsRegisterManager : public RegisterManager { +public: + /** + * Returns the current instruction pointer. + * @return the current eip + */ + address_t getInstructionPointer() + { + return (static_cast(getSetOfType(RT_PC)->first()->getData())); + } + /** + * Retruns the top address of the stack. + * @return the starting address of the stack + */ + address_t getStackPointer() + { + #if BX_SUPPORT_X86_64 + return (static_cast(getRegister(RID_RSP)->getData())); + #else + return (static_cast(getRegister(RID_ESP)->getData())); + #endif + } + /** + * Retrieves the base ptr (holding the address of the + * current stack frame). + * @return the base pointer + */ + address_t getBasePointer() + { + #if BX_SUPPORT_X86_64 + return (static_cast(getRegister(RID_RBP)->getData())); + #else + return (static_cast(getRegister(RID_EBP)->getData())); + #endif + } +}; + +} // end-of-namespace: fail + +#endif // __BOCHS_REGISTER_HPP__ diff --git a/core/SAL/bochs/Breakpoints.ah b/src/core/sal/bochs/Breakpoints.ah similarity index 85% rename from core/SAL/bochs/Breakpoints.ah rename to src/core/sal/bochs/Breakpoints.ah index d128b91e..42c00458 100644 --- a/core/SAL/bochs/Breakpoints.ah +++ b/src/core/sal/bochs/Breakpoints.ah @@ -5,12 +5,12 @@ #ifdef CONFIG_EVENT_BREAKPOINTS -#include "../../../bochs/bochs.h" // for "BX_CPU_C" -#include "../../../bochs/cpu/cpu.h" // for "bxInstruction_c" +#include "bochs.h" +#include "cpu/cpu.h" + #include "../SALInst.hpp" -aspect Breakpoints -{ +aspect Breakpoints { pointcut cpuLoop() = "void defineCPULoopJoinPoint(...)"; advice execution (cpuLoop()) : after () // Event source: "instruction pointer" diff --git a/core/SAL/bochs/Credits.ah b/src/core/sal/bochs/Credits.ah similarity index 100% rename from core/SAL/bochs/Credits.ah rename to src/core/sal/bochs/Credits.ah diff --git a/core/SAL/bochs/DisableKeyboardInterrupt.ah b/src/core/sal/bochs/DisableKeyboardInterrupt.ah similarity index 77% rename from core/SAL/bochs/DisableKeyboardInterrupt.ah rename to src/core/sal/bochs/DisableKeyboardInterrupt.ah index 48d60f86..4dffe212 100644 --- a/core/SAL/bochs/DisableKeyboardInterrupt.ah +++ b/src/core/sal/bochs/DisableKeyboardInterrupt.ah @@ -5,16 +5,16 @@ #ifdef CONFIG_DISABLE_KEYB_INTERRUPTS -#include "../../../bochs/iodev/iodev.h" -#include "../../../bochs/iodev/keyboard.h" +#include "iodev/iodev.h" +#include "iodev/keyboard.h" aspect DisableKeyboardInterrupt { pointcut heyboard_interrupt() = "void bx_keyb_c::timer_handler(...)"; - + advice execution (heyboard_interrupt()) : around () { - bx_keyb_c *class_ptr = (bx_keyb_c *)tjp->arg<0>(); + bx_keyb_c *class_ptr = (bx_keyb_c*)tjp->arg<0>(); unsigned retval; retval = class_ptr->periodic(1); diff --git a/core/SAL/bochs/DisableLogFunctions.ah b/src/core/sal/bochs/DisableLogFunctions.ah similarity index 100% rename from core/SAL/bochs/DisableLogFunctions.ah rename to src/core/sal/bochs/DisableLogFunctions.ah diff --git a/core/SAL/bochs/FailBochsGlobals.hpp b/src/core/sal/bochs/FailBochsGlobals.hpp similarity index 93% rename from core/SAL/bochs/FailBochsGlobals.hpp rename to src/core/sal/bochs/FailBochsGlobals.hpp index efe876bc..0241fdcb 100644 --- a/core/SAL/bochs/FailBochsGlobals.hpp +++ b/src/core/sal/bochs/FailBochsGlobals.hpp @@ -17,6 +17,6 @@ extern bx_bool reboot_bochs_request; extern bx_bool interrupt_injection_request; extern int interrupt_to_fire; -} +} // end-of-namespace: fail #endif // __FAIL_BOCHS_GLOBALS_HPP__ diff --git a/core/SAL/bochs/FailBochsInit.ah b/src/core/sal/bochs/FailBochsInit.ah similarity index 100% rename from core/SAL/bochs/FailBochsInit.ah rename to src/core/sal/bochs/FailBochsInit.ah diff --git a/core/SAL/bochs/FireInterrupt.ah b/src/core/sal/bochs/FireInterrupt.ah similarity index 82% rename from core/SAL/bochs/FireInterrupt.ah rename to src/core/sal/bochs/FireInterrupt.ah index a640270b..8042b3b4 100644 --- a/core/SAL/bochs/FireInterrupt.ah +++ b/src/core/sal/bochs/FireInterrupt.ah @@ -5,13 +5,13 @@ #ifdef CONFIG_FIRE_INTERRUPTS -#include "../../../bochs/bochs.h" -#include "../../../bochs/cpu/cpu.h" -#include "../../../bochs/iodev/iodev.h" +#include "bochs.h" +#include "cpu/cpu.h" +#include "iodev/iodev.h" #include "../SALInst.hpp" aspect FireInterrupt { - pointcut cpuLoop() = "void defineCPULoopJoinPoint(...)"; + pointcut cpuLoop() = "void defineCPULoopJoinPoint(...)"; advice execution (cpuLoop()) : before () { diff --git a/core/SAL/bochs/GuestSysCom.ah b/src/core/sal/bochs/GuestSysCom.ah similarity index 88% rename from core/SAL/bochs/GuestSysCom.ah rename to src/core/sal/bochs/GuestSysCom.ah index 2fc23553..747c0ace 100644 --- a/core/SAL/bochs/GuestSysCom.ah +++ b/src/core/sal/bochs/GuestSysCom.ah @@ -5,14 +5,15 @@ #ifdef CONFIG_EVENT_GUESTSYS -#include "../../../bochs/bochs.h" -#include "../../../bochs/cpu/cpu.h" -#include "../SALInst.hpp" +#include "bochs.h" +#include "cpu/cpu.h" +#include "../SALInst.hpp" #include "BochsHelpers.hpp" // Fixed "port number" for "Guest system >> Bochs" communication #define BOCHS_COM_PORT 0x378 + // FIXME: This #define should be located in a config or passed within the event object... aspect GuestSysCom { @@ -22,9 +23,8 @@ aspect GuestSysCom { { unsigned rDX = getCPU(tjp->that())->gen_reg[2].word.rx; // port number unsigned rAL = getCPU(tjp->that())->gen_reg[0].word.byte.rl; // data - if (rDX == BOCHS_COM_PORT) { + if (rDX == BOCHS_COM_PORT) fail::simulator.onGuestSystemEvent((char)rAL, rDX); - } } }; diff --git a/core/SAL/bochs/IOPortCom.ah b/src/core/sal/bochs/IOPortCom.ah similarity index 93% rename from core/SAL/bochs/IOPortCom.ah rename to src/core/sal/bochs/IOPortCom.ah index 26453b68..c107a0dd 100644 --- a/core/SAL/bochs/IOPortCom.ah +++ b/src/core/sal/bochs/IOPortCom.ah @@ -5,8 +5,9 @@ #ifdef CONFIG_EVENT_IOPORT -#include "../../../bochs/bochs.h" -#include "../../../bochs/cpu/cpu.h" +#include "bochs.h" +#include "cpu/cpu.h" + #include "../SALInst.hpp" #include "BochsHelpers.hpp" diff --git a/core/SAL/bochs/Interrupt.ah b/src/core/sal/bochs/Interrupt.ah similarity index 85% rename from core/SAL/bochs/Interrupt.ah rename to src/core/sal/bochs/Interrupt.ah index 40c5dca7..e1246dc1 100644 --- a/core/SAL/bochs/Interrupt.ah +++ b/src/core/sal/bochs/Interrupt.ah @@ -5,13 +5,13 @@ #ifdef CONFIG_EVENT_INTERRUPT -#include "../../../bochs/bochs.h" -#include "../../../bochs/cpu/cpu.h" +#include "bochs.h" +#include "cpu/cpu.h" + #include "../SALInst.hpp" aspect Interrupt { - // cpu/exception.cc - pointcut interrupt_method() = "void bx_cpu_c::interrupt(...)"; + pointcut interrupt_method() = "void bx_cpu_c::interrupt(...)"; // cpu/exception.cc advice execution (interrupt_method()) : before () { diff --git a/core/SAL/bochs/InterruptSuppression.ah b/src/core/sal/bochs/InterruptSuppression.ah similarity index 88% rename from core/SAL/bochs/InterruptSuppression.ah rename to src/core/sal/bochs/InterruptSuppression.ah index 0c8b098c..2d577120 100644 --- a/core/SAL/bochs/InterruptSuppression.ah +++ b/src/core/sal/bochs/InterruptSuppression.ah @@ -5,8 +5,9 @@ #ifdef CONFIG_SUPPRESS_INTERRUPTS -#include "../../../bochs/bochs.h" -#include "../../../bochs/cpu/cpu.h" +#include "bochs.h" +#include "cpu/cpu.h" + #include "../SALInst.hpp" aspect InterruptSuppression { diff --git a/core/SAL/bochs/Jump.ah b/src/core/sal/bochs/Jump.ah similarity index 99% rename from core/SAL/bochs/Jump.ah rename to src/core/sal/bochs/Jump.ah index d4c37cbd..57b2cf97 100644 --- a/core/SAL/bochs/Jump.ah +++ b/src/core/sal/bochs/Jump.ah @@ -10,7 +10,8 @@ #include #include -#include "../../../bochs/bochs.h" +#include "bochs.h" + #include "../SALInst.hpp" // FIXME: This seems (partial) deprecated/incomplete as well... diff --git a/core/SAL/bochs/MemAccess.ah b/src/core/sal/bochs/MemAccess.ah similarity index 94% rename from core/SAL/bochs/MemAccess.ah rename to src/core/sal/bochs/MemAccess.ah index 82437422..f8146c20 100644 --- a/core/SAL/bochs/MemAccess.ah +++ b/src/core/sal/bochs/MemAccess.ah @@ -1,21 +1,23 @@ #ifndef __MEM_ACCESS_AH__ #define __MEM_ACCESS_AH__ -#include #include "config/FailConfig.hpp" #if defined(CONFIG_EVENT_MEMREAD) || defined(CONFIG_EVENT_MEMWRITE) -#include "../../../bochs/bochs.h" -#include "../../../bochs/cpu/cpu.h" -#include "../SALInst.hpp" +#include +#include "bochs.h" +#include "cpu/cpu.h" + +#include "../SALInst.hpp" #include "BochsHelpers.hpp" -// FIXME we currently assume a "flat" memory model and ignore the segment -// parameter of all memory accesses -// TODO instruction fetch? -// TODO warn on uncovered memory accesses +// FIXME: We currently assume a "flat" memory model and ignore the segment +// parameter of all memory accesses. +// TODO: Instruction fetch? +// TODO: Warn on uncovered memory accesses. + aspect MemAccess { fail::address_t rmw_address; diff --git a/core/SAL/bochs/Reboot.ah b/src/core/sal/bochs/Reboot.ah similarity index 100% rename from core/SAL/bochs/Reboot.ah rename to src/core/sal/bochs/Reboot.ah index 2fcc8159..a1705ad5 100644 --- a/core/SAL/bochs/Reboot.ah +++ b/src/core/sal/bochs/Reboot.ah @@ -2,11 +2,11 @@ #define __REBOOT_AH__ #include "config/FailConfig.hpp" -#include "../SALInst.hpp" #ifdef CONFIG_SR_REBOOT #include "bochs.h" +#include "../SALInst.hpp" aspect Reboot { pointcut cpuLoop() = "void defineCPULoopJoinPoint(...)"; diff --git a/core/SAL/bochs/RestoreState.ah b/src/core/sal/bochs/RestoreState.ah similarity index 99% rename from core/SAL/bochs/RestoreState.ah rename to src/core/sal/bochs/RestoreState.ah index 430fab6d..6014e29f 100644 --- a/core/SAL/bochs/RestoreState.ah +++ b/src/core/sal/bochs/RestoreState.ah @@ -1,15 +1,16 @@ #ifndef __RESTORE_STATE_AH__ #define __RESTORE_STATE_AH__ -#include - #include "config/FailConfig.hpp" -#include "../SALInst.hpp" #ifdef CONFIG_SR_RESTORE +#include + #include "bochs.h" +#include "../SALInst.hpp" + aspect RestoreState { pointcut restoreState() = "void bx_sr_after_restore_state()"; diff --git a/core/SAL/bochs/SaveState.ah b/src/core/sal/bochs/SaveState.ah similarity index 95% rename from core/SAL/bochs/SaveState.ah rename to src/core/sal/bochs/SaveState.ah index 7ca2a66b..b7856d80 100644 --- a/core/SAL/bochs/SaveState.ah +++ b/src/core/sal/bochs/SaveState.ah @@ -6,6 +6,7 @@ #ifdef CONFIG_SR_SAVE #include "bochs.h" + #include "../SALInst.hpp" aspect SaveState { @@ -17,9 +18,8 @@ aspect SaveState { advice execution (cpuLoop()) : order ("SaveState", "Breakpoints"); advice execution (cpuLoop()) : after () { - if (!fail::save_bochs_request) { + if (!fail::save_bochs_request) return; - } assert(fail::sr_path.size() > 0 && "FATAL ERROR: tried to save state without valid path"); SIM->save_state(fail::sr_path.c_str()); std::cout << "[FAIL] Save finished" << std::endl; diff --git a/core/SAL/bochs/Trap.ah b/src/core/sal/bochs/Trap.ah similarity index 87% rename from core/SAL/bochs/Trap.ah rename to src/core/sal/bochs/Trap.ah index 8d788191..dcfe489e 100644 --- a/core/SAL/bochs/Trap.ah +++ b/src/core/sal/bochs/Trap.ah @@ -5,8 +5,8 @@ #ifdef CONFIG_EVENT_TRAP -#include "../../../bochs/bochs.h" -#include "../../../bochs/cpu/cpu.h" +#include "bochs.h" +#include "cpu/cpu.h" #include "../SALInst.hpp" diff --git a/core/SAL/ovp/FailOVPInit.ah b/src/core/sal/ovp/FailOVPInit.ah similarity index 93% rename from core/SAL/ovp/FailOVPInit.ah rename to src/core/sal/ovp/FailOVPInit.ah index 92a9f26b..198fdf6c 100644 --- a/core/SAL/ovp/FailOVPInit.ah +++ b/src/core/sal/ovp/FailOVPInit.ah @@ -1,6 +1,8 @@ #ifndef __OVPINIT_AH__ #define __OVPINIT_AH__ +#include + #include "../SALInst.hpp" aspect FailOVPInit { diff --git a/core/SAL/ovp/OVPConfig.hpp b/src/core/sal/ovp/OVPConfig.hpp similarity index 71% rename from core/SAL/ovp/OVPConfig.hpp rename to src/core/sal/ovp/OVPConfig.hpp index b6c7fe13..f664af56 100644 --- a/core/SAL/ovp/OVPConfig.hpp +++ b/src/core/sal/ovp/OVPConfig.hpp @@ -1,8 +1,12 @@ +/** + * \brief Type definitions and configuration settings for + * the OVP simulator. + */ + #ifndef __OVP_CONFIG_HPP__ #define __OVP_CONFIG_HPP__ -// Type definitions and configuration settings for -// the OVP simulator. +#include namespace fail { @@ -11,6 +15,6 @@ typedef uint8_t* host_address_t; //!< the host memory address type typedef uint32_t register_data_t; //!< register data type (32 bit) typedef int timer_t; //!< type of timer IDs -} +} // end-of-namespace: fail #endif // __OVP_CONFIG_HPP__ diff --git a/core/SAL/ovp/OVPController.cc b/src/core/sal/ovp/OVPController.cc similarity index 63% rename from core/SAL/ovp/OVPController.cc rename to src/core/sal/ovp/OVPController.cc index 28b4de7e..77688f65 100644 --- a/core/SAL/ovp/OVPController.cc +++ b/src/core/sal/ovp/OVPController.cc @@ -3,32 +3,33 @@ #include "OVPController.hpp" #include "OVPMemory.hpp" #include "OVPRegister.hpp" -#include "../../../ovp/OVPStatusRegister.hpp" +#include "ovp/OVPStatusRegister.hpp" namespace fail { OVPController::OVPController() : SimulatorController(new OVPRegisterManager(), new OVPMemoryManager()) { - //FIXME: This should be obsolete now... - //set = new UniformRegisterSet(RT_GP); - //setStatus = new UniformRegisterSet(RT_ST); - //setPC= new UniformRegisterSet(RT_PC); + // FIXME: This should be obsolete now... +// set = new UniformRegisterSet(RT_GP); +// setStatus = new UniformRegisterSet(RT_ST); +// setPC = new UniformRegisterSet(RT_PC); } OVPController::~OVPController() { - //FIXME: This should be obsolete now... - //delete set; - //delete setStatus; - //delete setPC; + // FIXME: This should be obsolete now... +// delete set; +// delete setStatus; +// delete setPC; // Free memory of OVPRegister objects (actually allocated in make*Register): - for(RegisterManager::iterator it = m_Regs->begin(); it != m_Regs->end(); it++) + for (RegisterManager::iterator it = m_Regs->begin(); it != m_Regs->end(); it++) delete (*it); // free the memory, allocated in the constructor } -void OVPController::makeGPRegister(int width, void *link, const string& name) { +void OVPController::makeGPRegister(int width, void *link, const string& name) +{ // Add general purpose register OVPRegister *reg = new OVPRegister(m_currentRegId++, width, link, RT_GP); reg->setName(name); @@ -39,55 +40,58 @@ void OVPController::makeGPRegister(int width, void *link, const string& name) { } -void OVPController::makeSTRegister(Register *reg, const string& name) { +void OVPController::makeSTRegister(Register *reg, const string& name) +{ // Add status register reg->setName(name); cerr << "Add Status Register: " << reg << endl; m_Regs->add(reg); } -void OVPController::makePCRegister(int width, void *link, const string& name) { +void OVPController::makePCRegister(int width, void *link, const string& name) +{ // Add general purpose register OVPRegister *reg = new OVPRegister(m_currentRegId++, width, link, RT_PC); reg->setName(name); m_Regs->add(reg); } -//FIXME: This should be obsolete now... -//void OVPController::finishedRegisterCreation() { -// m_Regs->add(*set); -// m_Regs->add(*setStatus); -// m_Regs->add(*setPC); -//} +// FIXME: This should be obsolete now... +/* +void OVPController::finishedRegisterCreation() +{ + m_Regs->add(*set); + m_Regs->add(*setStatus); + m_Regs->add(*setPC); +} +*/ void OVPController::onInstrPtrChanged(address_t instrPtr) { // make some funny outputs unsigned int r0 = m_Regs->getSetOfType(RT_GP)->getRegister(0)->getData(); - OVPRegisterManager *ovp_Regs = (OVPRegisterManager *) m_Regs; + OVPRegisterManager *ovp_Regs = (OVPRegisterManager*) m_Regs; // FIXME: This cast seems to be invalid: RT_GP vs. OVPStatusRegister (= RT_ST)? - OVPStatusRegister *rid_st = (OVPStatusRegister *) m_Regs->getSetOfType(RT_GP)->first(); + OVPStatusRegister *rid_st = (OVPStatusRegister*) m_Regs->getSetOfType(RT_GP)->first(); // cerr << "Addr: " << rid_st << endl; unsigned int st = rid_st->getData(); - //save("/srv/scratch/sirozipp/test.txt"); +// save("/srv/scratch/sirozipp/test.txt"); - //ovpplatform.setPC(0x123); +// ovpplatform.setPC(0x123); - //restore("/srv/scratch/sirozipp/test.txt"); +// restore("/srv/scratch/sirozipp/test.txt"); // cerr << "instrPtr: 0x" << hex << instrPtr << " SP: 0x" << hex << m_Regs->getStackPointer() \ -// << " R0: 0x" << hex << r0 << " ST: 0x" << hex << st << endl; +// << " R0: 0x" << hex << r0 << " ST: 0x" << hex << st << endl; // Check for active breakpoint-events: EventList::iterator it = m_EvList.begin(); - while(it != m_EvList.end()) - { + while (it != m_EvList.end()) { // FIXME: Performance verbessern (dazu muss entsprechend auch die Speicherung // in EventList(.cc|.hpp) angepasst bzw. verbessert werden). BPSingleEvent* pEvBreakpt = dynamic_cast(*it); - if(pEvBreakpt && (instrPtr == pEvBreakpt->getWatchInstructionPointer() || - pEvBreakpt->getWatchInstructionPointer() == ANY_ADDR)) - { + if (pEvBreakpt && (instrPtr == pEvBreakpt->getWatchInstructionPointer() || + pEvBreakpt->getWatchInstructionPointer() == ANY_ADDR)) { pEvBreakpt->setTriggerInstructionPointer(instrPtr); it = m_EvList.makeActive(it); // "it" has already been set to the next element (by calling @@ -95,8 +99,7 @@ void OVPController::onInstrPtrChanged(address_t instrPtr) continue; // -> skip iterator increment } BPRangeEvent* pEvRange = dynamic_cast(*it); - if(pEvRange && pEvRange->isMatching(instrPtr)) - { + if (pEvRange && pEvRange->isMatching(instrPtr)) { pEvBreakpt->setTriggerInstructionPointer(instrPtr); it = m_EvList.makeActive(it); continue; // dito. @@ -108,27 +111,21 @@ void OVPController::onInstrPtrChanged(address_t instrPtr) void OVPController::save(const string& path) { - //TODO - //SIM->save_state(path.c_str()); - //bx_gui_c::power_handler(); + // TODO! ovpplatform.save(path); } void OVPController::restore(const string& path) { - //TODO - //bx_pc_system.restore_bochs_request = true; + //TODO! assert(path.length() > 0 && "FATAL ERROR: Tried to restore state without valid path!"); - //strncpy(bx_pc_system.sr_path, path.c_str(), 512 /*CI_PATH_LENGTH, @see gui/textconfig.cc*/); ovpplatform.restore(path); } void OVPController::reboot() { - //TODO - //bx_pc_system.Reset(BX_RESET_HARDWARE); - //bx_gui_c::reset_handler();//TODO: leider protected, so geht das also nicht... + // TODO! } -} +} // end-of-namespace: fail diff --git a/src/core/sal/ovp/OVPController.hpp b/src/core/sal/ovp/OVPController.hpp new file mode 100644 index 00000000..1f489c39 --- /dev/null +++ b/src/core/sal/ovp/OVPController.hpp @@ -0,0 +1,72 @@ +#ifndef __OVP_CONTROLLER_HPP__ + #define __OVP_CONTROLLER_HPP__ + +#include +#include +#include +#include + +#include "../SimulatorController.hpp" +#include "../Event.hpp" +#include "../Register.hpp" +#include "ovp/OVPPlatform.hpp" + +namespace fail { + +extern OVPPlatform ovpplatform; + +/** + * \class OVPController + * OVP-specific implementation of a SimulatorController. + */ +class OVPController : public SimulatorController { +private: + // FIXME: This should be obsolete now... +// UniformRegisterSet *set; //(RT_GP); +// UniformRegisterSet *setStatus;//(RT_ST); +// UniformRegisterSet *setPC;//(RT_PC); + + // FIXME: Perhaps this should be declared as a static member: + unsigned int m_currentRegId; + // NOTE: Constants (such as GPRegisterId in sal/bochs/BochsRegister.hpp) + // are much easier to read... +public: + /** + * Initialize the controller. + */ + OVPController(); + virtual ~OVPController(); + virtual void onInstrPtrChanged(address_t instrPtr); + /** + * Save simulator state. + * @param path Location to store state information + */ + virtual void save(const std::string& path); + /** + * Restore simulator state. + * @param path Location to previously saved state information + */ + virtual void restore(const std::string& path); + /** + * Reboot simulator. + */ + virtual void reboot(); + /** + * Returns the current instruction pointer. + * @return the current eip + */ + void makeGPRegister(int, void*, const std::string&); + void makeSTRegister(Register *, const std::string&); + void makePCRegister(int, void*, const std::string&); + /** + * Due to empty RegisterSets are not allowed, OVP platform + * must tell OVPController when it is finished + * + * FIXME: This should be obsolete now... + */ +// void finishedRegisterCreation(); +}; + +} // end-of-namespace: fail + +#endif // __OVP_CONTROLLER_HPP__ diff --git a/src/core/sal/ovp/OVPMemory.hpp b/src/core/sal/ovp/OVPMemory.hpp new file mode 100644 index 00000000..94c37401 --- /dev/null +++ b/src/core/sal/ovp/OVPMemory.hpp @@ -0,0 +1,73 @@ +#ifndef __OVP_MEMORY_HPP__ + #define __OVP_MEMORY_HPP__ + +#include "../Memory.hpp" + +namespace fail { + +/** + * \class OVPMemoryManager + * Represents a concrete implemenation of the abstract + * MemoryManager to provide access to OVP's memory pool. + */ +class OVPMemoryManager : public MemoryManager { +public: + /** + * Constructs a new MemoryManager object and initializes + * it's attributes appropriately. + */ + OVPMemoryManager() : MemoryManager() { } + /** + * Retrieves the size of the available simulated memory. + * @return the size of the memory pool in bytes + */ + size_t getPoolSize() const { return 0; } + /** + * Retrieves the starting address of the host memory. This is the + * first valid address in memory. + * @return the starting address + */ + host_address_t getStartAddr() const { return 0; } + /** + * Retrieves the byte at address \a addr in the memory. + * @param addr The guest address where the byte is located. + * The address is expected to be valid. + * @return the byte at \a addr + */ + byte_t getByte(guest_address_t addr) { return 0; } + /** + * Retrieves \a cnt bytes at address \a addr in the memory. + * @param addr The guest address where the bytes are located. + * The address is expected to be valid. + * @param cnt the number of bytes to be retrieved. \a addr + \a cnt + * is expected to not exceed the memory limit. + * @param dest Pointer to destination buffer to copy the data to. + */ + void getBytes(guest_address_t addr, size_t cnt, void *dest) { } + /** + * Writes the byte \a data to memory. + * @param addr The guest address to write. + * The address is expected to be valid. + * @param data The new byte to write + */ + void setByte(guest_address_t addr, byte_t data) { } + /** + * Copies data to memory. + * @param addr The guest address to write. + * The address is expected to be valid. + * @param cnt The number of bytes to be retrieved. \a addr + \a cnt + * is expected to not exceed the memory limit. + * @param src Pointer to data to be copied. + */ + void setBytes(guest_address_t addr, size_t cnt, void const *src) { } + /** + * Transforms the guest address \a addr to a host address. + * @param addr The (logical) guest address to be transformed + * @return the transformed (host) address or \c ADDR_INV on errors + */ + host_address_t guestToHost(guest_address_t addr) { return 0; } +}; + +} // end-of-namespace: fail + +#endif // __OVP_MEMORY_HPP__ diff --git a/src/core/sal/ovp/OVPRegister.hpp b/src/core/sal/ovp/OVPRegister.hpp new file mode 100644 index 00000000..dd6b3fe0 --- /dev/null +++ b/src/core/sal/ovp/OVPRegister.hpp @@ -0,0 +1,76 @@ +#ifndef __OVP_REGISTER_HPP__ + #define __OVP_REGISTER_HPP__ + +#include "../Register.hpp" +#include "ovp/OVPPlatform.hpp" +//#include "ovp/OVPStatusRegister.hpp" + +extern OVPPlatform ovpplatform; + +namespace fail { + +/** + * \class OVPRegister + * OVP-specific implementation of x86 registers. + */ +class OVPRegister : public Register { +private: + void *reg; +public: + /** + * Constructs a new register object. + * @param id the unique id of this register (simulator specific) + * @param width width of the register (8, 16, 32 or 64 bit should suffice) + * @param link pointer to bochs internal register memory + * @param t type of the register + */ + OVPRegister(unsigned int id, regwidth_t width, void* link, RegisterType t) + : Register(id, t, width) { reg = link; } + /** + * Retrieves the data of the register. + * @return the current register data + */ + regdata_t getData() { return ovpplatform.getRegisterData(reg); } + /** + * Sets the content of the register. + * @param data the new register data to be written + */ + void setData(regdata_t data) { ovpplatform.setRegisterData(reg, data); } +}; + +/** + * \class OVPRegister + * OVP-specific implementation of the RegisterManager. + */ +class OVPRegisterManager : public RegisterManager { +public: + /** + * Returns the current instruction pointer. + * @return the current eip + */ + virtual address_t getInstructionPointer() + { + return ovpplatform.getPC(); + } + /** + * Retruns the top address of the stack. + * @return the starting address of the stack + */ + virtual address_t getStackPointer() + { + return ovpplatform.getSP(); + } + /** + * Retrieves the base ptr (holding the address of the + * current stack frame). + * @return the base pointer + */ + virtual address_t getBasePointer() + { + return 0; + } +}; + +} // end-of-namespace: fail + +#endif // __OVP_REGISTER_HPP__ diff --git a/core/util/CMakeLists.txt b/src/core/util/CMakeLists.txt similarity index 59% rename from core/util/CMakeLists.txt rename to src/core/util/CMakeLists.txt index f79d9732..ecc8270f 100644 --- a/core/util/CMakeLists.txt +++ b/src/core/util/CMakeLists.txt @@ -6,3 +6,5 @@ set(SRCS ) add_library(util ${SRCS}) + +# FIXME: Add protobuf-dependency (required by ProtoStream.cc@line56) diff --git a/core/util/Logger.cc b/src/core/util/Logger.cc similarity index 100% rename from core/util/Logger.cc rename to src/core/util/Logger.cc diff --git a/src/core/util/Logger.hpp b/src/core/util/Logger.hpp new file mode 100644 index 00000000..052886ff --- /dev/null +++ b/src/core/util/Logger.hpp @@ -0,0 +1,53 @@ +#ifndef __LOGGER_HPP__ + #define __LOGGER_HPP__ + +#include +#include + +namespace fail { + +/** + * \class Logger + * Provides logging mechanisms. + */ +class Logger { +private: + std::ostream* m_pDest; + std::string m_description; + bool m_showTime; + void timestamp(); +public: + /** + * Constructor. + * @param description Description shown alongside each log entry in + * square brackets [ ]. Can be overridden in single add() calls. + * @param show_time Show a timestamp with each log entry. + * @param dest Stream to log into. + */ + Logger(const std::string& description = "Fail*", bool show_time = true, + std::ostream& dest = std::cout) + : m_pDest(&dest), m_description(description), m_showTime(show_time) { } + /** + * Change the default description which is shown alongside each log + * entry in square brackets [ ]. + * @param descr The description text. + */ + void setDescription(const std::string& descr) { m_description = descr; } + /** + * Change the default option of show_time which shows a timestamp + * each log entry. + * @param choice The choice for show_time + */ + void showTime(bool choice) { m_showTime = choice; } + /** + * Add a new log entry. + * @param v data to log + * @return a \c std::ostream reference to continue streaming a longer log entry + */ + template + inline std::ostream& operator <<(const T& v) { timestamp(); return (*m_pDest) << v; } +}; + +} // end-of-namespace: fail + +#endif // __LOGGER_HPP__ diff --git a/core/util/MemoryMap.hpp b/src/core/util/MemoryMap.hpp similarity index 94% rename from core/util/MemoryMap.hpp rename to src/core/util/MemoryMap.hpp index d284194f..15a6cbbe 100644 --- a/core/util/MemoryMap.hpp +++ b/src/core/util/MemoryMap.hpp @@ -8,7 +8,7 @@ using namespace boost::icl; #include -#include "SAL/SALConfig.hpp" +#include "sal/SALConfig.hpp" namespace fail { @@ -16,27 +16,26 @@ namespace fail { * \class MemoryMap * An efficient container for memory maps with holes. */ -class MemoryMap -{ +class MemoryMap { +private: #ifdef BOOST_1_46_OR_NEWER typedef interval::type address_interval; typedef interval_set::type address_set; address_set as; public: - MemoryMap() {} + MemoryMap() { } void clear() { as.clear(); } void add(address_t addr, int size) { as.add(address_interval(addr, addr+size-1)); } void isMatching(address_t addr, int size) { return intersects(as, address_interval(addr, addr+size-1)); } #endif std::set as; public: - MemoryMap() {} + MemoryMap() { } /** * Clears the map. */ void clear() { as.clear(); } - /** * Adds one or a sequence of addresses to the map. */ @@ -46,7 +45,6 @@ public: as.insert(addr + i); } } - /** * Determines whether a given memory access at address \a addr with width * \a size hits the map. @@ -60,19 +58,16 @@ public: } return false; } - /** * The (STL-style) iterator of this class used to iterate over all * addresses in this map. */ typedef std::set::iterator iterator; - /** * Returns an (STL-style) iterator to the beginning of the internal data * structure. */ iterator begin() { return as.begin(); } - /** * Returns an (STL-style) iterator to the end of the interal data * structure. diff --git a/core/util/ProtoStream.cc b/src/core/util/ProtoStream.cc similarity index 95% rename from core/util/ProtoStream.cc rename to src/core/util/ProtoStream.cc index d4315ff2..c9d4f171 100644 --- a/core/util/ProtoStream.cc +++ b/src/core/util/ProtoStream.cc @@ -5,6 +5,7 @@ namespace fail { ProtoOStream::ProtoOStream(std::ostream *outfile) : m_outfile(outfile) { m_log.setDescription("ProtoStream"); + // TODO: log-Level? m_log.showTime(false); } @@ -15,6 +16,7 @@ bool ProtoOStream::writeMessage(google::protobuf::Message* m) if (m_outfile->bad()) { m_log << "Could not write to file!" << std::endl; + // TODO: log-Level? return false; } @@ -26,6 +28,7 @@ bool ProtoOStream::writeMessage(google::protobuf::Message* m) ProtoIStream::ProtoIStream(std::istream *infile) : m_infile(infile) { m_log.setDescription("ProtoStream"); + // TODO: log-Level? m_log.showTime(false); } diff --git a/src/core/util/ProtoStream.hpp b/src/core/util/ProtoStream.hpp new file mode 100644 index 00000000..c465d7cc --- /dev/null +++ b/src/core/util/ProtoStream.hpp @@ -0,0 +1,81 @@ +/** + * \brief One way to manage large protobuf-messages + * + * Google protobuf is not designed for large messages. That leads to + * much memory which is consumed by processing large messages. To + * solve this problem the ProtoStream class stores the protobuf-messages + * in an other way. Instead of using the repeat-function the data is + * written sequentially in a file. Written in the format: + * + * \code + * | 4 bytes length-information of the first message | first message + * | 4 bytes length-information of the second message | second message + * | ... + * \endcode + */ + +#ifndef __PROTOSTREAM_HPP__ + #define __PROTOSTREAM_HPP__ + +#include +#include +#include +#include + +#include "Logger.hpp" + +namespace fail { + +/** + * \class ProtoOStream + * + * This class can be used to sequentially write a large number of + * protocol buffer messages to a \c std::ostream. + */ +class ProtoOStream { +private: + uint32_t m_size; // TODO: comments needed here + Logger m_log; + std::ostream* m_outfile; +public: + ProtoOStream(std::ostream *outfile); + virtual ~ProtoOStream() { } + /** + * Writes a message to a file. + * @param m The protobuf-message to be written + * @return Returns \c true on success, \c false otherwise + */ + bool writeMessage(google::protobuf::Message* m); +}; + +/** + * \class ProtoIStream + * + * This class can be used to read protocol buffer messages sequentially + * from a \c std::istream. + */ +class ProtoIStream { +private: + uint32_t m_size; // TODO: comments needed here + long m_sizeOfInfile; + Logger m_log; + std::istream *m_infile; +public: + ProtoIStream(std::istream *infile); + virtual ~ProtoIStream() { } + /** + * Resets the position of the get pointer. After that \c getNext() + * reads the first message again. + */ + void reset(); + /** + * Reads the next protobuf message from the input stream. + * @param m The output protobuf message + * @return Returns \c true on success, \c false otherwise + */ + bool getNext(google::protobuf::Message* m); +}; + +} // end-of-namespace: fail + +#endif // __PROTOSTREAM_HPP__ diff --git a/core/util/SynchronizedCounter.cc b/src/core/util/SynchronizedCounter.cc similarity index 69% rename from core/util/SynchronizedCounter.cc rename to src/core/util/SynchronizedCounter.cc index 232864eb..8bdc8323 100644 --- a/core/util/SynchronizedCounter.cc +++ b/src/core/util/SynchronizedCounter.cc @@ -4,29 +4,26 @@ namespace fail { int SynchronizedCounter::increment() { - // Acquire lock on the queue #ifndef __puma boost::unique_lock lock(m_mutex); #endif return ++m_counter; -} // Lock is automatically released here +} int SynchronizedCounter::decrement() { -// Acquire lock on the queue #ifndef __puma boost::unique_lock lock(m_mutex); #endif return --m_counter; -} // Lock is automatically released here +} int SynchronizedCounter::getValue() { - // Acquire lock on the queue #ifndef __puma boost::unique_lock lock(m_mutex); #endif return m_counter; -} // Lock is automatically released here +} } // end-of-namespace: fail diff --git a/src/core/util/SynchronizedCounter.hpp b/src/core/util/SynchronizedCounter.hpp new file mode 100644 index 00000000..9ae86741 --- /dev/null +++ b/src/core/util/SynchronizedCounter.hpp @@ -0,0 +1,38 @@ +/** + * \brief Thread safe (synchronized) counter. + */ + +#ifndef __SYNCHRONIZED_COUNTER_HPP__ + #define __SYNCHRONIZED_COUNTER_HPP__ + +#ifndef __puma +#include +#include +#endif + +namespace fail { + +/** + * \class ssd + * + * Provides a thread safe (synchronized) counter. When a method is called, + * the internal mutex is automatically locked. On return, the lock is + * automatically released ("scoped lock"). + */ +class SynchronizedCounter { +private: + int m_counter; +#ifndef __puma + boost::mutex m_mutex; //! The mutex to synchronise on +#endif +public: + SynchronizedCounter() : m_counter(0) { } + + int increment(); + int decrement(); + int getValue(); +}; + +} // end-of-namespace: fail + +#endif // __SYNCHRONIZED_COUNTER_HPP__ diff --git a/core/util/SynchronizedMap.hpp b/src/core/util/SynchronizedMap.hpp similarity index 83% rename from core/util/SynchronizedMap.hpp rename to src/core/util/SynchronizedMap.hpp index 876d7316..5f6c934a 100644 --- a/core/util/SynchronizedMap.hpp +++ b/src/core/util/SynchronizedMap.hpp @@ -1,5 +1,6 @@ -// Map class that has thread synchronisation -// TODO We should consider to use Aspects for synchronisation primitives.. +/** + * \brief Map class that has thread synchronisation + */ #ifndef __SYNCHRONIZED_MAP_HPP__ #define __SYNCHRONIZED_MAP_HPP__ @@ -10,26 +11,28 @@ #include #endif +// TODO: We should consider to use Aspects for synchronisation primitives. + namespace fail { template -class SynchronizedMap -{ +class SynchronizedMap { private: typedef std::map< Tkey, Tvalue > Tmap; typedef typename Tmap::iterator Tit; - Tmap m_map; // Use STL map to store data + Tmap m_map; //! Use STL map to store data #ifndef __puma - boost::mutex m_mutex; // The mutex to synchronise on + boost::mutex m_mutex; //! The mutex to synchronise on #endif int nextpick; enum { pick_window_size = 500 }; public: - SynchronizedMap() : nextpick(0) {} - int Size(){ + SynchronizedMap() : nextpick(0) { } + int Size() + { #ifndef __puma boost::unique_lock lock(m_mutex); #endif @@ -70,7 +73,7 @@ public: * @param value value according to key * @return false if key already present */ - bool insert(const Tkey& key, const Tvalue& value ) + bool insert(const Tkey& key, const Tvalue& value) { // Acquire lock on the queue #ifndef __puma @@ -98,11 +101,11 @@ public: boost::unique_lock lock(m_mutex); #endif Tit iterator; - if ( (iterator = m_map.find(key)) != m_map.end() ) { + if ((iterator = m_map.find(key)) != m_map.end()) { value = iterator->second; m_map.erase(iterator); return true; - }else{ + } else { return false; } } // Lock is automatically released here diff --git a/core/util/SynchronizedQueue.hpp b/src/core/util/SynchronizedQueue.hpp similarity index 76% rename from core/util/SynchronizedQueue.hpp rename to src/core/util/SynchronizedQueue.hpp index 49d06dcb..03ae6929 100644 --- a/core/util/SynchronizedQueue.hpp +++ b/src/core/util/SynchronizedQueue.hpp @@ -1,5 +1,6 @@ -// Queue class that has thread synchronisation -// from: http://www.quantnet.com/cplusplus-multithreading-boost/ +/** + * \brief Queue class that has thread synchronisation. + */ #ifndef __SYNCHRONIZED_QUEUE_HPP__ #define __SYNCHRONIZED_QUEUE_HPP__ @@ -13,21 +14,21 @@ namespace fail { template -class SynchronizedQueue -{ +class SynchronizedQueue { // Adapted from: http://www.quantnet.com/cplusplus-multithreading-boost/ private: - std::queue m_queue; // Use STL queue to store data + std::queue m_queue; //!< Use STL queue to store data #ifndef __puma - boost::mutex m_mutex; // The mutex to synchronise on - boost::condition_variable m_cond; // The condition to wait for + boost::mutex m_mutex; //!< The mutex to synchronise on + boost::condition_variable m_cond; //!< The condition to wait for #endif - public: - int Size(){ +public: + int Size() + { #ifndef __puma - boost::unique_lock lock(m_mutex); + boost::unique_lock lock(m_mutex); #endif - return m_queue.size(); - } + return m_queue.size(); + } // Add data to the queue and notify others void Enqueue(const T& data) { @@ -56,7 +57,8 @@ private: // Lock is automatically released in the wait and obtained // again after the wait #ifndef __puma - while (m_queue.size()==0) m_cond.wait(lock); + while (m_queue.size() == 0) + m_cond.wait(lock); #endif // Retrieve the data from the queue T result=m_queue.front(); m_queue.pop(); @@ -79,11 +81,11 @@ private: // When there is no data, return false. // Lock is automatically released in the wait and obtained // again after the wait - if (m_queue.size() > 0){ + if (m_queue.size() > 0) { // Retrieve the data from the queue d = m_queue.front(); m_queue.pop(); return true; - }else{ + } else { return false; } } // Lock is automatically released here diff --git a/core/experiments/CMakeLists.txt b/src/experiments/CMakeLists.txt similarity index 78% rename from core/experiments/CMakeLists.txt rename to src/experiments/CMakeLists.txt index 348f07d3..931c52d9 100644 --- a/core/experiments/CMakeLists.txt +++ b/src/experiments/CMakeLists.txt @@ -1,5 +1,5 @@ # Note that we're allowing *multiple* experiments to be enabled at once. -set(EXPERIMENTS_ACTIVATED "" CACHE STRING "Activated experiments (a semicolon-separated list of fail/experiments/ subdirectories)") +set(EXPERIMENTS_ACTIVATED "" CACHE STRING "Activated experiments (a semicolon-separated list of fail/src/experiments/ subdirectories)") foreach(experiment_name ${EXPERIMENTS_ACTIVATED}) add_subdirectory(${experiment_name}) diff --git a/core/experiments/checksum-oostubs/CMakeLists.txt b/src/experiments/checksum-oostubs/CMakeLists.txt similarity index 95% rename from core/experiments/checksum-oostubs/CMakeLists.txt rename to src/experiments/checksum-oostubs/CMakeLists.txt index 0e8df5f5..e3eb432b 100644 --- a/core/experiments/checksum-oostubs/CMakeLists.txt +++ b/src/experiments/checksum-oostubs/CMakeLists.txt @@ -25,6 +25,7 @@ PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${MY_PROTOS}) ## Build library add_library(${EXPERIMENT_NAME} ${PROTO_SRCS} ${PROTO_HDRS} ${MY_CAMPAIGN_SRCS}) +add_dependencies(${EXPERIMENT_NAME} tracing) ## This is the example's campaign server distributing experiment parameters add_executable(${EXPERIMENT_NAME}-server main.cc) diff --git a/core/experiments/checksum-oostubs/campaign.cc b/src/experiments/checksum-oostubs/campaign.cc similarity index 98% rename from core/experiments/checksum-oostubs/campaign.cc rename to src/experiments/checksum-oostubs/campaign.cc index cbf8348e..a280d3fb 100644 --- a/core/experiments/checksum-oostubs/campaign.cc +++ b/src/experiments/checksum-oostubs/campaign.cc @@ -1,17 +1,18 @@ #include +#include #include #include #include "campaign.hpp" #include "experimentInfo.hpp" -#include "controller/CampaignManager.hpp" +#include "cpn/CampaignManager.hpp" #include "util/Logger.hpp" #include "util/ProtoStream.hpp" #include "util/MemoryMap.hpp" #include "ecc_region.hpp" -#include "plugins/tracing/TracingPlugin.hpp" +#include "../plugins/tracing/TracingPlugin.hpp" char const * const trace_filename = "trace.pb"; using namespace std; diff --git a/core/experiments/checksum-oostubs/campaign.hpp b/src/experiments/checksum-oostubs/campaign.hpp similarity index 84% rename from core/experiments/checksum-oostubs/campaign.hpp rename to src/experiments/checksum-oostubs/campaign.hpp index c032778c..332b1687 100644 --- a/core/experiments/checksum-oostubs/campaign.hpp +++ b/src/experiments/checksum-oostubs/campaign.hpp @@ -1,8 +1,8 @@ #ifndef __CHECKSUM_OOSTUBS_CAMPAIGN_HPP__ #define __CHECKSUM_OOSTUBS_CAMPAIGN_HPP__ -#include "controller/Campaign.hpp" -#include "controller/ExperimentData.hpp" +#include "cpn/Campaign.hpp" +#include "comm/ExperimentData.hpp" #include "checksum-oostubs.pb.h" class ChecksumOOStuBSExperimentData : public fail::ExperimentData { diff --git a/core/experiments/checksum-oostubs/checksum-oostubs.proto b/src/experiments/checksum-oostubs/checksum-oostubs.proto similarity index 100% rename from core/experiments/checksum-oostubs/checksum-oostubs.proto rename to src/experiments/checksum-oostubs/checksum-oostubs.proto diff --git a/core/experiments/checksum-oostubs/ecc_region.hpp b/src/experiments/checksum-oostubs/ecc_region.hpp similarity index 100% rename from core/experiments/checksum-oostubs/ecc_region.hpp rename to src/experiments/checksum-oostubs/ecc_region.hpp diff --git a/core/experiments/checksum-oostubs/experiment.cc b/src/experiments/checksum-oostubs/experiment.cc similarity index 96% rename from core/experiments/checksum-oostubs/experiment.cc rename to src/experiments/checksum-oostubs/experiment.cc index 1e815d4b..30a7205e 100644 --- a/core/experiments/checksum-oostubs/experiment.cc +++ b/src/experiments/checksum-oostubs/experiment.cc @@ -1,4 +1,5 @@ #include +#include // getpid #include @@ -8,14 +9,14 @@ #include "experiment.hpp" #include "experimentInfo.hpp" #include "campaign.hpp" -#include "SAL/SALConfig.hpp" -#include "SAL/SALInst.hpp" -#include "SAL/Memory.hpp" -#include "SAL/bochs/BochsRegister.hpp" -#include "controller/Event.hpp" +#include "sal/SALConfig.hpp" +#include "sal/SALInst.hpp" +#include "sal/Memory.hpp" +#include "sal/bochs/BochsRegister.hpp" +#include "sal/Event.hpp" -// you need to have the tracing plugin enabled for this -#include "plugins/tracing/TracingPlugin.hpp" +// You need to have the tracing plugin enabled for this +#include "../plugins/tracing/TracingPlugin.hpp" #include "ecc_region.hpp" @@ -30,7 +31,7 @@ using namespace fail; bool ChecksumOOStuBSExperiment::run() { - char const *statename = "checksum-oostubs.state"; +// char const *statename = "checksum-oostubs.state"; // FIXME: Variable is unused! Logger log("Checksum-OOStuBS", false); BPSingleEvent bp; diff --git a/core/experiments/checksum-oostubs/experiment.hpp b/src/experiments/checksum-oostubs/experiment.hpp similarity index 80% rename from core/experiments/checksum-oostubs/experiment.hpp rename to src/experiments/checksum-oostubs/experiment.hpp index af9cc5ac..a0ab7a98 100644 --- a/core/experiments/checksum-oostubs/experiment.hpp +++ b/src/experiments/checksum-oostubs/experiment.hpp @@ -1,8 +1,8 @@ #ifndef __CHECKSUM_OOSTUBS_EXPERIMENT_HPP__ #define __CHECKSUM_OOSTUBS_EXPERIMENT_HPP__ -#include "controller/ExperimentFlow.hpp" -#include "jobserver/JobClient.hpp" +#include "efw/ExperimentFlow.hpp" +#include "efw/JobClient.hpp" class ChecksumOOStuBSExperiment : public fail::ExperimentFlow { fail::JobClient m_jc; diff --git a/core/experiments/checksum-oostubs/experimentInfo.hpp b/src/experiments/checksum-oostubs/experimentInfo.hpp similarity index 100% rename from core/experiments/checksum-oostubs/experimentInfo.hpp rename to src/experiments/checksum-oostubs/experimentInfo.hpp diff --git a/core/experiments/checksum-oostubs/main.cc b/src/experiments/checksum-oostubs/main.cc similarity index 66% rename from core/experiments/checksum-oostubs/main.cc rename to src/experiments/checksum-oostubs/main.cc index 9e1b2b7f..16605ac5 100644 --- a/core/experiments/checksum-oostubs/main.cc +++ b/src/experiments/checksum-oostubs/main.cc @@ -1,8 +1,8 @@ #include #include -#include "controller/CampaignManager.hpp" -#include "experiments/checksum-oostubs/campaign.hpp" +#include "cpn/CampaignManager.hpp" +#include "campaign.hpp" int main(int argc, char **argv) { diff --git a/core/experiments/coolchecksum/CMakeLists.txt b/src/experiments/cool-checksum/CMakeLists.txt similarity index 96% rename from core/experiments/coolchecksum/CMakeLists.txt rename to src/experiments/cool-checksum/CMakeLists.txt index 0c49e904..58572788 100644 --- a/core/experiments/coolchecksum/CMakeLists.txt +++ b/src/experiments/cool-checksum/CMakeLists.txt @@ -1,4 +1,4 @@ -set(EXPERIMENT_NAME coolchecksum) +set(EXPERIMENT_NAME cool-checksum) set(EXPERIMENT_TYPE CoolChecksumExperiment) configure_file(../instantiate-experiment.ah.in ${CMAKE_CURRENT_BINARY_DIR}/instantiate-${EXPERIMENT_NAME}.ah @ONLY diff --git a/core/experiments/coolchecksum/campaign.cc b/src/experiments/cool-checksum/campaign.cc similarity index 98% rename from core/experiments/coolchecksum/campaign.cc rename to src/experiments/cool-checksum/campaign.cc index d01e53bb..31003ad5 100644 --- a/core/experiments/coolchecksum/campaign.cc +++ b/src/experiments/cool-checksum/campaign.cc @@ -1,14 +1,15 @@ #include +#include #include "campaign.hpp" #include "experimentInfo.hpp" -#include "controller/CampaignManager.hpp" +#include "cpn/CampaignManager.hpp" #include "util/Logger.hpp" #include "util/ProtoStream.hpp" -#include "SAL/SALConfig.hpp" +#include "sal/SALConfig.hpp" #if COOL_FAULTSPACE_PRUNING -#include "plugins/tracing/TracingPlugin.hpp" +#include "../plugins/tracing/TracingPlugin.hpp" char const * const trace_filename = "trace.pb"; #endif diff --git a/core/experiments/coolchecksum/campaign.hpp b/src/experiments/cool-checksum/campaign.hpp similarity index 83% rename from core/experiments/coolchecksum/campaign.hpp rename to src/experiments/cool-checksum/campaign.hpp index d30ac8e5..47c034d2 100644 --- a/core/experiments/coolchecksum/campaign.hpp +++ b/src/experiments/cool-checksum/campaign.hpp @@ -1,8 +1,8 @@ #ifndef __COOLCAMPAIGN_HPP__ #define __COOLCAMPAIGN_HPP__ -#include "controller/Campaign.hpp" -#include "controller/ExperimentData.hpp" +#include "cpn/Campaign.hpp" +#include "comm/ExperimentData.hpp" #include "coolchecksum.pb.h" class CoolChecksumExperimentData : public fail::ExperimentData { diff --git a/core/experiments/coolchecksum/coolchecksum.proto b/src/experiments/cool-checksum/coolchecksum.proto similarity index 100% rename from core/experiments/coolchecksum/coolchecksum.proto rename to src/experiments/cool-checksum/coolchecksum.proto diff --git a/core/experiments/coolchecksum/experiment.cc b/src/experiments/cool-checksum/experiment.cc similarity index 97% rename from core/experiments/coolchecksum/experiment.cc rename to src/experiments/cool-checksum/experiment.cc index ce72f763..e1bb38aa 100644 --- a/core/experiments/coolchecksum/experiment.cc +++ b/src/experiments/cool-checksum/experiment.cc @@ -4,15 +4,15 @@ #include "experiment.hpp" #include "experimentInfo.hpp" #include "campaign.hpp" -#include "SAL/SALConfig.hpp" -#include "SAL/SALInst.hpp" -#include "SAL/Memory.hpp" -#include "SAL/bochs/BochsRegister.hpp" -#include "controller/Event.hpp" +#include "sal/SALConfig.hpp" +#include "sal/SALInst.hpp" +#include "sal/Memory.hpp" +#include "sal/bochs/BochsRegister.hpp" +#include "sal/Event.hpp" #include "config/FailConfig.hpp" #if COOL_FAULTSPACE_PRUNING -#include "plugins/tracing/TracingPlugin.hpp" +#include "../plugins/tracing/TracingPlugin.hpp" #endif #include "coolchecksum.pb.h" diff --git a/core/experiments/coolchecksum/experiment.hpp b/src/experiments/cool-checksum/experiment.hpp similarity index 78% rename from core/experiments/coolchecksum/experiment.hpp rename to src/experiments/cool-checksum/experiment.hpp index 319321a3..36d121a2 100644 --- a/core/experiments/coolchecksum/experiment.hpp +++ b/src/experiments/cool-checksum/experiment.hpp @@ -1,8 +1,8 @@ #ifndef __COOLEXPERIMENT_HPP__ #define __COOLEXPERIMENT_HPP__ -#include "controller/ExperimentFlow.hpp" -#include "jobserver/JobClient.hpp" +#include "efw/ExperimentFlow.hpp" +#include "efw/JobClient.hpp" class CoolChecksumExperiment : public fail::ExperimentFlow { fail::JobClient m_jc; diff --git a/core/experiments/coolchecksum/experimentInfo.hpp b/src/experiments/cool-checksum/experimentInfo.hpp similarity index 100% rename from core/experiments/coolchecksum/experimentInfo.hpp rename to src/experiments/cool-checksum/experimentInfo.hpp diff --git a/core/experiments/coolchecksum/main.cc b/src/experiments/cool-checksum/main.cc similarity index 67% rename from core/experiments/coolchecksum/main.cc rename to src/experiments/cool-checksum/main.cc index df6cf723..b61acec0 100644 --- a/core/experiments/coolchecksum/main.cc +++ b/src/experiments/cool-checksum/main.cc @@ -1,8 +1,8 @@ #include #include -#include "controller/CampaignManager.hpp" -#include "experiments/coolchecksum/campaign.hpp" +#include "cpn/CampaignManager.hpp" +#include "campaign.hpp" int main(int argc, char **argv) { diff --git a/core/experiments/FaultCoverageExperiment/CMakeLists.txt b/src/experiments/fault-coverage/CMakeLists.txt similarity index 90% rename from core/experiments/FaultCoverageExperiment/CMakeLists.txt rename to src/experiments/fault-coverage/CMakeLists.txt index 60ae68fc..93c43971 100644 --- a/core/experiments/FaultCoverageExperiment/CMakeLists.txt +++ b/src/experiments/fault-coverage/CMakeLists.txt @@ -1,5 +1,5 @@ #FaultCoverage experiment -set(EXPERIMENT_NAME FaultCoverageExperiment) +set(EXPERIMENT_NAME fault-coverage) set(EXPERIMENT_TYPE FaultCoverageExperiment) configure_file(../instantiate-experiment.ah.in ${CMAKE_CURRENT_BINARY_DIR}/instantiate-${EXPERIMENT_NAME}.ah @ONLY diff --git a/core/experiments/FaultCoverageExperiment/experiment.cc b/src/experiments/fault-coverage/experiment.cc similarity index 97% rename from core/experiments/FaultCoverageExperiment/experiment.cc rename to src/experiments/fault-coverage/experiment.cc index 49b8d406..dcdccd95 100644 --- a/core/experiments/FaultCoverageExperiment/experiment.cc +++ b/src/experiments/fault-coverage/experiment.cc @@ -5,9 +5,9 @@ #include #include "experiment.hpp" -#include "SAL/SALInst.hpp" -#include "SAL/bochs/BochsRegister.hpp" -#include "../../util/Logger.hpp" +#include "sal/SALInst.hpp" +#include "sal/bochs/BochsRegister.hpp" +#include "util/Logger.hpp" using namespace std; using namespace fail; diff --git a/core/experiments/FaultCoverageExperiment/experiment.hpp b/src/experiments/fault-coverage/experiment.hpp similarity index 94% rename from core/experiments/FaultCoverageExperiment/experiment.hpp rename to src/experiments/fault-coverage/experiment.hpp index 5c7af5de..e0e109aa 100644 --- a/core/experiments/FaultCoverageExperiment/experiment.hpp +++ b/src/experiments/fault-coverage/experiment.hpp @@ -5,7 +5,7 @@ #include #include "config/FailConfig.hpp" -#include "controller/ExperimentFlow.hpp" +#include "efw/ExperimentFlow.hpp" #define INST_ADDR_FUNC_START 0x4ae6 #define INST_ADDR_FUNC_END 0x4be6 diff --git a/core/experiments/fireinterrupt/CMakeLists.txt b/src/experiments/fire-interrupt/CMakeLists.txt similarity index 81% rename from core/experiments/fireinterrupt/CMakeLists.txt rename to src/experiments/fire-interrupt/CMakeLists.txt index 50a65a8b..36414e8d 100644 --- a/core/experiments/fireinterrupt/CMakeLists.txt +++ b/src/experiments/fire-interrupt/CMakeLists.txt @@ -1,5 +1,5 @@ -set(EXPERIMENT_NAME fireinterrupt) -set(EXPERIMENT_TYPE fireinterruptExperiment) +set(EXPERIMENT_NAME fire-interrupt) +set(EXPERIMENT_TYPE FireInterruptExperiment) configure_file(../instantiate-experiment.ah.in ${CMAKE_CURRENT_BINARY_DIR}/instantiate-${EXPERIMENT_NAME}.ah @ONLY ) diff --git a/core/experiments/fireinterrupt/bootdisk.img b/src/experiments/fire-interrupt/bootdisk.img similarity index 100% rename from core/experiments/fireinterrupt/bootdisk.img rename to src/experiments/fire-interrupt/bootdisk.img diff --git a/core/experiments/fireinterrupt/experiment.cc b/src/experiments/fire-interrupt/experiment.cc similarity index 93% rename from core/experiments/fireinterrupt/experiment.cc rename to src/experiments/fire-interrupt/experiment.cc index 8c04e8e5..d0bac70c 100644 --- a/core/experiments/fireinterrupt/experiment.cc +++ b/src/experiments/fire-interrupt/experiment.cc @@ -11,8 +11,8 @@ #include #include "experiment.hpp" -#include "SAL/SALInst.hpp" -#include "controller/Event.hpp" +#include "sal/SALInst.hpp" +#include "sal/Event.hpp" #include "util/Logger.hpp" #include "config/FailConfig.hpp" @@ -24,7 +24,7 @@ using namespace std; using namespace fail; -bool fireinterruptExperiment::run() +bool FireInterruptExperiment::run() { Logger log("FireInterrupt", false); log << "experiment start" << endl; diff --git a/src/experiments/fire-interrupt/experiment.hpp b/src/experiments/fire-interrupt/experiment.hpp new file mode 100644 index 00000000..2785bd97 --- /dev/null +++ b/src/experiments/fire-interrupt/experiment.hpp @@ -0,0 +1,12 @@ +#ifndef __FIREINTERRUPT_EXPERIMENT_HPP__ + #define __FIREINTERRUPT_EXPERIMENT_HPP__ + +#include "efw/ExperimentFlow.hpp" + +class FireInterruptExperiment : public fail::ExperimentFlow { +public: + FireInterruptExperiment() { } + bool run(); +}; + +#endif // __FIREINTERRUPT_EXPERIMENT_HPP__ diff --git a/core/experiments/hscsimple/CMakeLists.txt b/src/experiments/hsc-simple/CMakeLists.txt similarity index 83% rename from core/experiments/hscsimple/CMakeLists.txt rename to src/experiments/hsc-simple/CMakeLists.txt index 2b92c3cb..57b4ffd0 100644 --- a/core/experiments/hscsimple/CMakeLists.txt +++ b/src/experiments/hsc-simple/CMakeLists.txt @@ -1,5 +1,5 @@ -set(EXPERIMENT_NAME hscsimple) -set(EXPERIMENT_TYPE hscsimpleExperiment) +set(EXPERIMENT_NAME hsc-simple) +set(EXPERIMENT_TYPE HSCSimpleExperiment) configure_file(../instantiate-experiment.ah.in ${CMAKE_CURRENT_BINARY_DIR}/instantiate-${EXPERIMENT_NAME}.ah @ONLY ) diff --git a/core/experiments/hscsimple/experiment.cc b/src/experiments/hsc-simple/experiment.cc similarity index 91% rename from core/experiments/hscsimple/experiment.cc rename to src/experiments/hsc-simple/experiment.cc index ca327272..b54728b0 100644 --- a/core/experiments/hscsimple/experiment.cc +++ b/src/experiments/hsc-simple/experiment.cc @@ -1,11 +1,10 @@ #include - #include #include "experiment.hpp" -#include "SAL/SALInst.hpp" -#include "SAL/bochs/BochsRegister.hpp" -#include "controller/Event.hpp" +#include "sal/SALInst.hpp" +#include "sal/bochs/BochsRegister.hpp" +#include "sal/Event.hpp" #include "util/Logger.hpp" #include "config/FailConfig.hpp" @@ -17,7 +16,7 @@ using namespace std; using namespace fail; -bool hscsimpleExperiment::run() +bool HSCSimpleExperiment::run() { Logger log("HSC", false); log << "experiment start" << endl; diff --git a/src/experiments/hsc-simple/experiment.hpp b/src/experiments/hsc-simple/experiment.hpp new file mode 100644 index 00000000..4ee85585 --- /dev/null +++ b/src/experiments/hsc-simple/experiment.hpp @@ -0,0 +1,14 @@ +#ifndef __HSC_SIMPLE_EXPERIMENT_HPP__ + #define __HSC_SIMPLE_EXPERIMENT_HPP__ + +#include "efw/ExperimentFlow.hpp" + +class HSCSimpleExperiment : public fail::ExperimentFlow +{ + public: + HSCSimpleExperiment() { } + + bool run(); +}; + +#endif // __HSC_SIMPLE_EXPERIMENT_HPP__ diff --git a/core/experiments/instantiate-experiment.ah.in b/src/experiments/instantiate-experiment.ah.in similarity index 88% rename from core/experiments/instantiate-experiment.ah.in rename to src/experiments/instantiate-experiment.ah.in index 03f8116b..765d7214 100644 --- a/core/experiments/instantiate-experiment.ah.in +++ b/src/experiments/instantiate-experiment.ah.in @@ -6,8 +6,8 @@ // worked around by manually removing $BUILDDIR/core/experiments/*/*.ah . // Make sure your experiment declaration is in experiment.hpp: -#include "experiments/@EXPERIMENT_NAME@/experiment.hpp" -#include "SAL/SALInst.hpp" +#include "../experiments/@EXPERIMENT_NAME@/experiment.hpp" +#include "sal/SALInst.hpp" aspect @EXPERIMENT_TYPE@ExperimentHook { @EXPERIMENT_TYPE@ experiment; diff --git a/core/experiments/l4sys/CMakeLists.txt b/src/experiments/l4-sys/CMakeLists.txt similarity index 96% rename from core/experiments/l4sys/CMakeLists.txt rename to src/experiments/l4-sys/CMakeLists.txt index 0f51411f..8b0f1c1c 100644 --- a/core/experiments/l4sys/CMakeLists.txt +++ b/src/experiments/l4-sys/CMakeLists.txt @@ -1,4 +1,4 @@ -set(EXPERIMENT_NAME l4sys) +set(EXPERIMENT_NAME l4-sys) set(EXPERIMENT_TYPE L4SysExperiment) configure_file(../instantiate-experiment.ah.in ${CMAKE_CURRENT_BINARY_DIR}/instantiate-${EXPERIMENT_NAME}.ah @ONLY diff --git a/core/experiments/l4sys/campaign.cc b/src/experiments/l4-sys/campaign.cc similarity index 95% rename from core/experiments/l4sys/campaign.cc rename to src/experiments/l4-sys/campaign.cc index e5212937..61e50e89 100644 --- a/core/experiments/l4sys/campaign.cc +++ b/src/experiments/l4-sys/campaign.cc @@ -1,10 +1,11 @@ #include +#include #include "campaign.hpp" #include "experimentInfo.hpp" -#include "controller/CampaignManager.hpp" +#include "cpn/CampaignManager.hpp" #include "util/Logger.hpp" -#include "SAL/SALConfig.hpp" +#include "sal/SALConfig.hpp" using namespace std; using namespace fail; diff --git a/core/experiments/l4sys/campaign.hpp b/src/experiments/l4-sys/campaign.hpp similarity index 81% rename from core/experiments/l4sys/campaign.hpp rename to src/experiments/l4-sys/campaign.hpp index c624941f..cad4f060 100644 --- a/core/experiments/l4sys/campaign.hpp +++ b/src/experiments/l4-sys/campaign.hpp @@ -1,8 +1,8 @@ #ifndef __L4SYS_CAMPAIGN_HPP__ #define __L4SYS_CAMPAIGN_HPP__ -#include "controller/Campaign.hpp" -#include "controller/ExperimentData.hpp" +#include "cpn/Campaign.hpp" +#include "comm/ExperimentData.hpp" #include "l4sys.pb.h" class L4SysExperimentData : public fail::ExperimentData { diff --git a/core/experiments/l4sys/experiment.cc b/src/experiments/l4-sys/experiment.cc similarity index 98% rename from core/experiments/l4sys/experiment.cc rename to src/experiments/l4-sys/experiment.cc index 168cabf1..a0c68713 100644 --- a/core/experiments/l4sys/experiment.cc +++ b/src/experiments/l4-sys/experiment.cc @@ -11,11 +11,11 @@ #include "experimentInfo.hpp" #include "campaign.hpp" -#include "SAL/SALConfig.hpp" -#include "SAL/SALInst.hpp" -#include "SAL/Memory.hpp" -#include "SAL/bochs/BochsRegister.hpp" -#include "controller/Event.hpp" +#include "sal/SALConfig.hpp" +#include "sal/SALInst.hpp" +#include "sal/Memory.hpp" +#include "sal/bochs/BochsRegister.hpp" +#include "sal/Event.hpp" #include "config/FailConfig.hpp" #include "l4sys.pb.h" @@ -213,7 +213,7 @@ bool L4SysExperiment::run() // inject RegisterManager& rm = simulator.getRegisterManager(); - Register *ebx = rm.getRegister(RID_EBX); + Register *ebx = rm.getRegister(RID_CBX); regdata_t data = ebx->getData(); regdata_t newdata = data ^ (1 << bit_offset); ebx->setData(newdata); diff --git a/core/experiments/l4sys/experiment.hpp b/src/experiments/l4-sys/experiment.hpp similarity index 88% rename from core/experiments/l4sys/experiment.hpp rename to src/experiments/l4-sys/experiment.hpp index f4afb88a..8522827b 100644 --- a/core/experiments/l4sys/experiment.hpp +++ b/src/experiments/l4-sys/experiment.hpp @@ -3,8 +3,8 @@ #include -#include "controller/ExperimentFlow.hpp" -#include "jobserver/JobClient.hpp" +#include "efw/ExperimentFlow.hpp" +#include "efw/JobClient.hpp" class L4SysExperiment : public fail::ExperimentFlow { fail::JobClient m_jc; diff --git a/core/experiments/l4sys/experimentInfo.hpp b/src/experiments/l4-sys/experimentInfo.hpp similarity index 100% rename from core/experiments/l4sys/experimentInfo.hpp rename to src/experiments/l4-sys/experimentInfo.hpp diff --git a/core/experiments/l4sys/l4sys.proto b/src/experiments/l4-sys/l4sys.proto similarity index 100% rename from core/experiments/l4sys/l4sys.proto rename to src/experiments/l4-sys/l4sys.proto diff --git a/core/experiments/l4sys/main.cc b/src/experiments/l4-sys/main.cc similarity index 67% rename from core/experiments/l4sys/main.cc rename to src/experiments/l4-sys/main.cc index cf44477c..3ef02502 100644 --- a/core/experiments/l4sys/main.cc +++ b/src/experiments/l4-sys/main.cc @@ -1,8 +1,8 @@ #include #include -#include "controller/CampaignManager.hpp" -#include "experiments/l4sys/campaign.hpp" +#include "cpn/CampaignManager.hpp" +#include "campaign.hpp" int main(int argc, char **argv) { diff --git a/core/experiments/MHTestCampaign/CMakeLists.txt b/src/experiments/mh-test-campaign/CMakeLists.txt similarity index 95% rename from core/experiments/MHTestCampaign/CMakeLists.txt rename to src/experiments/mh-test-campaign/CMakeLists.txt index 9485934f..18ec47ac 100644 --- a/core/experiments/MHTestCampaign/CMakeLists.txt +++ b/src/experiments/mh-test-campaign/CMakeLists.txt @@ -1,4 +1,4 @@ -set(EXPERIMENT_NAME MHTestCampaign) +set(EXPERIMENT_NAME mh-test-campaign) set(EXPERIMENT_TYPE MHTestExperiment) configure_file(../instantiate-experiment.ah.in ${CMAKE_CURRENT_BINARY_DIR}/instantiate-${EXPERIMENT_NAME}.ah @ONLY diff --git a/core/experiments/MHTestCampaign/MHTest.proto b/src/experiments/mh-test-campaign/MHTest.proto similarity index 100% rename from core/experiments/MHTestCampaign/MHTest.proto rename to src/experiments/mh-test-campaign/MHTest.proto diff --git a/core/experiments/MHTestCampaign/MHTestCampaign.cc b/src/experiments/mh-test-campaign/MHTestCampaign.cc similarity index 96% rename from core/experiments/MHTestCampaign/MHTestCampaign.cc rename to src/experiments/mh-test-campaign/MHTestCampaign.cc index 3d0bea28..4f20cfc4 100644 --- a/core/experiments/MHTestCampaign/MHTestCampaign.cc +++ b/src/experiments/mh-test-campaign/MHTestCampaign.cc @@ -1,7 +1,7 @@ #include #include "MHTestCampaign.hpp" -#include +#include using namespace std; using namespace fail; diff --git a/core/experiments/MHTestCampaign/MHTestCampaign.hpp b/src/experiments/mh-test-campaign/MHTestCampaign.hpp similarity index 76% rename from core/experiments/MHTestCampaign/MHTestCampaign.hpp rename to src/experiments/mh-test-campaign/MHTestCampaign.hpp index 5c2a34e2..d5106f48 100644 --- a/core/experiments/MHTestCampaign/MHTestCampaign.hpp +++ b/src/experiments/mh-test-campaign/MHTestCampaign.hpp @@ -1,9 +1,9 @@ #ifndef __MH_TEST_CAMPAIGN_HPP__ #define __MH_TEST_CAMPAIGN_HPP__ -#include -#include "controller/ExperimentData.hpp" -#include +#include +#include "comm/ExperimentData.hpp" +#include "MHTest.pb.h" class MHExperimentData : public fail::ExperimentData { public: @@ -11,7 +11,6 @@ public: MHExperimentData() : fail::ExperimentData(&msg) { } }; - class MHTestCampaign : public fail::Campaign { private: int m_parameter_count; diff --git a/core/experiments/MHTestCampaign/experiment.cc b/src/experiments/mh-test-campaign/experiment.cc similarity index 92% rename from core/experiments/MHTestCampaign/experiment.cc rename to src/experiments/mh-test-campaign/experiment.cc index 324b8479..7b25200b 100644 --- a/core/experiments/MHTestCampaign/experiment.cc +++ b/src/experiments/mh-test-campaign/experiment.cc @@ -2,9 +2,9 @@ #include "experiment.hpp" #include "MHTestCampaign.hpp" -#include "SAL/SALInst.hpp" -#include "SAL/Register.hpp" -#include "controller/Event.hpp" +#include "sal/SALInst.hpp" +#include "sal/Register.hpp" +#include "sal/Event.hpp" // FIXME: You should provide a dependency check here! diff --git a/core/experiments/MHTestCampaign/experiment.hpp b/src/experiments/mh-test-campaign/experiment.hpp similarity index 78% rename from core/experiments/MHTestCampaign/experiment.hpp rename to src/experiments/mh-test-campaign/experiment.hpp index 948f5159..c6d62593 100644 --- a/core/experiments/MHTestCampaign/experiment.hpp +++ b/src/experiments/mh-test-campaign/experiment.hpp @@ -1,8 +1,8 @@ #ifndef __MH_TEST_EXPERIMENT_HPP__ #define __MH_TEST_EXPERIMENT_HPP__ -#include "controller/ExperimentFlow.hpp" -#include "jobserver/JobClient.hpp" +#include "efw/ExperimentFlow.hpp" +#include "efw/JobClient.hpp" class MHTestExperiment : public fail::ExperimentFlow { private: diff --git a/core/experiments/MHTestCampaign/mhcampaign.cc b/src/experiments/mh-test-campaign/mhcampaign.cc similarity index 72% rename from core/experiments/MHTestCampaign/mhcampaign.cc rename to src/experiments/mh-test-campaign/mhcampaign.cc index 21bcb3bb..7b5b563e 100644 --- a/core/experiments/MHTestCampaign/mhcampaign.cc +++ b/src/experiments/mh-test-campaign/mhcampaign.cc @@ -1,8 +1,8 @@ #include #include -#include "controller/CampaignManager.hpp" -#include "experiments/MHTestCampaign/MHTestCampaign.hpp" +#include "cpn/CampaignManager.hpp" +#include "MHTestCampaign.hpp" using namespace std; @@ -16,7 +16,7 @@ int main(int argc, char**argv) cout << "Running MHTestCampaign [" << paramcount << " parameter sets]" << endl; MHTestCampaign mhc(paramcount); - campaignmanager.runCampaign(&mhc); + fail::campaignmanager.runCampaign(&mhc); cout << "Campaign complete." << endl; diff --git a/core/experiments/TracingTest/CMakeLists.txt b/src/experiments/tracing-test/CMakeLists.txt similarity index 82% rename from core/experiments/TracingTest/CMakeLists.txt rename to src/experiments/tracing-test/CMakeLists.txt index 5c5b3dcf..5cd1ebb7 100644 --- a/core/experiments/TracingTest/CMakeLists.txt +++ b/src/experiments/tracing-test/CMakeLists.txt @@ -1,4 +1,4 @@ -set(EXPERIMENT_NAME TracingTest) +set(EXPERIMENT_NAME tracing-test) set(EXPERIMENT_TYPE TracingTest) configure_file(../instantiate-experiment.ah.in ${CMAKE_CURRENT_BINARY_DIR}/instantiate-${EXPERIMENT_NAME}.ah @ONLY @@ -13,3 +13,5 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) ## Build library add_library(${EXPERIMENT_NAME} ${PROTO_SRCS} ${PROTO_HDRS} ${MY_CAMPAIGN_SRCS}) + +add_dependencies(${EXPERIMENT_NAME} tracing) diff --git a/core/experiments/TracingTest/experiment.cc b/src/experiments/tracing-test/experiment.cc similarity index 93% rename from core/experiments/TracingTest/experiment.cc rename to src/experiments/tracing-test/experiment.cc index f3b0c736..e2ef10e1 100644 --- a/core/experiments/TracingTest/experiment.cc +++ b/src/experiments/tracing-test/experiment.cc @@ -1,9 +1,10 @@ #include +#include -#include "SAL/SALInst.hpp" -#include "SAL/Register.hpp" +#include "sal/SALInst.hpp" +#include "sal/Register.hpp" #include "experiment.hpp" -#include "plugins/tracing/TracingPlugin.hpp" +#include "../plugins/tracing/TracingPlugin.hpp" /* #include diff --git a/core/experiments/TracingTest/experiment.hpp b/src/experiments/tracing-test/experiment.hpp similarity index 56% rename from core/experiments/TracingTest/experiment.hpp rename to src/experiments/tracing-test/experiment.hpp index ae0133bf..102bc15c 100644 --- a/core/experiments/TracingTest/experiment.hpp +++ b/src/experiments/tracing-test/experiment.hpp @@ -1,10 +1,9 @@ #ifndef __TRACING_TEST_HPP__ #define __TRACING_TEST_HPP__ -#include "controller/ExperimentFlow.hpp" +#include "efw/ExperimentFlow.hpp" -class TracingTest : public fail::ExperimentFlow -{ +class TracingTest : public fail::ExperimentFlow { public: bool run(); }; diff --git a/core/experiments/weathermonitor/CMakeLists.txt b/src/experiments/weather-monitor/CMakeLists.txt similarity index 87% rename from core/experiments/weathermonitor/CMakeLists.txt rename to src/experiments/weather-monitor/CMakeLists.txt index cb92ba57..6458e25b 100644 --- a/core/experiments/weathermonitor/CMakeLists.txt +++ b/src/experiments/weather-monitor/CMakeLists.txt @@ -1,5 +1,5 @@ -set(EXPERIMENT_NAME weathermonitor) -set(EXPERIMENT_TYPE WeathermonitorExperiment) +set(EXPERIMENT_NAME weather-monitor) +set(EXPERIMENT_TYPE WeatherMonitorExperiment) configure_file(../instantiate-experiment.ah.in ${CMAKE_CURRENT_BINARY_DIR}/instantiate-${EXPERIMENT_NAME}.ah @ONLY ) @@ -27,6 +27,8 @@ PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${MY_PROTOS}) ## Build library add_library(${EXPERIMENT_NAME} ${PROTO_SRCS} ${PROTO_HDRS} ${MY_CAMPAIGN_SRCS}) +add_dependencies(${EXPERIMENT_NAME} tracing) + ## This is the example's campaign server distributing experiment parameters add_executable(${EXPERIMENT_NAME}-server main.cc) target_link_libraries(${EXPERIMENT_NAME}-server ${EXPERIMENT_NAME} fail ${PROTOBUF_LIBRARY} ${Boost_THREAD_LIBRARY}) diff --git a/core/experiments/weathermonitor/campaign.cc b/src/experiments/weather-monitor/campaign.cc similarity index 94% rename from core/experiments/weathermonitor/campaign.cc rename to src/experiments/weather-monitor/campaign.cc index 717ff894..0d3da831 100644 --- a/core/experiments/weathermonitor/campaign.cc +++ b/src/experiments/weather-monitor/campaign.cc @@ -1,17 +1,18 @@ #include +#include #include #include #include "campaign.hpp" #include "experimentInfo.hpp" -#include "controller/CampaignManager.hpp" +#include "cpn/CampaignManager.hpp" #include "util/Logger.hpp" #include "util/MemoryMap.hpp" #include "util/ProtoStream.hpp" #include "vptr_map.hpp" -#include "plugins/tracing/TracingPlugin.hpp" +#include "../plugins/tracing/TracingPlugin.hpp" using namespace std; using namespace fail; @@ -29,7 +30,7 @@ struct equivalence_class { address_t instr2_absolute; }; -bool WeathermonitorCampaign::run() +bool WeatherMonitorCampaign::run() { Logger log("Weathermonitor Campaign"); @@ -65,7 +66,7 @@ bool WeathermonitorCampaign::run() equivalence_class current_ec; // map for efficient access when results come in - map experiment_ecs; + map experiment_ecs; // experiment count int count = 0; @@ -122,7 +123,7 @@ bool WeathermonitorCampaign::run() // instantly enqueue job: that way the job clients can already // start working in parallel - WeathermonitorExperimentData *d = new WeathermonitorExperimentData; + WeatherMonitorExperimentData *d = new WeatherMonitorExperimentData; // we pick the rightmost instruction in that interval d->msg.set_instr_offset(current_ec.instr2); d->msg.set_instr_address(current_ec.instr2_absolute); @@ -172,7 +173,7 @@ bool WeathermonitorCampaign::run() // FIXME copy/paste, encapsulate this: // instantly enqueue job: that way the job clients can already // start working in parallel - WeathermonitorExperimentData *d = new WeathermonitorExperimentData; + WeatherMonitorExperimentData *d = new WeatherMonitorExperimentData; // we pick the rightmost instruction in that interval d->msg.set_instr_offset(current_ec.instr2); //d->msg.set_instr_address(current_ec.instr2_absolute); // unknown! @@ -225,12 +226,12 @@ bool WeathermonitorCampaign::run() } // collect results - WeathermonitorExperimentData *res; + WeatherMonitorExperimentData *res; int rescount = 0; - while ((res = static_cast(campaignmanager.getDone()))) { + while ((res = static_cast(campaignmanager.getDone()))) { rescount++; - map::iterator it = + map::iterator it = experiment_ecs.find(res); if (it == experiment_ecs.end()) { results << "WTF, didn't find res!" << endl; diff --git a/src/experiments/weather-monitor/campaign.hpp b/src/experiments/weather-monitor/campaign.hpp new file mode 100644 index 00000000..c99df11f --- /dev/null +++ b/src/experiments/weather-monitor/campaign.hpp @@ -0,0 +1,19 @@ +#ifndef __WEATHERMONITOR_CAMPAIGN_HPP__ + #define __WEATHERMONITOR_CAMPAIGN_HPP__ + +#include "cpn/Campaign.hpp" +#include "comm/ExperimentData.hpp" +#include "weathermonitor.pb.h" + +class WeatherMonitorExperimentData : public fail::ExperimentData { +public: + WeathermonitorProtoMsg msg; + WeatherMonitorExperimentData() : fail::ExperimentData(&msg) {} +}; + +class WeatherMonitorCampaign : public fail::Campaign { +public: + virtual bool run(); +}; + +#endif // __WEATHERMONITOR_CAMPAIGN_HPP__ diff --git a/core/experiments/weathermonitor/experiment.cc b/src/experiments/weather-monitor/experiment.cc similarity index 96% rename from core/experiments/weathermonitor/experiment.cc rename to src/experiments/weather-monitor/experiment.cc index 21a07c34..151d2d44 100644 --- a/core/experiments/weathermonitor/experiment.cc +++ b/src/experiments/weather-monitor/experiment.cc @@ -10,14 +10,14 @@ #include "experimentInfo.hpp" #include "campaign.hpp" -#include "SAL/SALConfig.hpp" -#include "SAL/SALInst.hpp" -#include "SAL/Memory.hpp" -#include "SAL/bochs/BochsRegister.hpp" -#include "controller/Event.hpp" +#include "sal/SALConfig.hpp" +#include "sal/SALInst.hpp" +#include "sal/Memory.hpp" +#include "sal/bochs/BochsRegister.hpp" +#include "sal/Event.hpp" // you need to have the tracing plugin enabled for this -#include "plugins/tracing/TracingPlugin.hpp" +#include "../plugins/tracing/TracingPlugin.hpp" #include "vptr_map.hpp" @@ -32,9 +32,9 @@ using namespace fail; #error This experiment needs: breakpoints, traps, save, and restore. Enable these in the configuration. #endif -bool WeathermonitorExperiment::run() +bool WeatherMonitorExperiment::run() { - char const *statename = "bochs.state"; +// char const *statename = "bochs.state"; // FIXME: Variable is unused, accidental? Logger log("Weathermonitor", false); BPSingleEvent bp; @@ -134,7 +134,7 @@ bool WeathermonitorExperiment::run() // get an experiment parameter set log << "asking job server for experiment parameters" << endl; - WeathermonitorExperimentData param; + WeatherMonitorExperimentData param; #if !LOCAL if (!m_jc.getParam(param)) { log << "Dying." << endl; diff --git a/src/experiments/weather-monitor/experiment.hpp b/src/experiments/weather-monitor/experiment.hpp new file mode 100644 index 00000000..13b88ad8 --- /dev/null +++ b/src/experiments/weather-monitor/experiment.hpp @@ -0,0 +1,14 @@ +#ifndef __WEATHERMONITOR_EXPERIMENT_HPP__ + #define __WEATHERMONITOR_EXPERIMENT_HPP__ + +#include "efw/ExperimentFlow.hpp" +#include "efw/JobClient.hpp" + +class WeatherMonitorExperiment : public fail::ExperimentFlow { + fail::JobClient m_jc; +public: + WeatherMonitorExperiment() : m_jc("ios.cs.tu-dortmund.de") {} + bool run(); +}; + +#endif // __WEATHERMONITOR_EXPERIMENT_HPP__ diff --git a/core/experiments/weathermonitor/experimentInfo.hpp b/src/experiments/weather-monitor/experimentInfo.hpp similarity index 100% rename from core/experiments/weathermonitor/experimentInfo.hpp rename to src/experiments/weather-monitor/experimentInfo.hpp diff --git a/core/experiments/weathermonitor/experimentInfo.hpp.sh b/src/experiments/weather-monitor/experimentInfo.hpp.sh similarity index 100% rename from core/experiments/weathermonitor/experimentInfo.hpp.sh rename to src/experiments/weather-monitor/experimentInfo.hpp.sh diff --git a/core/experiments/weathermonitor/main.cc b/src/experiments/weather-monitor/main.cc similarity index 51% rename from core/experiments/weathermonitor/main.cc rename to src/experiments/weather-monitor/main.cc index ca956423..0e77b098 100644 --- a/core/experiments/weathermonitor/main.cc +++ b/src/experiments/weather-monitor/main.cc @@ -1,11 +1,11 @@ #include #include -#include "controller/CampaignManager.hpp" -#include "experiments/weathermonitor/campaign.hpp" +#include "cpn/CampaignManager.hpp" +#include "campaign.hpp" int main(int argc, char **argv) { - WeathermonitorCampaign c; + WeatherMonitorCampaign c; return !fail::campaignmanager.runCampaign(&c); } diff --git a/core/experiments/weathermonitor/vptr_map.hpp b/src/experiments/weather-monitor/vptr_map.hpp similarity index 100% rename from core/experiments/weathermonitor/vptr_map.hpp rename to src/experiments/weather-monitor/vptr_map.hpp diff --git a/core/experiments/weathermonitor/weathermonitor.proto b/src/experiments/weather-monitor/weathermonitor.proto similarity index 100% rename from core/experiments/weathermonitor/weathermonitor.proto rename to src/experiments/weather-monitor/weathermonitor.proto diff --git a/core/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt similarity index 79% rename from core/plugins/CMakeLists.txt rename to src/plugins/CMakeLists.txt index 9a81d159..a776417d 100644 --- a/core/plugins/CMakeLists.txt +++ b/src/plugins/CMakeLists.txt @@ -1,5 +1,5 @@ # Note that we're allowing *multiple* plugins to be enabled at once. -set(PLUGINS_ACTIVATED "" CACHE STRING "Activated plugins (a semicolon-separated list of fail/plugins/ subdirectories)") +set(PLUGINS_ACTIVATED "" CACHE STRING "Activated plugins (a semicolon-separated list of fail/src/plugins/ subdirectories)") foreach(plugin_name ${PLUGINS_ACTIVATED}) add_subdirectory(${plugin_name}) diff --git a/core/plugins/tracing/CMakeLists.txt b/src/plugins/tracing/CMakeLists.txt similarity index 100% rename from core/plugins/tracing/CMakeLists.txt rename to src/plugins/tracing/CMakeLists.txt diff --git a/core/plugins/tracing/README.txt b/src/plugins/tracing/README.txt similarity index 100% rename from core/plugins/tracing/README.txt rename to src/plugins/tracing/README.txt diff --git a/core/plugins/tracing/TracingPlugin.cc b/src/plugins/tracing/TracingPlugin.cc similarity index 96% rename from core/plugins/tracing/TracingPlugin.cc rename to src/plugins/tracing/TracingPlugin.cc index b2846188..b2eecb05 100644 --- a/core/plugins/tracing/TracingPlugin.cc +++ b/src/plugins/tracing/TracingPlugin.cc @@ -1,7 +1,7 @@ #include -#include "SAL/SALInst.hpp" -#include "SAL/Register.hpp" +#include "sal/SALInst.hpp" +#include "sal/Register.hpp" #include "TracingPlugin.hpp" using namespace std; diff --git a/core/plugins/tracing/TracingPlugin.hpp b/src/plugins/tracing/TracingPlugin.hpp similarity index 97% rename from core/plugins/tracing/TracingPlugin.hpp rename to src/plugins/tracing/TracingPlugin.hpp index ed2f53ce..64efe4db 100644 --- a/core/plugins/tracing/TracingPlugin.hpp +++ b/src/plugins/tracing/TracingPlugin.hpp @@ -3,12 +3,12 @@ #include -#include "controller/ExperimentFlow.hpp" #include "util/MemoryMap.hpp" #include "util/ProtoStream.hpp" +#include "efw/ExperimentFlow.hpp" #include "config/FailConfig.hpp" -#include "plugins/tracing/trace.pb.h" +#include "../plugins/tracing/trace.pb.h" // Check if configuration dependencies are satisfied: #if !defined(CONFIG_EVENT_BREAKPOINTS) || !defined(CONFIG_EVENT_MEMREAD) || !defined(CONFIG_EVENT_MEMWRITE) diff --git a/core/plugins/tracing/dump-trace.py b/src/plugins/tracing/dump-trace.py similarity index 100% rename from core/plugins/tracing/dump-trace.py rename to src/plugins/tracing/dump-trace.py diff --git a/core/plugins/tracing/trace.proto b/src/plugins/tracing/trace.proto similarity index 100% rename from core/plugins/tracing/trace.proto rename to src/plugins/tracing/trace.proto