diff --git a/MCONFIG b/MCONFIG
index 0b6575c..c9e9b70 100644
--- a/MCONFIG
+++ b/MCONFIG
@@ -50,3 +50,6 @@
 # Include arch-specific rule fragments
 #
 include $(KLIBSRC)/arch/$(ARCH)/MCONFIG
+
+# How to tell the linker main() is the entrypoint
+EMAIN ?= -e main
diff --git a/ash/Makefile b/ash/Makefile
index 0f462dc..66bf533 100644
--- a/ash/Makefile
+++ b/ash/Makefile
@@ -38,7 +38,7 @@
 	$(STRIP) $@
 
 $(PROG).shared: $(OBJS) $(CRTSHARED) $(LIBSHARED) $(LIBGCC)
-	$(LD) $(LDFLAGS) -o $(PROG).shared -e main $(CRTSHARED) $(OBJS) -R $(LIBSHARED) $(LIBGCC)
+	$(LD) $(LDFLAGS) -o $(PROG).shared $(EMAIN) $(CRTSHARED) $(OBJS) -R $(LIBSHARED) $(LIBGCC)
 	cp -f $@ $@.g
 	$(STRIP) $@
 
diff --git a/klibc/arch/cris/MCONFIG b/klibc/arch/cris/MCONFIG
index 4ff7e05..646cd82 100644
--- a/klibc/arch/cris/MCONFIG
+++ b/klibc/arch/cris/MCONFIG
@@ -15,7 +15,7 @@
 # calls, and work on the memory models for this architecture
 # 224 MB - normal binaries start at 0
 # (lib?)gcc on cris seems to insist on producing .init and .fini sections
-SHAREDFLAGS     = -Wl,--section-start,.init=0x0e000100
+SHAREDFLAGS     = --section-start .init=0x0e000100
 
 # The CRIS compiler needs an -iprefix to find libgcc includes when
 # nostdinc is used. It also needs -mlinux to compile linux applications.
@@ -23,8 +23,7 @@
 ARCHREQFLAGS = -iprefix $(INCLUDE_PREFIX) -mlinux
 
 # How to tell the linker main() is the entrypoint
-EMAIN		:= -e _main
+EMAIN		:= -e main
 
-# Use gcc to link to get all the flags correct
-LD = cris-gcc
-LDFLAGS += -mlinux -nostdlib
\ No newline at end of file
+# Special flags needed for linking
+LDFLAGS 	+= -mcrislinux
diff --git a/klibc/arch/cris/Makefile.inc b/klibc/arch/cris/Makefile.inc
index eec7cb2..732307b 100644
--- a/klibc/arch/cris/Makefile.inc
+++ b/klibc/arch/cris/Makefile.inc
@@ -8,8 +8,8 @@
 #
 
 ARCHOBJS = \
-	arch/$(ARCH)/__UMod.o \
-	arch/$(ARCH)/__UDiv.o \
+	arch/$(ARCH)/__Umod.o \
+	arch/$(ARCH)/__Udiv.o \
 	arch/$(ARCH)/__Mod.o \
 	arch/$(ARCH)/__Div.o \
 	arch/$(ARCH)/setjmp.o \
@@ -21,10 +21,10 @@
 	libgcc/__udivmoddi4.o \
 	libgcc/__negdi2.o
 
-arch/$(ARCH)/__UMod.o: arch/$(ARCH)/divide.c
-	$(CC) $(CFLAGS) -DSIGNED=0 -DREM=1 -DBITS=32 -DNAME=__UMod -c -o $@ $<
-arch/$(ARCH)/__UDiv.o: arch/$(ARCH)/divide.c
-	$(CC) $(CFLAGS) -DSIGNED=0 -DREM=0 -DBITS=32 -DNAME=__UDiv -c -o $@ $<
+arch/$(ARCH)/__Umod.o: arch/$(ARCH)/divide.c
+	$(CC) $(CFLAGS) -DSIGNED=0 -DREM=1 -DBITS=32 -DNAME=__Umod -c -o $@ $<
+arch/$(ARCH)/__Udiv.o: arch/$(ARCH)/divide.c
+	$(CC) $(CFLAGS) -DSIGNED=0 -DREM=0 -DBITS=32 -DNAME=__Udiv -c -o $@ $<
 arch/$(ARCH)/__Mod.o: arch/$(ARCH)/divide.c
 	$(CC) $(CFLAGS) -DSIGNED=1 -DREM=1 -DBITS=32 -DNAME=__Mod -c -o $@ $<
 arch/$(ARCH)/__Div.o: arch/$(ARCH)/divide.c
