Index: kernel/arch/sparc64/include/atomic.h
===================================================================
--- kernel/arch/sparc64/include/atomic.h	(revision 46d8eb9b258c351fc7a0ec7a45162776b8adc3a2)
+++ kernel/arch/sparc64/include/atomic.h	(revision 67455927fbc8c97908cd6c30a3647ae692112544)
@@ -38,4 +38,5 @@
 #include <arch/barrier.h>
 #include <arch/types.h>
+#include <preemption.h>
 
 /** Atomic add operation.
@@ -57,5 +58,6 @@
 		a = *((uint64_t *) x);
 		b = a + i;
-		asm volatile ("casx %0, %2, %1\n" : "+m" (*((uint64_t *)x)), "+r" (b) : "r" (a));
+		asm volatile ("casx %0, %2, %1\n" : "+m" (*((uint64_t *)x)),
+		    "+r" (b) : "r" (a));
 	} while (a != b);
 
@@ -98,5 +100,6 @@
 	volatile uintptr_t x = (uint64_t) &val->count;
 
-	asm volatile ("casx %0, %2, %1\n" : "+m" (*((uint64_t *) x)), "+r" (v) : "r" (0));
+	asm volatile ("casx %0, %2, %1\n" : "+m" (*((uint64_t *) x)),
+	    "+r" (v) : "r" (0));
 
 	return v;
@@ -109,4 +112,6 @@
 
 	volatile uintptr_t x = (uint64_t) &val->count;
+
+	preemption_disable();
 
 	asm volatile (
