Index: uspace/lib/c/arch/abs32le/include/types.h
===================================================================
--- uspace/lib/c/arch/abs32le/include/types.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/abs32le/include/types.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -52,4 +52,5 @@
 
 typedef uint32_t uintptr_t;
+typedef int32_t intptr_t;
 typedef uint32_t atomic_count_t;
 typedef int32_t atomic_signed_t;
Index: uspace/lib/c/arch/amd64/include/atomic.h
===================================================================
--- uspace/lib/c/arch/amd64/include/atomic.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/amd64/include/atomic.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -44,16 +44,30 @@
 static inline void atomic_inc(atomic_t *val)
 {
+#ifdef __PCC__
+	asm volatile (
+		"lock incq %0\n"
+		: "+m" (val->count)
+	);
+#else
 	asm volatile (
 		"lock incq %[count]\n"
 		: [count] "+m" (val->count)
 	);
+#endif
 }
 
 static inline void atomic_dec(atomic_t *val)
 {
+#ifdef __PCC__
+	asm volatile (
+		"lock decq %0\n"
+		: "+m" (val->count)
+	);
+#else
 	asm volatile (
 		"lock decq %[count]\n"
 		: [count] "+m" (val->count)
 	);
+#endif
 }
 
@@ -62,4 +76,11 @@
 	atomic_count_t r = 1;
 	
+#ifdef __PCC__
+	asm volatile (
+		"lock xaddq %1, %0\n"
+		: "+m" (val->count),
+		  "+r" (r)
+	);
+#else
 	asm volatile (
 		"lock xaddq %[r], %[count]\n"
@@ -67,4 +88,5 @@
 		  [r] "+r" (r)
 	);
+#endif
 	
 	return r;
@@ -75,4 +97,11 @@
 	atomic_count_t r = -1;
 	
+#ifdef __PCC__
+	asm volatile (
+		"lock xaddq %1, %0\n"
+		: "+m" (val->count),
+		  "+r" (r)
+	);
+#else
 	asm volatile (
 		"lock xaddq %[r], %[count]\n"
@@ -80,4 +109,5 @@
 		  [r] "+r" (r)
 	);
+#endif
 	
 	return r;
Index: uspace/lib/c/arch/amd64/include/types.h
===================================================================
--- uspace/lib/c/arch/amd64/include/types.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/amd64/include/types.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -52,4 +52,5 @@
 
 typedef uint64_t uintptr_t;
+typedef int64_t intptr_t;
 typedef uint64_t atomic_count_t;
 typedef int64_t atomic_signed_t;
Index: uspace/lib/c/arch/arm32/include/types.h
===================================================================
--- uspace/lib/c/arch/arm32/include/types.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/arm32/include/types.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -53,4 +53,5 @@
 
 typedef uint32_t uintptr_t;
+typedef int32_t intptr_t;
 typedef uint32_t atomic_count_t;
 typedef int32_t atomic_signed_t;
Index: uspace/lib/c/arch/ia32/include/atomic.h
===================================================================
--- uspace/lib/c/arch/ia32/include/atomic.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/ia32/include/atomic.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -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,11 @@
 	atomic_count_t r = 1;
 	
+#ifdef __PCC__
+	asm volatile (
+		"lock xaddl %1, %0\n"
+		: "+m" (val->count),
+		  "+r" (r)
+	);
+#else
 	asm volatile (
 		"lock xaddl %[r], %[count]\n"
@@ -65,4 +86,5 @@
 		  [r] "+r" (r)
 	);
+#endif
 	
 	return r;
@@ -73,4 +95,11 @@
 	atomic_count_t r = -1;
 	
+#ifdef __PCC__
+	asm volatile (
+		"lock xaddl %1, %0\n"
+		: "+m" (val->count),
+		  "+r" (r)
+	);
+#else
 	asm volatile (
 		"lock xaddl %[r], %[count]\n"
@@ -78,4 +107,5 @@
 		  [r] "+r" (r)
 	);
+#endif
 	
 	return r;
Index: uspace/lib/c/arch/ia32/include/types.h
===================================================================
--- uspace/lib/c/arch/ia32/include/types.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/ia32/include/types.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -52,4 +52,5 @@
 
 typedef uint32_t uintptr_t;
+typedef int32_t intptr_t;
 typedef uint32_t atomic_count_t;
 typedef int32_t atomic_signed_t;
Index: uspace/lib/c/arch/ia64/include/types.h
===================================================================
--- uspace/lib/c/arch/ia64/include/types.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/ia64/include/types.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -62,4 +62,5 @@
 
 typedef uint64_t uintptr_t;
+typedef int64_t intptr_t;
 typedef uint64_t atomic_count_t;
 typedef int64_t atomic_signed_t;
Index: uspace/lib/c/arch/mips32/include/types.h
===================================================================
--- uspace/lib/c/arch/mips32/include/types.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/mips32/include/types.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -53,4 +53,5 @@
 
 typedef uint32_t uintptr_t;
+typedef int32_t intptr_t;
 typedef uint32_t atomic_count_t;
 typedef int32_t atomic_signed_t;
Index: uspace/lib/c/arch/mips64/include/types.h
===================================================================
--- uspace/lib/c/arch/mips64/include/types.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/mips64/include/types.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -53,4 +53,5 @@
 
 typedef uint64_t uintptr_t;
+typedef int64_t intptr_t;
 typedef uint64_t atomic_count_t;
 typedef int64_t atomic_signed_t;
Index: uspace/lib/c/arch/ppc32/include/types.h
===================================================================
--- uspace/lib/c/arch/ppc32/include/types.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/ppc32/include/types.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -52,4 +52,5 @@
 
 typedef uint32_t uintptr_t;
+typedef int32_t intptr_t;
 typedef uint32_t atomic_count_t;
 typedef int32_t atomic_signed_t;
Index: uspace/lib/c/arch/sparc64/include/types.h
===================================================================
--- uspace/lib/c/arch/sparc64/include/types.h	(revision 80a96d2355e43d996baf70b026fae98a9d19add6)
+++ uspace/lib/c/arch/sparc64/include/types.h	(revision 888207c9d8358bdf0e88e8d9d3da66b3b293a58b)
@@ -52,4 +52,5 @@
 
 typedef uint64_t uintptr_t;
+typedef int64_t intptr_t;
 typedef uint64_t atomic_count_t;
 typedef int64_t atomic_signed_t;
