#define compat_pfn_to_cr3(pfn) (((unsigned)(pfn) << 12) | ((unsigned)(pfn) >> 20))
#define compat_cr3_to_pfn(cr3) (((unsigned)(cr3) >> 12) | ((unsigned)(cr3) << 20))
-#ifdef MEMORY_GUARD
-void memguard_guard_range(void *p, unsigned long l);
-void memguard_unguard_range(void *p, unsigned long l);
-#else
-#define memguard_guard_range(_p,_l) ((void)0)
-#define memguard_unguard_range(_p,_l) ((void)0)
-#endif
-
void memguard_guard_stack(void *p);
void memguard_unguard_stack(void *p);
d->arch.perdomain_l3_pg = NULL;
}
-#ifdef MEMORY_GUARD
-
-static void __memguard_change_range(void *p, unsigned long l, int guard)
-{
- unsigned long _p = (unsigned long)p;
- unsigned long _l = (unsigned long)l;
- unsigned int flags = __PAGE_HYPERVISOR_RW | MAP_SMALL_PAGES;
-
- /* Ensure we are dealing with a page-aligned whole number of pages. */
- ASSERT(IS_ALIGNED(_p, PAGE_SIZE));
- ASSERT(IS_ALIGNED(_l, PAGE_SIZE));
-
- if ( guard )
- flags &= ~_PAGE_PRESENT;
-
- map_pages_to_xen(_p, virt_to_mfn(p), PFN_DOWN(_l), flags);
-}
-
-void memguard_guard_range(void *p, unsigned long l)
-{
- __memguard_change_range(p, l, 1);
-}
-
-void memguard_unguard_range(void *p, unsigned long l)
-{
- __memguard_change_range(p, l, 0);
-}
-
-#endif
-
static void write_sss_token(unsigned long *ptr)
{
/*
{
unsigned long esp = regs->rsp;
unsigned long curr_stack_base = esp & ~(STACK_SIZE - 1);
-#ifdef MEMORY_GUARD
unsigned long esp_top, esp_bottom;
-#endif
if ( _p(curr_stack_base) != stack_base[cpu] )
printk("Current stack base %p differs from expected %p\n",
_p(curr_stack_base), stack_base[cpu]);
-#ifdef MEMORY_GUARD
esp_bottom = (esp | (STACK_SIZE - 1)) + 1;
esp_top = esp_bottom - PRIMARY_STACK_SIZE;
_show_trace(esp, regs->rbp);
printk("\n");
-#endif
}
void show_execution_state(const struct cpu_user_regs *regs)