[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20071119173320.GB11309@alberich.amd.com>
Date: Mon, 19 Nov 2007 18:33:20 +0100
From: "Andreas Herrmann" <andreas.herrmann3@....com>
To: "Sam Ravnborg" <sam@...nborg.org>,
"H. Peter Anvin" <hpa@...or.com>,
"Thomas Gleixner" <tglx@...utronix.de>,
"Ingo Molnar" <mingo@...hat.com>
cc: "LKML" <linux-kernel@...r.kernel.org>
Subject: [RFC] x86: document kernel config and build
Hi,
I suggest to add some documentation snippet to
Documentation/x86/{kbuild,kconfig,README}
or whatsoever to primarily describe the new ARCH=x86 build.
As a starter I named it Documentation/x86/kbuild.
The following text is based on my observations with
Linus' git (v2.6.24-rc3-19-g2ffbb83).
Some text was shamelessly stolen from one of Sam's patch
descriptions.
Comments are welcome.
Regards,
Andreas
--
Added documentation about kernel configuration and build for ARCH=x86.
Signed-off-by: Andreas Herrmann <andreas.herrmann3@....com>
---
arch/x86/kbuild | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 71 insertions(+), 0 deletions(-)
create mode 100644 arch/x86/kbuild
diff --git a/arch/x86/kbuild b/arch/x86/kbuild
new file mode 100644
index 0000000..7a918a9
--- /dev/null
+++ b/arch/x86/kbuild
@@ -0,0 +1,71 @@
+Kernel configuration
+
+ The general rule is that ARCH={i386,x86_64} and native
+ architecture take precedence over the configuration.
+ So make ARCH=i386 [whatever] will always build a 32-bit
+ kernel no matter what the configuration says.
+ The configuration will be updated to 32-bit if it was
+ configured to 64-bit and the other way around:
+
+ /=================================================\
+ | Target kernel architecture for |
+ | $ make [ARCH=...] <config-target> |
+ |-------------------------------------------------|
+ | option \ host arch | i386 | x86_64 |
+ |=================================================|
+ | ./. | i386 | x86_64 |
+ | ARCH=i386 | i386 | i386 |
+ | ARCH=x86_64 | x86_64 | x86_64 |
+ \=================================================/
+
+ This behaviour is consistent with previous behaviour so
+ no surprises here.
+
+ "make ARCH=x86" is special. It is the only ARCH= value that
+ allows the user to select between 32-bit and 64-bit using
+ menuconfig. This has impact on most config targets. Following
+ table shows what kernel will be configured depending on host
+ architecture and config-target.
+
+ /=========================================================\
+ | Target kernel architecture for |
+ | $ make ARCH=x86 <config-target> |
+ |---------------------------------------------------------|
+ | config-target \ host arch | i386 | x86_64 |
+ |=========================================================|
+ | [menu]config (*1) | i386/x86_64 | i386/x86_64 |
+ | {old,silentold}config (*2) | i386/x86_64 | i386/x86_64 |
+ | defconfig | i386 | i386 |
+ | randconfig (*3) | i386/x86_64 | i386/x86_64 |
+ | allnoconfig | i386 | i386 |
+ | allyesconfig | x86_64 | x86_64 |
+ | allmodconfig | x86_64 | x86_64 |
+ |---------------------------------------------------------|
+ | (*1) The default selection equals the host architecture |
+ | for new configurations. Otherwise it depends on the |
+ | setting of CONFIG_64BIT in the old configuration. |
+ |---------------------------------------------------------|
+ | (*2) The default selection depends on the setting of |
+ | CONFIG_64BIT in the old configuration. |
+ |---------------------------------------------------------|
+ | (*3) Both configurations are possible. |
+ \=========================================================/
+
+
+Cross compilation
+
+ (1) To compile a 32-bit kernel on a x86_64 system you have to
+ disable 64-bit support in the kernel configuration
+ (CONFIG_64BIT=n).
+
+ A subsequent kernel compile will build a 32-bit kernel. No
+ cross compiler is needed.
+
+ (2) To compile a 64-bit kernel on a i386 system you have to switch
+ on 64-bit support in the kernel configuration (CONFIG_64BIT=y).
+ In the subsequent kernel compile a cross compiler (supporting
+ x86_64) is needed. You have to use a command line like
+
+ $ make CROSS_COMPILE=x86_64-pc-linux-gnu-
+
+ to cross compile your kernel.
--
1.5.3.4
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists