libata: reimplement reset sequencing
[powerpc.git] / include / asm-m68knommu / system.h
index 53cbbad..2a81449 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef _M68KNOMMU_SYSTEM_H
 #define _M68KNOMMU_SYSTEM_H
 
-#include <linux/config.h> /* get configuration macros */
 #include <linux/linkage.h>
 #include <asm/segment.h>
 #include <asm/entry.h>
@@ -107,7 +106,6 @@ asmlinkage void resume(void);
 #define wmb()  asm volatile (""   : : :"memory")
 #define set_rmb(var, value)    do { xchg(&var, value); } while (0)
 #define set_mb(var, value)     set_rmb(var, value)
-#define set_wmb(var, value)    do { var = value; wmb(); } while (0)
 
 #ifdef CONFIG_SMP
 #define smp_mb()       mb()
@@ -312,6 +310,19 @@ cmpxchg(volatile int *p, int old, int new)
        moveb #0x80, (%a0);             \
        ");                             \
 })
+#elif defined(CONFIG_M520x)
+       /*
+        * The MCF5208 has a bit (SOFTRST) in memory (Reset Control Register 
+        * RCR), that when set, resets the MCF5208.
+        */
+#define HARD_RESET_NOW()               \
+({                                     \
+       unsigned char volatile *reset;  \
+       asm("move.w     #0x2700, %sr"); \
+       reset = ((volatile unsigned short *)(MCF_IPSBAR + 0xA0000));    \
+       while(1)                        \
+               *reset |= 0x80;         \
+})
 #else
 #define HARD_RESET_NOW() ({            \
         asm("                          \