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); }
/* ** 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(); }