return rc;
}
-static void noreturn continue_nonidle_domain(void)
-{
- check_wakeup_from_wait();
- reset_stack_and_jump(ret_from_intr);
-}
-
static int setup_compat_l4(struct vcpu *v)
{
struct page_info *pg;
FREE_XENHEAP_PAGE(d->arch.pv.gdt_ldt_l1tab);
}
+void noreturn continue_pv_domain(void);
int pv_domain_initialise(struct domain *d)
{
static const struct arch_csw pv_csw = {
.from = paravirt_ctxt_switch_from,
.to = paravirt_ctxt_switch_to,
- .tail = continue_nonidle_domain,
+ .tail = continue_pv_domain,
};
int rc = -ENOMEM;
.text
/* No special register assumptions. */
-ENTRY(ret_from_intr)
#ifdef CONFIG_PV
+ENTRY(continue_pv_domain)
+ call check_wakeup_from_wait
+ret_from_intr:
GET_CURRENT(bx)
testb $3, UREGS_cs(%rsp)
jz restore_all_xen
je test_all_events
jmp compat_test_all_events
#else
+ret_from_intr:
ASSERT_CONTEXT_IS_XEN
jmp restore_all_xen
#endif