i386 fixes

diff --git a/MCONFIG b/MCONFIG
index cb88b0f..49b9777 100644
--- a/MCONFIG
+++ b/MCONFIG
@@ -26,7 +26,7 @@
 
 CRT0    = $(KLIBSRC)/crt0.o
 KLIBC   = $(KLIBSRC)/libc.a
-LIBGCC  = $(shell $(CC) --print-libgcc)
+LIBGCC  = # $(shell $(CC) --print-libgcc)
 
 #
 # Include arch-specific rule fragments
diff --git a/include/arch/i386/klibc/diverr.h b/include/arch/i386/klibc/diverr.h
index 1f7ecbf..410aba0 100644
--- a/include/arch/i386/klibc/diverr.h
+++ b/include/arch/i386/klibc/diverr.h
@@ -10,7 +10,7 @@
 static __inline__ void
 __divide_error(void)
 {
-  asm volatile("divl %0" : "=rm" (0));
+  asm volatile("divl %0" :: "rm" (0) : "eax", "edx");
 }
 
 #endif /* _KLIBC_DIVERR_H */
diff --git a/klibc/arch/i386/MCONFIG b/klibc/arch/i386/MCONFIG
index 6e661df..cdf2a10 100644
--- a/klibc/arch/i386/MCONFIG
+++ b/klibc/arch/i386/MCONFIG
@@ -11,7 +11,7 @@
 # This doesn't work right now because gcc 3.2 (at least) calls
 # libgcc with the default calling convention instead of forcing
 # them to be cdecl
-# REGPARM = -mregparm=3 -DREGPARM
+REGPARM = -mregparm=3 -DREGPARM
 
 OPTFLAGS = $(REGPARM) -march=i386 -Os -fomit-frame-pointer \
 	   -malign-functions=0 -malign-jumps=0 -malign-loops=0
diff --git a/klibc/arch/i386/include/klibc/diverr.h b/klibc/arch/i386/include/klibc/diverr.h
index 1f7ecbf..410aba0 100644
--- a/klibc/arch/i386/include/klibc/diverr.h
+++ b/klibc/arch/i386/include/klibc/diverr.h
@@ -10,7 +10,7 @@
 static __inline__ void
 __divide_error(void)
 {
-  asm volatile("divl %0" : "=rm" (0));
+  asm volatile("divl %0" :: "rm" (0) : "eax", "edx");
 }
 
 #endif /* _KLIBC_DIVERR_H */