1 #ifndef _S390_TLBFLUSH_H
2 #define _S390_TLBFLUSH_H
5 #include <linux/sched.h>
6 #include <asm/processor.h>
7 #include <asm/pgalloc.h>
12 static inline void __tlb_flush_local(
void)
14 asm volatile(
"ptlb" : : :
"memory");
25 register unsigned long reg2 asm(
"2");
26 register unsigned long reg3 asm(
"3");
27 register unsigned long reg4 asm(
"4");
42 : :
"d" (
reg2),
"d" (
reg3),
"d" (
reg4),
"m" (dummy) :
"cc" );
54 if (cpumask_equal(mm_cpumask(mm), &local_cpumask))
61 #define __tlb_flush_full(mm) __tlb_flush_local()
62 #define __tlb_flush_global() __tlb_flush_local()
68 static inline void __tlb_flush_idte(
unsigned long asce)
71 " .insn rrf,0xb98e0000,0,%0,%1,0"
72 : :
"a" (2048),
"a" (asce) :
"cc" );
75 static inline void __tlb_flush_mm(
struct mm_struct * mm)
77 if (
unlikely(cpumask_empty(mm_cpumask(mm))))
85 __tlb_flush_idte((
unsigned long) mm->
pgd |
91 static inline void __tlb_flush_mm_cond(
struct mm_struct * mm)
117 #define flush_tlb() do { } while (0)
118 #define flush_tlb_all() do { } while (0)
119 #define flush_tlb_page(vma, addr) do { } while (0)
123 __tlb_flush_mm_cond(mm);
127 unsigned long start,
unsigned long end)
129 __tlb_flush_mm_cond(vma->
vm_mm);