Index: kernel/arch/ia32/include/barrier.h
===================================================================
--- kernel/arch/ia32/include/barrier.h	(revision 8b6930d5d4a9a2fdd17c45b45770dd51a1d956a6)
+++ kernel/arch/ia32/include/barrier.h	(revision a6dffb87dcaf2a7ccc2024825b36ea3c06c77e48)
@@ -54,4 +54,5 @@
 NO_TRACE static inline void cpuid_serialization(void)
 {
+#ifndef __IN_SHARED_LIBC__
 	asm volatile (
 		"xorl %%eax, %%eax\n"
@@ -59,4 +60,14 @@
 		::: "eax", "ebx", "ecx", "edx", "memory"
 	);
+#else
+	/* Must not clobber PIC register ebx */
+	asm volatile (
+		"movl %%ebx, %%esi\n"
+		"xorl %%eax, %%eax\n"
+		"cpuid\n"
+		"movl %%esi, %%ebx\n"
+		::: "eax", "ecx", "edx", "esi", "memory"
+	);
+#endif
 }
 
