#ifndef __RESTORE_STATE_AH__
  #define __RESTORE_STATE_AH__

#include "config/VariantConfig.hpp"
#include "config/FailConfig.hpp"

#if defined(BUILD_BOCHS) && defined(CONFIG_SR_RESTORE)

#include <iostream>

#include "bochs.h"

#include "../SALInst.hpp"

aspect RestoreState {
	pointcut restoreState()  = "void bx_sr_after_restore_state()";

	advice execution (restoreState()) : after ()
	{
		std::cout << "[FAIL] Restore finished" << std::endl;
		// TODO: Log-Level?
		fail::simulator.restoreDone();
	}
};

#endif // CONFIG_SR_RESTORE
#endif // __RESTORE_STATE_AH__
