patch-2.3.47 linux/include/asm-alpha/pgalloc.h

Next file: linux/include/asm-alpha/smp.h
Previous file: linux/include/asm-alpha/pci.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.46/linux/include/asm-alpha/pgalloc.h linux/include/asm-alpha/pgalloc.h
@@ -9,7 +9,18 @@
 #define flush_cache_range(mm, start, end)	do { } while (0)
 #define flush_cache_page(vma, vmaddr)		do { } while (0)
 #define flush_page_to_ram(page)			do { } while (0)
-#define flush_icache_range(start, end)		do { } while (0)
+/*
+ * The icache is not coherent with the dcache on alpha, thus before
+ * running self modified code like kernel modules we must always run
+ * an imb().
+ */
+#ifndef __SMP__
+#define flush_icache_range(start, end)		imb()
+#else
+#define flush_icache_range(start, end)		smp_imb()
+extern void smp_imb(void);
+#endif
+#define flush_icache_page(vma, page)		do { } while (0)
 
 /*
  * Use a few helper functions to hide the ugly broken ASN
@@ -95,6 +106,18 @@
 	flush_tlb_current(current->mm);
 }
 
+/*
+ * Flush a specified range of user mapping page tables
+ * from TLB.
+ * Although Alpha uses VPTE caches, this can be a nop, as Alpha does
+ * not have finegrained tlb flushing, so it will flush VPTE stuff
+ * during next flush_tlb_range.
+ */
+static inline void flush_tlb_pgtables(struct mm_struct *mm,
+	unsigned long start, unsigned long end)
+{
+}
+
 #ifndef __SMP__
 /*
  * Flush everything (kernel mapping may also have
@@ -143,18 +166,6 @@
 	unsigned long start, unsigned long end)
 {
 	flush_tlb_mm(mm);
-}
-
-/*
- * Flush a specified range of user mapping page tables
- * from TLB.
- * Although Alpha uses VPTE caches, this can be a nop, as Alpha does
- * not have finegrained tlb flushing, so it will flush VPTE stuff
- * during next flush_tlb_range.
- */
-static inline void flush_tlb_pgtables(struct mm_struct *mm,
-	unsigned long start, unsigned long end)
-{
 }
 
 #else /* __SMP__ */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)