1 #ifndef XEN_OPS_H 2 #define XEN_OPS_H 3 4 #include <linux/init.h> 5 #include <linux/clocksource.h> 6 #include <linux/irqreturn.h> 7 #include <xen/xen-ops.h> 8 9 /* These are code, but not functions. Defined in entry.S */ 10 extern const char xen_hypervisor_callback[]; 11 extern const char xen_failsafe_callback[]; 12 13 struct trap_info; 14 void xen_copy_trap_info(struct trap_info *traps); 15 16 DECLARE_PER_CPU(unsigned long, xen_cr3); 17 DECLARE_PER_CPU(unsigned long, xen_current_cr3); 18 19 extern struct start_info *xen_start_info; 20 extern struct shared_info xen_dummy_shared_info; 21 extern struct shared_info *HYPERVISOR_shared_info; 22 23 void xen_setup_mfn_list_list(void); 24 void xen_setup_shared_info(void); 25 26 char * __init xen_memory_setup(void); 27 void __init xen_arch_setup(void); 28 void __init xen_init_IRQ(void); 29 void xen_enable_sysenter(void); 30 void xen_enable_syscall(void); 31 void xen_vcpu_restore(void); 32 33 void __init xen_build_dynamic_phys_to_machine(void); 34 35 void xen_init_irq_ops(void); 36 void xen_setup_timer(int cpu); 37 void xen_teardown_timer(int cpu); 38 cycle_t xen_clocksource_read(void); 39 void xen_setup_cpu_clockevents(void); 40 unsigned long xen_tsc_khz(void); 41 void __init xen_time_init(void); 42 unsigned long xen_get_wallclock(void); 43 int xen_set_wallclock(unsigned long time); 44 unsigned long long xen_sched_clock(void); 45 46 irqreturn_t xen_debug_interrupt(int irq, void *dev_id); 47 48 bool xen_vcpu_stolen(int vcpu); 49 50 void xen_mark_init_mm_pinned(void); 51 52 void __init xen_setup_vcpu_info_placement(void); 53 54 #ifdef CONFIG_SMP 55 void xen_smp_init(void); 56 57 void __init xen_init_spinlocks(void); 58 __cpuinit void xen_init_lock_cpu(int cpu); 59 void xen_uninit_lock_cpu(int cpu); 60 61 extern cpumask_t xen_cpu_initialized_map; 62 #else 63 static inline void xen_smp_init(void) {} 64 #endif 65 66 67 /* Declare an asm function, along with symbols needed to make it 68 inlineable */ 69 #define DECL_ASM(ret, name, ...) \ 70 ret name(__VA_ARGS__); \ 71 extern char name##_end[]; \ 72 extern char name##_reloc[] \ 73 74 DECL_ASM(void, xen_irq_enable_direct, void); 75 DECL_ASM(void, xen_irq_disable_direct, void); 76 DECL_ASM(unsigned long, xen_save_fl_direct, void); 77 DECL_ASM(void, xen_restore_fl_direct, unsigned long); 78 79 /* These are not functions, and cannot be called normally */ 80 void xen_iret(void); 81 void xen_sysexit(void); 82 void xen_sysret32(void); 83 void xen_sysret64(void); 84 void xen_adjust_exception_frame(void); 85 86 #endif /* XEN_OPS_H */ 87