This is just a hack to compile 2.6.5 kernel + 2.6.4-um1 patch. As Jeff Dike put it "you might post that to uml-devel for the impatient" ;), but it's not official fix... Here it goes: diff -ruN linux/include/asm-i386/system.h uml/linux/include/asm-i386/system.h --- linux/include/asm-i386/system.h 2004-04-07 23:29:03.000000000 +0200 +++ uml/linux/include/asm-i386/system.h 2004-04-07 23:24:39.000000000 +0200 @@ -243,6 +243,7 @@ #define __HAVE_ARCH_CMPXCHG 1 #endif +#ifndef __UM_SYSTEM_I386_H static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) { @@ -270,6 +271,8 @@ return old; } +#endif + #define cmpxchg(ptr,o,n)\ ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\ (unsigned long)(n),sizeof(*(ptr)))) --- linux/arch/um/Makefile-i386 2004-04-07 23:29:20.521333000 +0200 +++ uml/linux/arch/um/Makefile-i386 2004-04-07 23:22:31.000000000 +0200 @@ -30,7 +30,7 @@ $(SYS_DIR)/thread.h: $(SYS_UTIL_DIR)/mk_thread $(call filechk,$@) -$(SYS_UTIL_DIR)/mk_sc: scripts/fixdep include/config/MARKER FORCE ; +$(SYS_UTIL_DIR)/mk_sc: scripts/basic/fixdep include/config/MARKER FORCE ; $(Q)$(MAKE) $(build)=$(SYS_UTIL_DIR) $@ $(SYS_UTIL_DIR)/mk_thread: $(ARCH_SYMLINKS) $(GEN_HEADERS) sys_prepare FORCE ;