--- c/jcpuid/src/jcpuid.c	2008-10-06 09:44:53.000000000 -0400
+++ c/jcpuid/src/jcpuid.c.new2	2010-12-27 09:41:53.000000000 -0500
@@ -19,6 +19,7 @@
 			mov d, edx
 		}
 	#else
+	#ifdef _LP64
 		//Use GCC assembler notation
 		asm 
 		(
@@ -29,6 +30,20 @@
 			  "=d"(d)
 			:"a"(iFunction)
 		);
+	#elif defined(__i386__)
+		asm 
+		(
+			"pushl %%ebx\n\t"
+			"cpuid\n\t"
+			"movl %%ebx, %%edi\n\t"
+			"popl %%ebx"
+			: "=a" (a),
+			  "=D" (b),
+			  "=c" (c),
+			  "=d" (d)
+			:"a"(iFunction)
+		);
+	#endif
 	#endif
 	return (*env)->NewObject(env, clsResult,constructor,a,b,c,d);
 }
