--- ac_clean/arch/um/config.in	Sun Apr 22 12:59:17 2001
+++ ac/arch/um/config.in	Sun Apr 22 14:41:04 2001
@@ -7,6 +7,8 @@
 
 define_bool CONFIG_UID16 y
 
+define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y
+
 mainmenu_option next_comment
 comment 'Code maturity level options'
 bool 'Prompt for development and/or incomplete code/drivers' CONFIG_EXPERIMENTAL
--- ac_clean/arch/um/sys-i386/ksyms.c	Sun Apr 22 12:59:17 2001
+++ ac/arch/um/sys-i386/ksyms.c	Sun Apr 22 14:42:12 2001
@@ -11,7 +11,6 @@
 EXPORT_SYMBOL(__down_failed_interruptible);
 EXPORT_SYMBOL(__down_failed_trylock);
 EXPORT_SYMBOL(__up_wakeup);
-EXPORT_SYMBOL(__rwsem_wake);
 
 /* Networking helper routines. */
 EXPORT_SYMBOL(csum_partial_copy_generic);
--- ac_clean/arch/um/sys-i386/Makefile	Sun Apr 22 12:59:17 2001
+++ ac/arch/um/sys-i386/Makefile	Sun Apr 22 14:42:53 2001
@@ -1,7 +1,6 @@
 OBJ = sys.o
 
-OBJS = checksum.o ldt.o old-checksum.o ptrace.o rwsem.o semaphore.o \
-	sigcontext.o
+OBJS = checksum.o ldt.o old-checksum.o ptrace.o semaphore.o sigcontext.o
 OX_OBJS = ksyms.o
 
 USER_CFLAGS = $(patsubst -I%,,$(CFLAGS))
@@ -9,7 +8,7 @@
 
 CFLAGS += -I../include
 
-SYMLINKS = semaphore.c old-checksum.c checksum.S rwsem.S
+SYMLINKS = semaphore.c old-checksum.c checksum.S
 
 all: $(OBJ)
 
@@ -23,7 +22,7 @@
 ldt.o: ldt.c
 	$(CC) -D__KERNEL__ $(USER_CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
 
-checksum.S old-checksum.c rwsem.S: 
+checksum.S old-checksum.c: 
 	-rm -f $@
 	-ln -s $(TOPDIR)/arch/i386/lib/$@ $@
 
--- ac_clean/include/asm-um/rwsem.h	Sun Apr 22 14:17:01 2001
+++ ac/include/asm-um/rwsem.h	Sun Apr 22 15:01:25 2001
@@ -1,6 +1,10 @@
 #ifndef __UM_RWSEM_H__
 #define __UM_RWSEM_H__
 
+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
+#define __builtin_expect(exp,c) (exp)
+#endif
+
 #include "asm/arch/rwsem.h"
 
 #endif