Index: uspace/lib/c/arch/ia32/include/atomic.h
===================================================================
--- uspace/lib/c/arch/ia32/include/atomic.h	(revision c916dfcd860e62fd9f68614026ddfcbdc9269c13)
+++ uspace/lib/c/arch/ia32/include/atomic.h	(revision c4a8e4a6d787a9acf91debd36e746fe8a11a6869)
@@ -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;
Index: uspace/lib/c/arch/ia32/include/ddi.h
===================================================================
--- uspace/lib/c/arch/ia32/include/ddi.h	(revision c916dfcd860e62fd9f68614026ddfcbdc9269c13)
+++ uspace/lib/c/arch/ia32/include/ddi.h	(revision c4a8e4a6d787a9acf91debd36e746fe8a11a6869)
@@ -44,7 +44,7 @@
 		uint8_t val;
 		asm volatile (
-			"inb %w1, %b0\n"
-			: "=a" (val)
-			: "d" (port)
+			"inb %w[port], %b[val]\n"
+			: [val] "=a" (val)
+			: [port] "d" (port)
 		);
 		return val;
@@ -59,7 +59,7 @@
 		uint16_t val;
 		asm volatile (
-			"inw %w1, %w0\n"
-			: "=a" (val)
-			: "d" (port)
+			"inw %w[port], %w[val]\n"
+			: [val] "=a" (val)
+			: [port] "d" (port)
 		);
 		return val;
@@ -74,7 +74,7 @@
 		uint32_t val;
 		asm volatile (
-			"inl %w1, %0\n"
-			: "=a" (val)
-			: "d" (port)
+			"inl %w[port], %[val]\n"
+			: [val] "=a" (val)
+			: [port] "d" (port)
 		);
 		return val;
@@ -88,6 +88,6 @@
 	if (port < (ioport8_t *) IO_SPACE_BOUNDARY) {
 		asm volatile (
-			"outb %b0, %w1\n"
-			:: "a" (val), "d" (port)
+			"outb %b[val], %w[port]\n"
+			:: [val] "a" (val), [port] "d" (port)
 		);	
 	} else {
@@ -100,6 +100,6 @@
 	if (port < (ioport16_t *) IO_SPACE_BOUNDARY) {
 		asm volatile (
-			"outw %w0, %w1\n"
-			:: "a" (val), "d" (port)
+			"outw %w[val], %w[port]\n"
+			:: [val] "a" (val), [port] "d" (port)
 		);
 	} else {
@@ -112,6 +112,6 @@
 	if (port < (ioport32_t *) IO_SPACE_BOUNDARY) {
 		asm volatile (
-			"outl %0, %w1\n"
-			:: "a" (val), "d" (port)
+			"outl %[val], %w[port]\n"
+			:: [val] "a" (val), [port] "d" (port)
 		);
 	} else {
