"failstar" sounds like a name for a cruise liner from the 80s. As "*" isn't a desirable part of directory names, just name the whole thing "fail/", the core parts being stored in "fail/core/". Additionally fixing two build system dependency issues: - missing jobserver -> protomessages dependency - broken bochs -> fail dependency (add_custom_target DEPENDS only allows plain file dependencies ... cmake for the win) git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@956 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
36 lines
910 B
Plaintext
36 lines
910 B
Plaintext
#ifndef __CPU_LOOP_AH__
|
|
#define __CPU_LOOP_AH__
|
|
|
|
#include "../../AspectConfig.hpp"
|
|
|
|
#if CONFIG_EVENT_CPULOOP == 1
|
|
|
|
#include "../../../bochs/bochs.h" // for "BX_CPU_C"
|
|
#include "../../../bochs/cpu/cpu.h" // for "bxInstruction_c"
|
|
#include "../SALInst.hpp"
|
|
|
|
aspect CPULoop
|
|
{
|
|
pointcut cpuLoop() = "void defineCPULoopJoinPoint(...)";
|
|
|
|
//
|
|
// Event source: "instruction pointer"
|
|
//
|
|
advice execution (cpuLoop()) : after ()
|
|
{
|
|
// Points to the cpu class: "this" if BX_USE_CPU_SMF == 0,
|
|
// BX_CPU(0) otherwise
|
|
BX_CPU_C* pThis = *(tjp->arg<0>());
|
|
// Points to the *current* bxInstruction-object
|
|
bxInstruction_c* pInstr = *(tjp->arg<1>());
|
|
|
|
// report this event to the Bochs controller:
|
|
sal::simulator.onInstrPtrChanged(pThis->get_instruction_pointer());
|
|
// Note: get_bx_opcode_name(pInstr->getIaOpcode()) retrieves the mnemonics.
|
|
}
|
|
};
|
|
|
|
#endif // CONFIG_EVENT_CPULOOP
|
|
|
|
#endif /* __CPU_LOOP_AH__ */
|