コード例 #1
0
ファイル: dbg_hard.c プロジェクト: Debug-Orz/ramooflax
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());
}
コード例 #2
0
ファイル: dbg_hard.c プロジェクト: Debug-Orz/ramooflax
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());
}
コード例 #3
0
ファイル: dbg_hard_brk.c プロジェクト: puzirev/ramooflax
int dbg_hard_brk_event(ctrl_evt_hdl_t *hdlr)
{
   uint8_t n;

   if(!dbg_hard_brk_enabled())
      return VM_IGNORE;

   debug(DBG_HARD_BRK, "hard brk event\n");

   for(n=0 ; n<DBG_HARD_BRK_NR ; n++)
      if(__hbrk_raised(n) && __hbrk_enabled(n))
      {
         dbg_evt_t *evt = &info->vmm.ctrl.dbg.evt;

         evt->type = __hbrk_get_type(n);
         evt->hard = n;
         evt->addr = get_dr(n);
         *hdlr     = dbg_hard_brk_get_hdlr(n);

         dbg_hard_set_dr6_dirty(1);
         debug(DBG_HARD_BRK, "prepared hard brk ctrl event for 0x%X\n", evt->addr);
         return VM_DONE;
      }

   return VM_IGNORE;
}