Patch by Markus Pietrek, 04 May 2004:
Fix clear_bss code for ARM systems (all except s3c44b0 which
doesn't clear BSS at all?)
diff --git a/drivers/inca-ip_sw.c b/drivers/inca-ip_sw.c
index f8fe52e..ab22b4d 100644
--- a/drivers/inca-ip_sw.c
+++ b/drivers/inca-ip_sw.c
@@ -41,13 +41,21 @@
 
 
 #define DELAY	udelay(10000)
+  /* Sometimes the store word instruction hangs while writing to one
+   * of the Switch registers. Moving the instruction into a separate
+   * function somehow makes the problem go away.
+   */
+static void SWORD(volatile u32 * reg, u32 value)
+{
+	*reg = value;
+}
 
 #define DMA_WRITE_REG(reg, value) *((volatile u32 *)reg) = (u32)value;
 #define DMA_READ_REG(reg, value)    value = (u32)*((volatile u32*)reg)
 #define SW_WRITE_REG(reg, value)   \
-	*((volatile u32*)reg) = (u32)value;\
+	SWORD(reg, value);\
 	DELAY;\
-	*((volatile u32*)reg) = (u32)value;
+	SWORD(reg, value);
 
 #define SW_READ_REG(reg, value)	   \
 	value = (u32)*((volatile u32*)reg);\