Exemplo n.º 1
0
void dbg_hard_release()
{
   if(dbg_hard_brk_enabled() || dbg_hard_stp_enabled())
      return;

   if(!(info->vmm.ctrl.dbg.excp & (1<<DB_EXCP)))
      return;

   info->vmm.ctrl.dbg.excp &= ~(1<<DB_EXCP);
   ctrl_traps_set_update(1);

   debug(DBG_HARD, "removed #DB intercept (%d|%d)\n"
	 ,dbg_hard_stp_enabled()
	 ,dbg_hard_brk_enabled());
}
Exemplo n.º 2
0
void dbg_hard_protect()
{
   if(!dbg_hard_brk_enabled() && !dbg_hard_stp_enabled())
      return;

   if(info->vmm.ctrl.dbg.excp & (1<<DB_EXCP))
      return;

   info->vmm.ctrl.dbg.excp |= (1<<DB_EXCP);
   ctrl_traps_set_update(1);

   debug(DBG_HARD, "installed #DB intercept (%d|%d)\n"
	 ,dbg_hard_stp_enabled()
	 ,dbg_hard_brk_enabled());
}
Exemplo n.º 3
0
static void dbg_hard_stp_release()
{
   if(dbg_hard_stp_enabled())
      return;

   debug(DBG_HARD_STP, "sstep release\n");
   dbg_hard_stp_restore_context();

   __rflags.tf = dbg_hard_stp_saved_tf();
   __post_access(__rflags);

   /* XXX */
   /* if(!dbg_hard_brk_enabled()) */
   /*    __release_rflags(); */

   info->vmm.ctrl.dbg.excp &= ~(1<<GP_EXCP);
   ctrl_traps_set_update(1);
   dbg_hard_release();
}
Exemplo n.º 4
0
static void dbg_hard_stp_protect()
{
   if(!dbg_hard_stp_enabled())
      return;

   debug(DBG_HARD_STP, "sstep protect\n");
   dbg_hard_stp_save_context();

   dbg_hard_stp_save_tf(__rflags.tf);
   __rflags.tf = 1;
   __post_access(__rflags);

   /* XXX */
   /* __protect_rflags(); */

   info->vmm.ctrl.dbg.excp |= 1<<GP_EXCP;
   ctrl_traps_set_update(1);
   dbg_hard_protect();
}