static void vcpu_destroy_pagetables(struct vcpu *v);
-static void continue_idle_domain(struct vcpu *v)
-{
- reset_stack_and_jump(idle_loop);
-}
-
-static void continue_nonidle_domain(struct vcpu *v)
-{
- check_wakeup_from_wait();
- reset_stack_and_jump(ret_from_intr);
-}
-
static void default_idle(void)
{
local_irq_disable();
(*dead_idle)();
}
-void idle_loop(void)
+static void idle_loop(void)
{
for ( ; ; )
{
reset_stack_and_jump(idle_loop);
}
+static void continue_idle_domain(struct vcpu *v)
+{
+ reset_stack_and_jump(idle_loop);
+}
+
+static void continue_nonidle_domain(struct vcpu *v)
+{
+ check_wakeup_from_wait();
+ reset_stack_and_jump(ret_from_intr);
+}
+
void dump_pageframe_info(struct domain *d)
{
struct page_info *page;
#include <asm/debugger.h>
#include <asm/xstate.h>
+void svm_asm_do_resume(void);
+
u32 svm_feature_flags;
/* Indicates whether guests may use EFER.LMSLE. */
}
}
-void init_done(void)
+static void noinline init_done(void)
{
/* Free (or page-protect) the init areas. */
memset(__init_begin, 0xcc, __init_end - __init_begin); /* int3 poison */
#endif
#include <asm/processor.h>
+#ifndef __ASSEMBLY__
+void ret_from_intr(void);
+#endif
+
#ifdef __x86_64__
#include <asm/x86_64/asm_defns.h>
#else
#define reset_stack_and_jump(__fn) \
__asm__ __volatile__ ( \
- "mov %0,%%"__OP"sp; jmp "STR(__fn) \
- : : "r" (guest_cpu_user_regs()) : "memory" )
+ "mov %0,%%"__OP"sp; jmp %c1" \
+ : : "r" (guest_cpu_user_regs()), "i" (__fn) : "memory" )
#define schedule_tail(vcpu) (((vcpu)->arch.schedule_tail)(vcpu))
extern bool_t early_boot;
extern unsigned long xenheap_initial_phys_start;
-void init_done(void);
-
void early_cpu_init(void);
void early_time_init(void);
void early_page_fault(void);