diff --git a/include/asm-cris/atomic.h b/include/asm-cris/atomic.h
index b3dfea5..70605b0 100644
--- a/include/asm-cris/atomic.h
+++ b/include/asm-cris/atomic.h
@@ -4,21 +4,14 @@
 #define __ASM_CRIS_ATOMIC__
 
 #include <asm/system.h>
+#include <asm/arch/atomic.h>
 
 /*
  * Atomic operations that C can't guarantee us.  Useful for
  * resource counting etc..
  */
 
-/*
- * Make sure gcc doesn't try to be clever and move things around
- * on us. We need to use _exactly_ the address the user gave us,
- * not some alias that contains the same information.
- */
-
-#define __atomic_fool_gcc(x) (*(struct { int a[100]; } *)x)
-
-typedef struct { int counter; } atomic_t;
+typedef struct { volatile int counter; } atomic_t;
 
 #define ATOMIC_INIT(i)  { (i) }
 
@@ -30,29 +23,26 @@
 extern __inline__ void atomic_add(int i, volatile atomic_t *v)
 {
 	unsigned long flags;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	v->counter += i;
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 }
 
 extern __inline__ void atomic_sub(int i, volatile atomic_t *v)
 {
 	unsigned long flags;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	v->counter -= i;
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 }
 
 extern __inline__ int atomic_add_return(int i, volatile atomic_t *v)
 {
 	unsigned long flags;
 	int retval;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	retval = (v->counter += i);
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 	return retval;
 }
 
@@ -62,10 +52,9 @@
 {
 	unsigned long flags;
 	int retval;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	retval = (v->counter -= i);
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 	return retval;
 }
 
@@ -73,39 +62,35 @@
 {
 	int retval;
 	unsigned long flags;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	retval = (v->counter -= i) == 0;
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 	return retval;
 }
 
 extern __inline__ void atomic_inc(volatile atomic_t *v)
 {
 	unsigned long flags;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	(v->counter)++;
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 }
 
 extern __inline__ void atomic_dec(volatile atomic_t *v)
 {
 	unsigned long flags;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	(v->counter)--;
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 }
 
 extern __inline__ int atomic_inc_return(volatile atomic_t *v)
 {
 	unsigned long flags;
 	int retval;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	retval = (v->counter)++;
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 	return retval;
 }
 
@@ -113,20 +98,18 @@
 {
 	unsigned long flags;
 	int retval;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	retval = (v->counter)--;
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 	return retval;
 }
 extern __inline__ int atomic_dec_and_test(volatile atomic_t *v)
 {
 	int retval;
 	unsigned long flags;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	retval = --(v->counter) == 0;
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 	return retval;
 }
 
@@ -134,10 +117,9 @@
 {
 	int retval;
 	unsigned long flags;
-	local_save_flags(flags);
-	local_irq_disable();
+	cris_atomic_save(v, flags);
 	retval = ++(v->counter) == 0;
-	local_irq_restore(flags);
+	cris_atomic_restore(v, flags);
 	return retval;
 }
 
