@@ -22,9 +22,20 @@ config UML
select TTY # Needed for line.c
select MODULE_REL_CRCS if MODVERSIONS
+config UMMODE_LIB
+ bool "UML mode: library mode"
+ default y if "$(UMMODE)" = "library"
+ help
+ This mode switches a mode to build a library of UML (Linux
+ Kernel Library/LKL). This switch is exclusive to "kernel mode"
+ of UML, which is traditional mode of UML.
+
+ For more detail about LKL, see
+ <file:Documentation/virt/uml/lkl.txt>.
+
config MMU
bool
- default y
+ default y if !UMMODE_LIB
config NO_IOMEM
def_bool y
@@ -45,12 +56,12 @@ config LOCKDEP_SUPPORT
config STACKTRACE_SUPPORT
bool
- default y
+ default y if MMU
select STACKTRACE
config GENERIC_CALIBRATE_DELAY
bool
- default y
+ default y if MMU
config HZ
int
@@ -17,6 +17,10 @@ else
KBUILD_DEFCONFIG := $(SUBARCH)_defconfig
endif
+ifeq ($(UMMODE),library)
+ SUBARCH := um/nommu
+endif
+
ARCH_DIR := arch/um
OS := $(shell uname -s)
# We require bash because the vmlinux link and loader script cpp use bash
@@ -102,9 +106,13 @@ all: linux.o
linux.o: vmlinux
@echo ' LINK $@'
- $(Q)$(OBJCOPY) -R .eh_frame $< $@
+ $(Q)$(OBJCOPY) -R .eh_frame -L sem_init -L sem_post -L sem_wait -L sem_destroy $< $@
+ifeq ($(UMMODE),library)
+install: linux.o um_headers_install
+else
install: linux.o
+endif
@echo " INSTALL $(INSTALL_PATH)/lib/$<"
@mkdir -p $(INSTALL_PATH)/lib/
@cp $< $(INSTALL_PATH)/lib/
@@ -14,10 +14,14 @@ CPPFLAGS_vmlinux.lds := -DSTART=$(LDS_START) \
$(LDS_EXTRA)
extra-y := vmlinux.lds
-obj-y = config.o exec.o exitcode.o irq.o ksyms.o mem.o \
- physmem.o process.o ptrace.o reboot.o sigio.o \
- signal.o syscall.o sysrq.o time.o tlb.o trap.o \
- um_arch.o umid.o maccess.o kmsg_dump.o skas/
+obj-y = config.o exitcode.o irq.o ksyms.o \
+ process.o reboot.o sigio.o \
+ signal.o syscall.o time.o \
+ um_arch.o umid.o maccess.o kmsg_dump.o
+
+ifdef CONFIG_MMU
+obj-y += exec.o mem.o physmem.o ptrace.o sysrq.o tlb.o trap.o skas/
+endif
obj-$(CONFIG_BLK_DEV_INITRD) += initrd.o
obj-$(CONFIG_GPROF) += gprof_syms.o
new file mode 100644
@@ -0,0 +1,37 @@
+config UML_NOMMU
+ def_bool y
+ depends on !SMP && !MMU
+ select UACCESS_MEMCPY
+ select ARCH_THREAD_STACK_ALLOCATOR
+ select ARCH_HAS_SYSCALL_WRAPPER
+
+config 64BIT
+ bool
+ default y
+
+config GENERIC_CSUM
+ def_bool y
+
+config GENERIC_ATOMIC64
+ bool
+ default y if !64BIT
+
+config SECCOMP
+ bool
+ default n
+
+config GENERIC_HWEIGHT
+ def_bool y
+
+config GENERIC_CALIBRATE_DELAY
+ bool
+ default n
+
+config STACKTRACE_SUPPORT
+ bool
+ default n
+
+# XXX: need this to work well with tap13.py
+config PRINTK_TIME
+ bool
+ default y
new file mode 100644
@@ -0,0 +1,4 @@
+include/generated/user_constants.h: $(srctree)/arch/um/nommu/um/user_constants.h
+ $(Q)cp -f $^ $@
+
+obj-y = bootmem.o console.o cpu.o delay.o setup.o syscalls.o threads.o unimplemented.o