Index: kernel/arch/sparc64/include/atomic.h
===================================================================
--- kernel/arch/sparc64/include/atomic.h	(revision ac6ee45bc94d73efe9917812965534ddff6bef6a)
+++ kernel/arch/sparc64/include/atomic.h	(revision ae7f6fb75347ada51aca1b40d5c46352dda49257)
@@ -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 (
