--- Gnu-Mach/i386/xen/xen.c 2020/09/02 04:46:46 1.1 +++ Gnu-Mach/i386/xen/xen.c 2020/09/02 04:55:34 1.1.1.3 @@ -46,18 +46,19 @@ void hyp_failsafe_c_callback(struct fail extern void return_to_iret; -void hypclock_machine_intr(int old_ipl, void *ret_addr, struct i386_interrupt_state *regs, unsigned64_t delta) { +void hypclock_machine_intr(int old_ipl, void *ret_addr, struct i386_interrupt_state *regs, uint64_t delta) { if (ret_addr == &return_to_iret) { clock_interrupt(delta/1000, /* usec per tick */ (regs->efl & EFL_VM) || /* user mode */ ((regs->cs & 0x02) != 0), /* user mode */ - old_ipl == SPL0); /* base priority */ + old_ipl == SPL0, /* base priority */ + regs->eip); /* interrupted eip */ } else - clock_interrupt(delta/1000, FALSE, FALSE); + clock_interrupt(delta/1000, FALSE, FALSE, 0); } void hyp_p2m_init(void) { - unsigned long nb_pfns = atop(phys_last_addr); + unsigned long nb_pfns = vm_page_table_size(); #ifdef MACH_PSEUDO_PHYS #define P2M_PAGE_ENTRIES (PAGE_SIZE / sizeof(unsigned long)) unsigned long *l3 = (unsigned long *)phystokv(pmap_grab_page()), *l2 = NULL;