aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-i386/paravirt.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-i386/paravirt.h')
-rw-r--r--include/asm-i386/paravirt.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/include/asm-i386/paravirt.h b/include/asm-i386/paravirt.h
index 6317e0a4d735..f8319cae2ac5 100644
--- a/include/asm-i386/paravirt.h
+++ b/include/asm-i386/paravirt.h
@@ -94,6 +94,8 @@ struct paravirt_ops
94 94
95 u64 (*read_tsc)(void); 95 u64 (*read_tsc)(void);
96 u64 (*read_pmc)(void); 96 u64 (*read_pmc)(void);
97 u64 (*get_scheduled_cycles)(void);
98 unsigned long (*get_cpu_khz)(void);
97 99
98 void (*load_tr_desc)(void); 100 void (*load_tr_desc)(void);
99 void (*load_gdt)(const struct Xgt_desc_struct *); 101 void (*load_gdt)(const struct Xgt_desc_struct *);
@@ -115,7 +117,6 @@ struct paravirt_ops
115 void (*set_iopl_mask)(unsigned mask); 117 void (*set_iopl_mask)(unsigned mask);
116 118
117 void (*io_delay)(void); 119 void (*io_delay)(void);
118 void (*const_udelay)(unsigned long loops);
119 120
120#ifdef CONFIG_X86_LOCAL_APIC 121#ifdef CONFIG_X86_LOCAL_APIC
121 void (*apic_write)(unsigned long reg, unsigned long v); 122 void (*apic_write)(unsigned long reg, unsigned long v);
@@ -129,6 +130,8 @@ struct paravirt_ops
129 void (*flush_tlb_kernel)(void); 130 void (*flush_tlb_kernel)(void);
130 void (*flush_tlb_single)(u32 addr); 131 void (*flush_tlb_single)(u32 addr);
131 132
133 void (fastcall *map_pt_hook)(int type, pte_t *va, u32 pfn);
134
132 void (*alloc_pt)(u32 pfn); 135 void (*alloc_pt)(u32 pfn);
133 void (*alloc_pd)(u32 pfn); 136 void (*alloc_pd)(u32 pfn);
134 void (*alloc_pd_clone)(u32 pfn, u32 clonepfn, u32 start, u32 count); 137 void (*alloc_pd_clone)(u32 pfn, u32 clonepfn, u32 start, u32 count);
@@ -183,9 +186,9 @@ static inline int set_wallclock(unsigned long nowtime)
183 return paravirt_ops.set_wallclock(nowtime); 186 return paravirt_ops.set_wallclock(nowtime);
184} 187}
185 188
186static inline void do_time_init(void) 189static inline void (*choose_time_init(void))(void)
187{ 190{
188 return paravirt_ops.time_init(); 191 return paravirt_ops.time_init;
189} 192}
190 193
191/* The paravirtualized CPUID instruction. */ 194/* The paravirtualized CPUID instruction. */
@@ -273,6 +276,9 @@ static inline void halt(void)
273 276
274#define rdtscll(val) (val = paravirt_ops.read_tsc()) 277#define rdtscll(val) (val = paravirt_ops.read_tsc())
275 278
279#define get_scheduled_cycles(val) (val = paravirt_ops.get_scheduled_cycles())
280#define calculate_cpu_khz() (paravirt_ops.get_cpu_khz())
281
276#define write_tsc(val1,val2) wrmsr(0x10, val1, val2) 282#define write_tsc(val1,val2) wrmsr(0x10, val1, val2)
277 283
278#define rdpmc(counter,low,high) do { \ 284#define rdpmc(counter,low,high) do { \
@@ -349,6 +355,8 @@ static inline void startup_ipi_hook(int phys_apicid, unsigned long start_eip,
349#define __flush_tlb_global() paravirt_ops.flush_tlb_kernel() 355#define __flush_tlb_global() paravirt_ops.flush_tlb_kernel()
350#define __flush_tlb_single(addr) paravirt_ops.flush_tlb_single(addr) 356#define __flush_tlb_single(addr) paravirt_ops.flush_tlb_single(addr)
351 357
358#define paravirt_map_pt_hook(type, va, pfn) paravirt_ops.map_pt_hook(type, va, pfn)
359
352#define paravirt_alloc_pt(pfn) paravirt_ops.alloc_pt(pfn) 360#define paravirt_alloc_pt(pfn) paravirt_ops.alloc_pt(pfn)
353#define paravirt_release_pt(pfn) paravirt_ops.release_pt(pfn) 361#define paravirt_release_pt(pfn) paravirt_ops.release_pt(pfn)
354 362