Beispiel #1
0
static void _npg_unmap_4K(offset_t addr, uint64_t __unused__ attr)
{
   debug(PG_MAP, "unmap 4K 0x%X\n", addr);
   npg_pte64_t *pte = _npg_remap_finest_4K(addr);

   if(pte)
      npg_zero(pte);
}
Beispiel #2
0
/*
** Try to get a nested pte for the given addr
** Directly try to remap VM memory with finest
** granularity to return a nested pte
*/
static void gdb_vmm_npg_get_pte(uint8_t *data, size_t len)
{
   loc_t        addr;
   npg_pte64_t  *pte;

   if(!gdb_get_number(data, len, (uint64_t*)&addr.raw, 0))
   {
      gdb_nak();
      return;
   }

   pte = _npg_remap_finest_4K(addr.linear);
   if(!pte)
   {
      debug(GDBSTUB_CMD, "no npg pte for 0x%x\n", addr.raw);
      gdb_err_mem();
      return;
   }

   npg_invlpg(addr.linear);
   gdb_add_number(pte->raw, sizeof(uint64_t)*2, 0);
   gdb_send_packet();
}