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) /
# XXX: The "os" symlink is only used by arch/um/include/os.h, which includes
# ../os/include/file.h
#
# These are cleaned up during mrproper. Please DO NOT fix it again, this is
# the Correct Thing(tm) to do!
2008-08-24 01:28:20 +04:00
ARCH_SYMLINKS = $( ARCH_DIR) /os $( ARCH_DIR) /include/shared/uml-config.h
2005-04-17 02:20:36 +04:00
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
2008-08-24 01:28:20 +04:00
ARCH_INCLUDE := -I$( srctree) /$( ARCH_DIR) /include/shared
ARCH_INCLUDE += -I$( srctree) /$( ARCH_DIR) /sys-$( SUBARCH) /shared
2005-05-06 03:15:29 +04:00
i f n e q ( $( KBUILD_SRC ) , )
2008-08-24 01:28:20 +04:00
ARCH_INCLUDE += -I$( ARCH_DIR) /include/shared # for three generated files
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
2005-05-06 03:15:29 +04:00
i f n e q ( $( KBUILD_SRC ) , )
2008-08-24 01:00:34 +04:00
$( shell mkdir -p $ ( ARCH_DIR ) && ln -fsn $ ( srctree ) /$ ( ARCH_DIR ) /Kconfig .$ ( HEADER_ARCH ) $ ( ARCH_DIR ) /Kconfig .arch )
2005-05-06 03:15:29 +04:00
e l s e
2008-08-24 01:00:34 +04:00
$( shell ln -fsn Kconfig .$ ( HEADER_ARCH ) $ ( ARCH_DIR ) /Kconfig .arch )
2005-05-06 03:15:29 +04:00
e n d i f
2005-04-17 02:20:36 +04:00
2008-08-17 21:48:37 +04:00
archprepare : $( ARCH_SYMLINKS ) $( ARCH_DIR ) /include /shared /user_constants .h
prepare : $( ARCH_DIR ) /include /shared /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,)
2005-04-17 02:20:36 +04:00
CONFIG_KERNEL_STACK_ORDER ?= 2
STACK_SIZE := $( shell echo $$ [ 4096 * ( 1 << $( CONFIG_KERNEL_STACK_ORDER) ) ] )
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
CPPFLAGS_vmlinux.lds = -U$( SUBARCH) -DSTART= $( START) -DELF_ARCH= $( ELF_ARCH) \
-DELF_FORMAT= " $( ELF_FORMAT) " -DKERNEL_STACK_SIZE= $( STACK_SIZE)
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-08-17 21:48:37 +04:00
CLEAN_FILES += linux x.i gmon.out $( ARCH_DIR) /include/shared/uml-config.h \
$( ARCH_DIR) /include/shared/user_constants.h \
$( ARCH_DIR) /include/shared/kern_constants.h $( ARCH_DIR) /Kconfig.arch
2005-04-17 02:20:36 +04:00
2006-03-31 14:30:13 +04:00
MRPROPER_FILES += $( ARCH_SYMLINKS)
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
2008-08-17 21:48:37 +04:00
$(objtree)/$(ARCH_DIR)/include/shared :
2006-02-01 14:06:22 +03:00
@echo ' MKDIR $@'
$( Q) mkdir -p $@
2005-04-17 02:20:36 +04:00
$(ARCH_DIR)/os :
@echo ' SYMLINK $@'
2005-05-06 03:15:29 +04:00
i f n e q ( $( KBUILD_SRC ) , )
2008-08-17 21:48:37 +04:00
$( Q) ln -fsn $( srctree) /$( ARCH_DIR) /os-$( OS) $@
2005-05-06 03:15:29 +04:00
e l s e
2008-08-17 21:48:37 +04:00
$( Q) ln -fsn os-$( OS) $@
2005-05-06 03:15:29 +04:00
e n d i f
2005-04-17 02:20:36 +04:00
# Generated files
d e f i n e f i l e c h k _ u m l c o n f i g
sed 's/ CONFIG/ UML_CONFIG/'
e n d e f
2008-08-17 21:48:37 +04:00
$(ARCH_DIR)/include/shared/uml-config.h : include /linux /autoconf .h
[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
$( call filechk,umlconfig)
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
2008-08-17 21:48:37 +04:00
$(ARCH_DIR)/include/shared/user_constants.h : $( ARCH_DIR ) /sys -$( SUBARCH ) /user -offsets .s
2005-05-06 03:15:23 +04:00
$( call filechk,gen-asm-offsets)
2008-08-17 21:48:37 +04:00
$(ARCH_DIR)/include/shared/kern_constants.h : $( objtree ) /$( ARCH_DIR ) /include /shared
[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
@echo ' SYMLINK $@'
2008-08-18 03:13:17 +04:00
$( Q) ln -sf ../../../../include/asm/asm-offsets.h $@
2005-04-17 02:20:36 +04:00
2007-10-13 11:16:04 +04:00
export SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS HEADER_ARCH