aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJack Steiner <steiner@sgi.com>2007-05-08 17:50:43 -0400
committerTony Luck <tony.luck@intel.com>2007-05-08 17:50:43 -0400
commit3be44b9cc33d26930cb3bb014f35f582c6522481 (patch)
tree09225c5f0fb4c6caa81bbdff216ec83a093e4d12 /include
parent8737d59579c5e61ea3d5da4bd63303159fd1cf7e (diff)
[IA64] Optional method to purge the TLB on SN systems
This patch adds an optional method for purging the TLB on SN IA64 systems. The change should not affect any non-SN system. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'include')
-rw-r--r--include/asm-ia64/hw_irq.h1
-rw-r--r--include/asm-ia64/tlbflush.h11
2 files changed, 12 insertions, 0 deletions
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h
index 27f9df6b9145..c054d7a9aaa7 100644
--- a/include/asm-ia64/hw_irq.h
+++ b/include/asm-ia64/hw_irq.h
@@ -66,6 +66,7 @@ extern int ia64_last_device_vector;
66#define IA64_PERFMON_VECTOR 0xee /* performanc monitor interrupt vector */ 66#define IA64_PERFMON_VECTOR 0xee /* performanc monitor interrupt vector */
67#define IA64_TIMER_VECTOR 0xef /* use highest-prio group 15 interrupt for timer */ 67#define IA64_TIMER_VECTOR 0xef /* use highest-prio group 15 interrupt for timer */
68#define IA64_MCA_WAKEUP_VECTOR 0xf0 /* MCA wakeup (must be >MCA_RENDEZ_VECTOR) */ 68#define IA64_MCA_WAKEUP_VECTOR 0xf0 /* MCA wakeup (must be >MCA_RENDEZ_VECTOR) */
69#define IA64_IPI_LOCAL_TLB_FLUSH 0xfc /* SMP flush local TLB */
69#define IA64_IPI_RESCHEDULE 0xfd /* SMP reschedule */ 70#define IA64_IPI_RESCHEDULE 0xfd /* SMP reschedule */
70#define IA64_IPI_VECTOR 0xfe /* inter-processor interrupt vector */ 71#define IA64_IPI_VECTOR 0xfe /* inter-processor interrupt vector */
71 72
diff --git a/include/asm-ia64/tlbflush.h b/include/asm-ia64/tlbflush.h
index cf9acb9bb1fb..e37f9fbf33af 100644
--- a/include/asm-ia64/tlbflush.h
+++ b/include/asm-ia64/tlbflush.h
@@ -27,9 +27,11 @@ extern void local_flush_tlb_all (void);
27#ifdef CONFIG_SMP 27#ifdef CONFIG_SMP
28 extern void smp_flush_tlb_all (void); 28 extern void smp_flush_tlb_all (void);
29 extern void smp_flush_tlb_mm (struct mm_struct *mm); 29 extern void smp_flush_tlb_mm (struct mm_struct *mm);
30 extern void smp_flush_tlb_cpumask (cpumask_t xcpumask);
30# define flush_tlb_all() smp_flush_tlb_all() 31# define flush_tlb_all() smp_flush_tlb_all()
31#else 32#else
32# define flush_tlb_all() local_flush_tlb_all() 33# define flush_tlb_all() local_flush_tlb_all()
34# define smp_flush_tlb_cpumask(m) local_flush_tlb_all()
33#endif 35#endif
34 36
35static inline void 37static inline void
@@ -94,6 +96,15 @@ flush_tlb_pgtables (struct mm_struct *mm, unsigned long start, unsigned long end
94 */ 96 */
95} 97}
96 98
99/*
100 * Flush the local TLB. Invoked from another cpu using an IPI.
101 */
102#ifdef CONFIG_SMP
103void smp_local_flush_tlb(void);
104#else
105#define smp_local_flush_tlb()
106#endif
107
97#define flush_tlb_kernel_range(start, end) flush_tlb_all() /* XXX fix me */ 108#define flush_tlb_kernel_range(start, end) flush_tlb_all() /* XXX fix me */
98 109
99#endif /* _ASM_IA64_TLBFLUSH_H */ 110#endif /* _ASM_IA64_TLBFLUSH_H */