|
@@ -119,6 +119,12 @@ struct paravirt_ops
|
|
|
|
|
|
void (*io_delay)(void);
|
|
|
|
|
|
+ void (*activate_mm)(struct mm_struct *prev,
|
|
|
+ struct mm_struct *next);
|
|
|
+ void (*dup_mmap)(struct mm_struct *oldmm,
|
|
|
+ struct mm_struct *mm);
|
|
|
+ void (*exit_mmap)(struct mm_struct *mm);
|
|
|
+
|
|
|
#ifdef CONFIG_X86_LOCAL_APIC
|
|
|
void (*apic_write)(unsigned long reg, unsigned long v);
|
|
|
void (*apic_write_atomic)(unsigned long reg, unsigned long v);
|
|
@@ -395,6 +401,23 @@ static inline void startup_ipi_hook(int phys_apicid, unsigned long start_eip,
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+static inline void paravirt_activate_mm(struct mm_struct *prev,
|
|
|
+ struct mm_struct *next)
|
|
|
+{
|
|
|
+ paravirt_ops.activate_mm(prev, next);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void arch_dup_mmap(struct mm_struct *oldmm,
|
|
|
+ struct mm_struct *mm)
|
|
|
+{
|
|
|
+ paravirt_ops.dup_mmap(oldmm, mm);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void arch_exit_mmap(struct mm_struct *mm)
|
|
|
+{
|
|
|
+ paravirt_ops.exit_mmap(mm);
|
|
|
+}
|
|
|
+
|
|
|
#define __flush_tlb() paravirt_ops.flush_tlb_user()
|
|
|
#define __flush_tlb_global() paravirt_ops.flush_tlb_kernel()
|
|
|
#define __flush_tlb_single(addr) paravirt_ops.flush_tlb_single(addr)
|