Index: uspace/lib/c/arch/ia32/include/atomic.h
===================================================================
--- uspace/lib/c/arch/ia32/include/atomic.h	(revision 1e891d04a007a50f5ff2f8d3cda19631f92b76e6)
+++ uspace/lib/c/arch/ia32/include/atomic.h	(revision 26e7d6da331e8d35b5e83880a9740de5e9e4bd99)
@@ -42,16 +42,30 @@
 static inline void atomic_inc(atomic_t *val)
 {
+#ifdef __PCC__
 	asm volatile (
 		"lock incl %0\n"
 		: "+m" (val->count)
 	);
+#else
+	asm volatile (
+		"lock incl %[count]\n"
+		: [count] "+m" (val->count)
+	);
+#endif
 }
 
 static inline void atomic_dec(atomic_t *val)
 {
+#ifdef __PCC__
 	asm volatile (
 		"lock decl %0\n"
 		: "+m" (val->count)
 	);
+#else
+	asm volatile (
+		"lock decl %[count]\n"
+		: [count] "+m" (val->count)
+	);
+#endif
 }
 
@@ -60,4 +74,5 @@
 	atomic_count_t r = 1;
 	
+#ifdef __PCC__
 	asm volatile (
 		"lock xaddl %1, %0\n"
@@ -65,4 +80,11 @@
 		  "+r" (r)
 	);
+#else
+	asm volatile (
+		"lock xaddl %[r], %[count]\n"
+		: [count] "+m" (val->count),
+		  [r] "+r" (r)
+	);
+#endif
 	
 	return r;
@@ -73,4 +95,5 @@
 	atomic_count_t r = -1;
 	
+#ifdef __PCC__
 	asm volatile (
 		"lock xaddl %1, %0\n"
@@ -78,4 +101,11 @@
 		  "+r" (r)
 	);
+#else
+	asm volatile (
+		"lock xaddl %[r], %[count]\n"
+		: [count] "+m" (val->count),
+		  [r] "+r" (r)
+	);
+#endif
 	
 	return r;
