2006-03-06 01:14:10 +03:00
#
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies.
#
2007-10-16 12:26:54 +04:00
# Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
2005-04-17 02:20:36 +04:00
# Licensed under the GPL
#
ARCH_DIR := arch/um
OS := $( shell uname -s)
# We require bash because the vmlinux link and loader script cpp use bash
# features.
SHELL := /bin/bash
filechk_gen_header = $<
core-y += $( ARCH_DIR) /kernel/ \
$( ARCH_DIR) /drivers/ \
$( ARCH_DIR) /os-$( OS) /
2008-08-17 21:48:37 +04:00
MODE_INCLUDE += -I$( srctree) /$( ARCH_DIR) /include/shared/skas
2005-04-17 02:20:36 +04:00
uml: throw out CONFIG_MODE_TT
This patchset throws out tt mode, which has been non-functional for a while.
This is done in phases, interspersed with code cleanups on the affected files.
The removal is done as follows:
remove all code, config options, and files which depend on
CONFIG_MODE_TT
get rid of the CHOOSE_MODE macro, which decided whether to
call tt-mode or skas-mode code, and replace invocations with their
skas portions
replace all now-trivial procedures with their skas equivalents
There are now a bunch of now-redundant pieces of data structures, including
mode-specific pieces of the thread structure, pt_regs, and mm_context. These
are all replaced with their skas-specific contents.
As part of the ongoing style compliance project, I made a style pass over all
files that were changed. There are three such patches, one for each phase,
covering the files affected by that phase but no later ones.
I noticed that we weren't freeing the LDT state associated with a process when
it exited, so that's fixed in one of the later patches.
The last patch is a tidying patch which I've had for a while, but which caused
inexplicable crashes under tt mode. Since that is no longer a problem, this
can now go in.
This patch:
Start getting rid of tt mode support.
This patch throws out CONFIG_MODE_TT and all config options, code, and files
which depend on it.
CONFIG_MODE_SKAS is gone and everything that depends on it is included
unconditionally.
The few changed lines are in re-written Kconfig help, lines which needed
something skas-related removed from them, and a few more which weren't
strictly deletions.
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-16 12:26:50 +04:00
i n c l u d e $( srctree ) / $( ARCH_DIR ) / M a k e f i l e - s k a s
2005-04-17 02:20:36 +04:00
2009-01-05 20:18:42 +03:00
SHARED_HEADERS := $( ARCH_DIR) /include/shared
ARCH_INCLUDE := -I$( srctree) /$( SHARED_HEADERS)
2008-08-24 01:28:20 +04:00
ARCH_INCLUDE += -I$( srctree) /$( ARCH_DIR) /sys-$( SUBARCH) /shared
2005-05-06 03:15:29 +04:00
i f n e q ( $( KBUILD_SRC ) , )
2009-01-05 20:18:42 +03:00
ARCH_INCLUDE += -I$( SHARED_HEADERS)
2005-05-06 03:15:29 +04:00
e n d i f
2008-08-24 01:28:20 +04:00
KBUILD_CPPFLAGS += -I$( srctree) /$( ARCH_DIR) /sys-$( SUBARCH)
2005-04-17 02:20:36 +04:00
2006-02-01 14:06:25 +03:00
# -Dvmap=kernel_vmap prevents anything from referencing the libpcap.o symbol so
# named - it's a common symbol in libpcap, so we get a binary which crashes.
2005-09-21 20:39:32 +04:00
#
2006-02-01 14:06:25 +03:00
# Same things for in6addr_loopback and mktime - found in libc. For these two we
# only get link-time error, luckily.
#
# These apply to USER_CFLAGS to.
2005-04-17 02:20:36 +04:00
2008-02-05 09:31:02 +03:00
KBUILD_CFLAGS += $( CFLAGS) $( CFLAGS-y) -D__arch_um__ -DSUBARCH= \" $( SUBARCH) \" \
2006-02-01 14:06:25 +03:00
$( ARCH_INCLUDE) $( MODE_INCLUDE) -Dvmap= kernel_vmap \
2007-10-16 12:26:45 +04:00
-Din6addr_loopback= kernel_in6addr_loopback \
-Din6addr_any= kernel_in6addr_any
2005-09-21 20:39:32 +04:00
2007-10-15 23:59:31 +04:00
KBUILD_AFLAGS += $( ARCH_INCLUDE)
2005-04-17 02:20:36 +04:00
2006-10-30 09:46:42 +03:00
USER_CFLAGS = $( patsubst $( KERNEL_DEFINES) ,,$( patsubst -D__KERNEL__,,\
2007-10-15 00:21:35 +04:00
$( patsubst -I%,,$( KBUILD_CFLAGS) ) ) ) $( ARCH_INCLUDE) $( MODE_INCLUDE) \
2008-02-05 09:31:02 +03:00
$( filter -I%,$( CFLAGS) ) -D_FILE_OFFSET_BITS= 64
2006-10-30 09:46:42 +03:00
i n c l u d e $( srctree ) / $( ARCH_DIR ) / M a k e f i l e - $( SUBARCH )
#This will adjust *FLAGS accordingly to the platform.
i n c l u d e $( srctree ) / $( ARCH_DIR ) / M a k e f i l e - o s - $( OS )
2005-07-14 11:33:41 +04:00
2008-08-18 06:54:55 +04:00
KBUILD_CPPFLAGS += -I$( srctree) /arch/$( HEADER_ARCH) /include
2005-07-14 11:33:41 +04:00
# -Derrno=kernel_errno - This turns all kernel references to errno into
# kernel_errno to separate them from the libc errno. This allows -fno-common
2007-10-15 00:21:35 +04:00
# in KBUILD_CFLAGS. Otherwise, it would cause ld to complain about the two different
2005-07-14 11:33:41 +04:00
# errnos.
2006-02-01 14:06:25 +03:00
# These apply to kernelspace only.
2007-11-06 01:50:59 +03:00
#
# strip leading and trailing whitespace to make the USER_CFLAGS removal of these
# defines more robust
2005-07-14 11:33:41 +04:00
2007-11-06 01:50:59 +03:00
KERNEL_DEFINES = $( strip -Derrno= kernel_errno -Dsigprocmask= kernel_sigprocmask \
-Dmktime= kernel_mktime $( ARCH_KERNEL_DEFINES) )
2007-10-15 00:21:35 +04:00
KBUILD_CFLAGS += $( KERNEL_DEFINES)
2005-04-17 02:20:36 +04:00
2006-03-06 01:14:10 +03:00
PHONY += linux
2005-04-17 02:20:36 +04:00
all : linux
linux : vmlinux
2006-05-01 23:16:06 +04:00
@echo ' LINK $@'
2006-05-01 23:16:03 +04:00
$( Q) ln -f $< $@
2005-04-17 02:20:36 +04:00
d e f i n e a r c h h e l p
echo '* linux - Binary kernel image (./linux) - for backward'
echo ' compatibility only, this creates a hard link to the'
2006-10-04 00:21:02 +04:00
echo ' real kernel binary, the "vmlinux" binary you'
2005-04-17 02:20:36 +04:00
echo ' find in the kernel root.'
e n d e f
2008-08-25 12:51:27 +04:00
KBUILD_KCONFIG := arch/um/Kconfig.$( HEADER_ARCH)
2005-04-17 02:20:36 +04:00
2009-01-05 20:18:42 +03:00
archprepare : $( SHARED_HEADERS ) /user_constants .h
archprepare : $( SHARED_HEADERS ) /kern_constants .h
2005-04-17 02:20:36 +04:00
LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static
LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib
2006-05-01 23:16:04 +04:00
CFLAGS_NO_HARDENING := $( call cc-option, -fno-PIC,) $( call cc-option, -fno-pic,) \
$( call cc-option, -fno-stack-protector,) \
$( call cc-option, -fno-stack-protector-all,)
2009-09-20 14:28:22 +04:00
# Options used by linker script
export LDS_START := $( START)
export LDS_ELF_ARCH := $( ELF_ARCH)
export LDS_ELF_FORMAT := $( ELF_FORMAT)
2005-04-17 02:20:36 +04:00
2007-10-16 12:26:54 +04:00
# The wrappers will select whether using "malloc" or the kernel allocator.
2005-04-17 02:20:36 +04:00
LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc
2008-02-05 09:31:02 +03:00
LD_FLAGS_CMDLINE = $( foreach opt,$( LDFLAGS) ,-Wl,$( opt) )
2008-02-05 09:30:45 +03:00
CFLAGS_vmlinux := $( LINK-y) $( LINK_WRAPS) $( LD_FLAGS_CMDLINE)
2005-04-17 02:20:36 +04:00
d e f i n e c m d _ v m l i n u x _ _
$( CC) $( CFLAGS_vmlinux) -o $@ \
-Wl,-T,$( vmlinux-lds) $( vmlinux-init) \
-Wl,--start-group $( vmlinux-main) -Wl,--end-group \
2005-05-06 03:15:18 +04:00
-lutil \
2007-07-20 05:01:16 +04:00
$( filter-out $( vmlinux-lds) $( vmlinux-init) $( vmlinux-main) vmlinux.o \
2005-04-17 02:20:36 +04:00
FORCE ,$^) ; rm -f linux
e n d e f
2007-10-16 12:26:54 +04:00
# When cleaning we don't include .config, so we don't include
# TT or skas makefiles and don't clean skas_ptregs.h.
2008-10-12 02:39:18 +04:00
CLEAN_FILES += linux x.i gmon.out \
2009-01-05 20:18:42 +03:00
$( SHARED_HEADERS) /user_constants.h \
$( SHARED_HEADERS) /kern_constants.h
2005-04-17 02:20:36 +04:00
archclean :
@find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \
-o -name '*.gcov' \) -type f -print | xargs rm -f
# Generated files
[PATCH] uml: fix missing KBUILD_BASENAME
2.6.15-mm1 caused kernel-offsets.c to stop compiling with a syntax error in a
header. The problem was with KBUILD_BASENAME, which didn't get a definition
with the by-hand compilation in the main UML Makefile.
This was OK before since the expansion was syntactically the same as the
KBUILD_BASENAME token. With -mm1, the expansion is now a quote-delimited
string, so there needs to be a definition of it.
Since kernel-offsets.c is basically the same as other arches' asm-offsets.c,
and those seem to build OK, this patch turns kernel-offsets.c into
asm-offsets.c. kernel-offsets.c is in arch/um/sys-$(SUBARCH), i.e. sys-i386
and sys-x86_64, while kbuild expects it to be in arch/um/kernel.
kernel-offsets.c is moved to
arch/um/include/sysdep-$(SUBARCH)/kernel-offsets.h, which is included by
arch/um/kernel/asm-offsets.c. With that, include/asm-um/asm-offsets.h is
generated automatically. kernel-offsets.h continues to exist because it needs
to be accessible to userspace UML code, and include/asm-um isn't. So, a
symlink is made from arch/um/include/kernel-offsets.h to
include/asm-um/asm-offsets.h.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-11 23:17:23 +03:00
2006-05-01 23:16:03 +04:00
$(ARCH_DIR)/sys-$(SUBARCH)/user-offsets.s : FORCE
$( Q) $( MAKE) $( build) = $( ARCH_DIR) /sys-$( SUBARCH) $@
[PATCH] uml: fix missing KBUILD_BASENAME
2.6.15-mm1 caused kernel-offsets.c to stop compiling with a syntax error in a
header. The problem was with KBUILD_BASENAME, which didn't get a definition
with the by-hand compilation in the main UML Makefile.
This was OK before since the expansion was syntactically the same as the
KBUILD_BASENAME token. With -mm1, the expansion is now a quote-delimited
string, so there needs to be a definition of it.
Since kernel-offsets.c is basically the same as other arches' asm-offsets.c,
and those seem to build OK, this patch turns kernel-offsets.c into
asm-offsets.c. kernel-offsets.c is in arch/um/sys-$(SUBARCH), i.e. sys-i386
and sys-x86_64, while kbuild expects it to be in arch/um/kernel.
kernel-offsets.c is moved to
arch/um/include/sysdep-$(SUBARCH)/kernel-offsets.h, which is included by
arch/um/kernel/asm-offsets.c. With that, include/asm-um/asm-offsets.h is
generated automatically. kernel-offsets.h continues to exist because it needs
to be accessible to userspace UML code, and include/asm-um isn't. So, a
symlink is made from arch/um/include/kernel-offsets.h to
include/asm-um/asm-offsets.h.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-11 23:17:23 +03:00
2005-09-10 01:10:54 +04:00
d e f i n e f i l e c h k _ g e n - a s m - o f f s e t s
( set -e; \
echo "/*" ; \
echo " * DO NOT MODIFY." ; \
echo " *" ; \
echo " * This file was generated by arch/ $( ARCH) /Makefile " ; \
echo " *" ; \
echo " */" ; \
echo "" ; \
sed -ne " /^->/{s:^->\([^ ]*\) [\$ $# ]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;} " ; \
2005-09-29 01:27:23 +04:00
echo "" ; )
2005-09-10 01:10:54 +04:00
e n d e f
2009-01-05 20:18:42 +03:00
$(SHARED_HEADERS)/user_constants.h : $( ARCH_DIR ) /sys -$( SUBARCH ) /user -offsets .s
2005-05-06 03:15:23 +04:00
$( call filechk,gen-asm-offsets)
2009-01-05 20:18:42 +03:00
$(SHARED_HEADERS)/kern_constants.h :
$( Q) mkdir -p $( dir $@ )
2009-04-20 00:35:10 +04:00
$( Q) echo '#include "../../../../include/generated/asm-offsets.h"' >$@
2005-04-17 02:20:36 +04:00
2008-08-25 12:14:29 +04:00
export SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS HEADER_ARCH DEV_NULL_PATH