summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Gibson <dgibson@samba.org>2002-06-27 05:36:41 -0400
committerPaul Mackerras <paulus@samba.org>2002-06-27 05:36:41 -0400
commit856091affeb5399ba13a2b2c8266918727583fb3 (patch)
tree20d9f33a9e2ad3423d28c353694bd810724e724a /include
parentf200709a8f1916813064511162e33c9d4bffb013 (diff)
PPC32: Fixes and cleanups for PPC40x processors.
Add branch-to-self after return-from-interrupt, fix critical exception handling, fix synchronization in set_context, other cleanups.
Diffstat (limited to 'include')
-rw-r--r--include/asm-ppc/ppc_asm.h5
-rw-r--r--include/asm-ppc/tlbflush.h9
2 files changed, 8 insertions, 6 deletions
diff --git a/include/asm-ppc/ppc_asm.h b/include/asm-ppc/ppc_asm.h
index 0c33c12f3939..f11b229000e7 100644
--- a/include/asm-ppc/ppc_asm.h
+++ b/include/asm-ppc/ppc_asm.h
@@ -51,7 +51,6 @@
/*
* Once a version of gas that understands the AltiVec instructions
- * is freely available, we can do this the normal way... - paulus
*/
#define LVX(r,a,b) .long (31<<26)+((r)<<21)+((a)<<16)+((b)<<11)+(103<<1)
#define STVX(r,a,b) .long (31<<26)+((r)<<21)+((a)<<16)+((b)<<11)+(231<<1)
@@ -169,7 +168,11 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
#else
#define FIX_SRR1(ra, rb)
+#ifndef CONFIG_40x
#define RFI rfi
+#else
+#define RFI rfi; b . /* Prevent prefetch past rfi */
+#endif
#define MTMSRD(r) mtmsr r
#define CLR_TOP32(r)
#endif /* CONFIG_PPC64BRIDGE */
diff --git a/include/asm-ppc/tlbflush.h b/include/asm-ppc/tlbflush.h
index 83e6f1ae6c35..af4295e46861 100644
--- a/include/asm-ppc/tlbflush.h
+++ b/include/asm-ppc/tlbflush.h
@@ -21,21 +21,20 @@ extern void _tlbie(unsigned long address);
extern void _tlbia(void);
#if defined(CONFIG_4xx)
-#define __tlbia() asm volatile ("tlbia; sync" : : : "memory")
static inline void flush_tlb_all(void)
- { __tlbia(); }
+ { _tlbia(); }
static inline void flush_tlb_mm(struct mm_struct *mm)
- { __tlbia(); }
+ { _tlbia(); }
static inline void flush_tlb_page(struct vm_area_struct *vma,
unsigned long vmaddr)
{ _tlbie(vmaddr); }
static inline void flush_tlb_range(struct vm_area_struct *vma,
unsigned long start, unsigned long end)
- { __tlbia(); }
+ { _tlbia(); }
static inline void flush_tlb_kernel_range(unsigned long start,
unsigned long end)
- { __tlbia(); }
+ { _tlbia(); }
#define update_mmu_cache(vma, addr, pte) do { } while (0)
#elif defined(CONFIG_8xx)