- Added a define which marks the use of BPRangeListener

- Gem5 now has two different implementation for breakpoints.
  - If only BPSingleListener are used, gem5 Breakpoints are used
  - If BPRangeListener are used, gem5 calls onBreakpoint() in every simulated instruction

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@2003 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
friemel
2013-01-16 15:27:06 +00:00
parent ac7cec7684
commit afca00ce0a
4 changed files with 12 additions and 3 deletions

View File

@ -377,6 +377,12 @@ BaseSimpleCPU::preExecute()
TheISA::PCState pcState = thread->pcState();
// FAIL*
#if defined(CONFIG_EVENT_BREAKPOINTS) && defined(CONFIG_EVENT_RANGEBREAKPOINTS)
fail::ConcreteCPU* cpu = &fail::simulator.getCPU(cpuId());
fail::simulator.onBreakpoint(cpu, instAddr(), -1);
#endif
if (isRomMicroPC(pcState.microPC())) {
stayAtPC = false;
curStaticInst = microcodeRom.fetchMicroop(pcState.microPC(),

View File

@ -3,6 +3,7 @@ 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_RANGEBREAKPOINTS "Event source: Range Breakpoints" OFF)
OPTION(CONFIG_EVENT_MEMREAD "Event source: Memory reads" OFF)
OPTION(CONFIG_EVENT_MEMWRITE "Event source: Memory writes" OFF)
OPTION(CONFIG_EVENT_GUESTSYS "Event source: Outbound guest-system communication" OFF)

View File

@ -7,6 +7,7 @@
// Event sources
#cmakedefine CONFIG_EVENT_BREAKPOINTS
#cmakedefine CONFIG_EVENT_RANGEBREAKPOINTS
#cmakedefine CONFIG_EVENT_MEMREAD
#cmakedefine CONFIG_EVENT_MEMWRITE
#cmakedefine CONFIG_EVENT_GUESTSYS

View File

@ -1,9 +1,10 @@
#ifndef __GEM5_LISTENER_AH__
#define __GEM5_LISTENER_AH__
#include "config/FailConfig.hpp"
#include "config/VariantConfig.hpp"
#if defined(BUILD_GEM5)
#if defined(BUILD_GEM5) && defined(CONFIG_EVENT_BREAKPOINTS) && !defined(CONFIG_EVENT_RANGEBREAKPOINTS)
#include "../SALInst.hpp"
@ -27,7 +28,7 @@ aspect Gem5Listener {
{
System* sys = *System::systemList.begin();
m_Breakpoint = new Gem5Breakpoint(&sys->pcEventQueue, this->m_WatchInstrPtr);
return true;
}
@ -41,6 +42,6 @@ aspect Gem5Listener {
};
};
#endif // defined(BUILD_GEM5)
#endif // defined(BUILD_GEM5) && defined(CONFIG_EVENT_BREAKPOINTS) && !defined(CONFIG_EVENT_RANGEBREAKPOINTS)
#endif // __GEM5_LISTENER_AH__