diff --git a/klibc/arch/cris/divide.c b/klibc/arch/cris/divide.c
index c36b657..ebf8173 100644
--- a/klibc/arch/cris/divide.c
+++ b/klibc/arch/cris/divide.c
@@ -2,34 +2,34 @@
 #include <signal.h>
 
 #if BITS == 64
-typedef uint64_t uint;
-typedef int64_t  sint;
+typedef uint64_t unum;
+typedef int64_t  snum;
 #else
-typedef uint32_t uint;
-typedef int32_t  sint;
+typedef uint32_t unum;
+typedef int32_t  snum;
 #endif
 
 #ifdef SIGNED
-typedef sint xint;
+typedef snum xnum;
 #else
-typedef uint xint;
+typedef unum xnum;
 #endif
 
 #ifdef __cris__
-static inline uint __attribute__((const)) dstep(uint rs, uint rd) {
+static inline unum __attribute__((const)) dstep(unum rs, unum rd) {
   asm("dstep %1,%0" : "+r" (rd) : "r" (rs));
   return rd;
 }
 
-static inline uint __attribute__((const)) lz(uint rs) {
-  uint rd;
+static inline unum __attribute__((const)) lz(unum rs) {
+  unum rd;
   asm("lz %1,%0" : "=r" (rd) : "r" (rs));
   return rd;
 }
 
 #else
 /* For testing */
-static inline uint __attribute__ ((const)) dstep(uint rs, uint rd) {
+static inline unum __attribute__ ((const)) dstep(unum rs, unum rd) {
   rd <<= 1;
   if ( rd >= rs )
     rd -= rs;
@@ -37,8 +37,8 @@
   return rd;
 }
 
-static inline uint __attribute__((const)) lz(uint rs) {
-  uint rd = 0;
+static inline unum __attribute__((const)) lz(unum rs) {
+  unum rd = 0;
   while ( rs >= 0x7fffffff ) {
     rd++;
     rs <<= 1;
@@ -48,11 +48,11 @@
 
 #endif
 
-xint NAME (uint num, uint den)
+xnum NAME (unum num, unum den)
 {
-  uint quot = 0, qbit = 1;
+  unum quot = 0, qbit = 1;
   int minus = 0;
-  xint v;
+  xnum v;
   
   if ( den == 0 ) {
     raise(SIGFPE);
@@ -60,17 +60,17 @@
   }
 
 #if SIGNED
-  if ( (sint)(num^den) < 0 )
+  if ( (snum)(num^den) < 0 )
     minus = 1;
-  if ( (sint)num < 0 ) num = -num;
-  if ( (sint)den < 0 ) den = -den;
+  if ( (snum)num < 0 ) num = -num;
+  if ( (snum)den < 0 ) den = -den;
 #endif
 
   den--;
 
 
   /* Left-justify denominator and count shift */
-  while ( (sint)den >= 0 ) {
+  while ( (snum)den >= 0 ) {
     den <<= 1;
     qbit <<= 1;
   }
@@ -84,7 +84,7 @@
     qbit >>= 1;
   }
 
-  v = (xint)(REM ? num : quot);
+  v = (xnum)(REM ? num : quot);
   if ( minus ) v = -v;
   return v;
 }
diff --git a/utils/Makefile b/utils/Makefile
index 23f2a77..da0fee9 100644
--- a/utils/Makefile
+++ b/utils/Makefile
@@ -22,7 +22,7 @@
 
 shared/%: %.o $(CRTSHARED) $(LIBSHARED) $(LIBUTILS)
 	mkdir -p shared shared.g
-	$(LD) $(LDFLAGS) -o $@ -e main $(CRTSHARED) $< $(LIBUTILS) \
+	$(LD) $(LDFLAGS) -o $@ $(EMAIN) $(CRTSHARED) $< $(LIBUTILS) \
 		-R $(LIBSHARED) $(LIBGCC)
 	cp -f $@ shared.g
 	$(STRIP) $@
