Index: kernel/generic/include/atomic.h
===================================================================
--- kernel/generic/include/atomic.h	(revision 077842c7d8763d465a4900cd0693e65cd9338385)
+++ kernel/generic/include/atomic.h	(revision e9d2905d090ff2994c1a8f2d7b4d0d4387d60ef7)
@@ -42,47 +42,44 @@
 typedef size_t atomic_count_t;
 typedef ssize_t atomic_signed_t;
-
-typedef struct {
-	volatile atomic_size_t count;
-} atomic_t;
+typedef atomic_size_t atomic_t;
 
 static inline void atomic_set(atomic_t *val, atomic_count_t i)
 {
-	atomic_store(&val->count, i);
+	atomic_store(val, i);
 }
 
 static inline atomic_count_t atomic_get(atomic_t *val)
 {
-	return atomic_load(&val->count);
+	return atomic_load(val);
 }
 
 static inline size_t atomic_predec(atomic_t *val)
 {
-	return atomic_fetch_sub(&val->count, 1) - 1;
+	return atomic_fetch_sub(val, 1) - 1;
 }
 
 static inline size_t atomic_preinc(atomic_t *val)
 {
-	return atomic_fetch_add(&val->count, 1) + 1;
+	return atomic_fetch_add(val, 1) + 1;
 }
 
 static inline size_t atomic_postdec(atomic_t *val)
 {
-	return atomic_fetch_sub(&val->count, 1);
+	return atomic_fetch_sub(val, 1);
 }
 
 static inline size_t atomic_postinc(atomic_t *val)
 {
-	return atomic_fetch_add(&val->count, 1);
+	return atomic_fetch_add(val, 1);
 }
 
 static inline void atomic_dec(atomic_t *val)
 {
-	atomic_fetch_sub(&val->count, 1);
+	atomic_fetch_sub(val, 1);
 }
 
 static inline void atomic_inc(atomic_t *val)
 {
-	atomic_fetch_add(&val->count, 1);
+	atomic_fetch_add(val, 1);
 }
 
@@ -92,5 +89,5 @@
 static inline bool test_and_set(atomic_t *val)
 {
-	return atomic_exchange(&val->count, 1);
+	return atomic_exchange(val, 1);
 }
 
Index: kernel/test/synch/semaphore1.c
===================================================================
--- kernel/test/synch/semaphore1.c	(revision 077842c7d8763d465a4900cd0693e65cd9338385)
+++ kernel/test/synch/semaphore1.c	(revision e9d2905d090ff2994c1a8f2d7b4d0d4387d60ef7)
@@ -115,7 +115,7 @@
 		waitq_wakeup(&can_start, WAKEUP_ALL);
 
-		while ((items_consumed.count != consumers) || (items_produced.count != producers)) {
+		while ((items_consumed != consumers) || (items_produced != producers)) {
 			TPRINTF("%zu consumers remaining, %zu producers remaining\n",
-			    consumers - items_consumed.count, producers - items_produced.count);
+			    consumers - items_consumed, producers - items_produced);
 			thread_sleep(1);
 		}
