mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-18 15:09:53 +00:00
96d55b882b
Make UML share the underlying cpu-specific tuning done on i386. Actually, for now many config options aren't used a lot - but that can be done later. Also, UML relies on GCC optimization for things like memcpy and such more than i386, so specifying the correct -march and -mtune should be enough. Later, we may want to correct some other stuff. For instance, since FPU context switching, for us, is done (at least partially, i.e. between our kernelspace and userspace) by the host, we may allow usage of FPU operations by GCC. This doesn't hold for kernelspace vs. kernelspace, but we don't support preemption. Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
146 lines
4.4 KiB
Makefile
146 lines
4.4 KiB
Makefile
#
|
|
# i386/Makefile
|
|
#
|
|
# This file is included by the global makefile so that you can add your own
|
|
# architecture-specific flags and dependencies. Remember to do have actions
|
|
# for "archclean" cleaning up for this architecture.
|
|
#
|
|
# This file is subject to the terms and conditions of the GNU General Public
|
|
# License. See the file "COPYING" in the main directory of this archive
|
|
# for more details.
|
|
#
|
|
# Copyright (C) 1994 by Linus Torvalds
|
|
#
|
|
# 19990713 Artur Skawina <skawina@geocities.com>
|
|
# Added '-march' and '-mpreferred-stack-boundary' support
|
|
#
|
|
# 20050320 Kianusch Sayah Karadji <kianusch@sk-tech.net>
|
|
# Added support for GEODE CPU
|
|
|
|
HAS_BIARCH := $(call cc-option-yn, -m32)
|
|
ifeq ($(HAS_BIARCH),y)
|
|
AS := $(AS) --32
|
|
LD := $(LD) -m elf_i386
|
|
CC := $(CC) -m32
|
|
endif
|
|
|
|
LDFLAGS := -m elf_i386
|
|
OBJCOPYFLAGS := -O binary -R .note -R .comment -S
|
|
LDFLAGS_vmlinux :=
|
|
CHECKFLAGS += -D__i386__
|
|
|
|
CFLAGS += -pipe -msoft-float
|
|
|
|
# prevent gcc from keeping the stack 16 byte aligned
|
|
CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
|
|
|
|
# CPU-specific tuning. Anything which can be shared with UML should go here.
|
|
include $(srctree)/arch/i386/Makefile.cpu
|
|
|
|
# -mregparm=3 works ok on gcc-3.0 and later
|
|
#
|
|
GCC_VERSION := $(call cc-version)
|
|
cflags-$(CONFIG_REGPARM) += $(shell if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;)
|
|
|
|
# Disable unit-at-a-time mode, it makes gcc use a lot more stack
|
|
# due to the lack of sharing of stacklots.
|
|
CFLAGS += $(call cc-option,-fno-unit-at-a-time)
|
|
|
|
CFLAGS += $(cflags-y)
|
|
|
|
# Default subarch .c files
|
|
mcore-y := mach-default
|
|
|
|
# Voyager subarch support
|
|
mflags-$(CONFIG_X86_VOYAGER) := -Iinclude/asm-i386/mach-voyager
|
|
mcore-$(CONFIG_X86_VOYAGER) := mach-voyager
|
|
|
|
# VISWS subarch support
|
|
mflags-$(CONFIG_X86_VISWS) := -Iinclude/asm-i386/mach-visws
|
|
mcore-$(CONFIG_X86_VISWS) := mach-visws
|
|
|
|
# NUMAQ subarch support
|
|
mflags-$(CONFIG_X86_NUMAQ) := -Iinclude/asm-i386/mach-numaq
|
|
mcore-$(CONFIG_X86_NUMAQ) := mach-default
|
|
|
|
# BIGSMP subarch support
|
|
mflags-$(CONFIG_X86_BIGSMP) := -Iinclude/asm-i386/mach-bigsmp
|
|
mcore-$(CONFIG_X86_BIGSMP) := mach-default
|
|
|
|
#Summit subarch support
|
|
mflags-$(CONFIG_X86_SUMMIT) := -Iinclude/asm-i386/mach-summit
|
|
mcore-$(CONFIG_X86_SUMMIT) := mach-default
|
|
|
|
# generic subarchitecture
|
|
mflags-$(CONFIG_X86_GENERICARCH) := -Iinclude/asm-i386/mach-generic
|
|
mcore-$(CONFIG_X86_GENERICARCH) := mach-default
|
|
core-$(CONFIG_X86_GENERICARCH) += arch/i386/mach-generic/
|
|
|
|
# ES7000 subarch support
|
|
mflags-$(CONFIG_X86_ES7000) := -Iinclude/asm-i386/mach-es7000
|
|
mcore-$(CONFIG_X86_ES7000) := mach-default
|
|
core-$(CONFIG_X86_ES7000) := arch/i386/mach-es7000/
|
|
|
|
# default subarch .h files
|
|
mflags-y += -Iinclude/asm-i386/mach-default
|
|
|
|
head-y := arch/i386/kernel/head.o arch/i386/kernel/init_task.o
|
|
|
|
libs-y += arch/i386/lib/
|
|
core-y += arch/i386/kernel/ \
|
|
arch/i386/mm/ \
|
|
arch/i386/$(mcore-y)/ \
|
|
arch/i386/crypto/
|
|
drivers-$(CONFIG_MATH_EMULATION) += arch/i386/math-emu/
|
|
drivers-$(CONFIG_PCI) += arch/i386/pci/
|
|
# must be linked after kernel/
|
|
drivers-$(CONFIG_OPROFILE) += arch/i386/oprofile/
|
|
drivers-$(CONFIG_PM) += arch/i386/power/
|
|
|
|
CFLAGS += $(mflags-y)
|
|
AFLAGS += $(mflags-y)
|
|
|
|
boot := arch/i386/boot
|
|
|
|
.PHONY: zImage bzImage compressed zlilo bzlilo \
|
|
zdisk bzdisk fdimage fdimage144 fdimage288 install kernel_install
|
|
|
|
all: bzImage
|
|
|
|
# KBUILD_IMAGE specify target image being built
|
|
KBUILD_IMAGE := $(boot)/bzImage
|
|
zImage zlilo zdisk: KBUILD_IMAGE := arch/i386/boot/zImage
|
|
|
|
zImage bzImage: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE)
|
|
|
|
compressed: zImage
|
|
|
|
zlilo bzlilo: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zlilo
|
|
|
|
zdisk bzdisk: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zdisk
|
|
|
|
fdimage fdimage144 fdimage288: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@
|
|
|
|
install: vmlinux
|
|
install kernel_install:
|
|
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install
|
|
|
|
archclean:
|
|
$(Q)$(MAKE) $(clean)=arch/i386/boot
|
|
|
|
define archhelp
|
|
echo '* bzImage - Compressed kernel image (arch/$(ARCH)/boot/bzImage)'
|
|
echo ' install - Install kernel using'
|
|
echo ' (your) ~/bin/installkernel or'
|
|
echo ' (distribution) /sbin/installkernel or'
|
|
echo ' install to $$(INSTALL_PATH) and run lilo'
|
|
echo ' bzdisk - Create a boot floppy in /dev/fd0'
|
|
echo ' fdimage - Create a boot floppy image'
|
|
endef
|
|
|
|
CLEAN_FILES += arch/$(ARCH)/boot/fdimage arch/$(ARCH)/boot/mtools.conf
|