[PATCH 2/8] um: Do not use SUBARCH

Richard Weinberger
2013-08-21T08:26:31Z

From now on UML does no longer depend on SUBARCH and will
never silently change CONFIG_64BIT.

"make defconfig ARCH=um" produces now a .config with is suitable
for your host arch.

"make i386_defconfig ARCH=um" replaces "make defconfig ARCH=um SUBARCH=i386"
"and make x86_64_defconfig ARCH=um" replaces "make defconfig ARCH=um SUBARCH=x86_64"

Finally a "make ARCH=um" will produce an UML as described in your .config and you
don't have to worry about setting the correct SUBARCH.

This patch is based on: https://lkml.org/lkml/2013/7/4/396

Cc: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
---
arch/um/Kconfig.common | 4 ----
arch/um/Makefile | 21 +++++++++++----------
arch/x86/Makefile.um | 2 +-
arch/x86/um/Kconfig | 6 +++---
4 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/arch/um/Kconfig.common b/arch/um/Kconfig.common
index bceee66..a7ef0b4 100644
--- a/arch/um/Kconfig.common
+++ b/arch/um/Kconfig.common
@@ -58,7 +58,3 @@ config GENERIC_BUG
config HZ
int
default 100
-
-config SUBARCH
- string
- option env="SUBARCH"
diff --git a/arch/um/Makefile b/arch/um/Makefile
index 133f7de..5bc7892 100644
--- a/arch/um/Makefile
+++ b/arch/um/Makefile
@@ -8,6 +8,8 @@

ARCH_DIR := arch/um
OS := $(shell uname -s)
+OS_ARCH := $(shell uname -m)
+
# We require bash because the vmlinux link and loader script cpp use bash
# features.
SHELL := /bin/bash
@@ -20,15 +22,14 @@ core-y += $(ARCH_DIR)/kernel/ \

MODE_INCLUDE += -I$(srctree)/$(ARCH_DIR)/include/shared/skas

-HEADER_ARCH := $(SUBARCH)
-
-# Additional ARCH settings for x86
-ifeq ($(SUBARCH),i386)
- HEADER_ARCH := x86
-endif
-ifeq ($(SUBARCH),x86_64)
- HEADER_ARCH := x86
- KBUILD_CFLAGS += -mcmodel=large
+# Currently we support only i386 and x86_64, if you port UML to another arch
+# add another if branch...
+ifeq ($(OS_ARCH),x86_64)
+ HEADER_ARCH := x86
+ KBUILD_DEFCONFIG := x86_64_defconfig
+else
+ HEADER_ARCH := x86
+ KBUILD_DEFCONFIG := i386_defconfig
endif

HOST_DIR := arch/$(HEADER_ARCH)
@@ -155,4 +156,4 @@ endef
include/generated/user_constants.h: $(HOST_DIR)/um/user-offsets.s
$(call filechk,gen-asm-offsets)

-export SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS DEV_NULL_PATH
+export USER_CFLAGS CFLAGS_NO_HARDENING OS DEV_NULL_PATH
diff --git a/arch/x86/Makefile.um b/arch/x86/Makefile.um
index 36b62bc..91d088c 100644
--- a/arch/x86/Makefile.um
+++ b/arch/x86/Makefile.um
@@ -40,7 +40,7 @@ else

START := 0x60000000

-KBUILD_CFLAGS += -fno-builtin -m64
+KBUILD_CFLAGS += -fno-builtin -m64 -mcmodel=large

CHECKFLAGS += -m64 -D__x86_64__
KBUILD_AFLAGS += -m64
diff --git a/arch/x86/um/Kconfig b/arch/x86/um/Kconfig
index 14ef8d1..bb6df67 100644
--- a/arch/x86/um/Kconfig
+++ b/arch/x86/um/Kconfig
@@ -1,4 +1,4 @@
-mainmenu "User Mode Linux/$SUBARCH $KERNELVERSION Kernel Configuration"
+mainmenu "User Mode Linux $KERNELVERSION Kernel Configuration"

source "arch/um/Kconfig.common"

@@ -15,8 +15,8 @@ config UML_X86
select GENERIC_FIND_FIRST_BIT

config 64BIT
- bool "64-bit kernel" if SUBARCH = "x86"
- default SUBARCH != "i386"
+ bool "64-bit kernel"
+ default n

config X86_32
def_bool !64BIT
--
1.8.1.4