linux/arch/x86/Makefile
<<
>>
Prefs
   1# Unified Makefile for i386 and x86_64
   2
   3# select defconfig based on actual architecture
   4ifeq ($(ARCH),x86)
   5        KBUILD_DEFCONFIG := i386_defconfig
   6else
   7        KBUILD_DEFCONFIG := $(ARCH)_defconfig
   8endif
   9
  10# BITS is used as extension for files which are available in a 32 bit
  11# and a 64 bit version to simplify shared Makefiles.
  12# e.g.: obj-y += foo_$(BITS).o
  13export BITS
  14
  15ifeq ($(CONFIG_X86_32),y)
  16        BITS := 32
  17        UTS_MACHINE := i386
  18        CHECKFLAGS += -D__i386__
  19
  20        biarch := $(call cc-option,-m32)
  21        KBUILD_AFLAGS += $(biarch)
  22        KBUILD_CFLAGS += $(biarch)
  23
  24        ifdef CONFIG_RELOCATABLE
  25                LDFLAGS_vmlinux := --emit-relocs
  26        endif
  27
  28        KBUILD_CFLAGS += -msoft-float -mregparm=3 -freg-struct-return
  29
  30        # Never want PIC in a 32-bit kernel, prevent breakage with GCC built
  31        # with nonstandard options
  32        KBUILD_CFLAGS += -fno-pic
  33
  34        # prevent gcc from keeping the stack 16 byte aligned
  35        KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
  36
  37        # Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
  38        # a lot more stack due to the lack of sharing of stacklots:
  39        KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0400, \
  40                                $(call cc-option,-fno-unit-at-a-time))
  41
  42        # CPU-specific tuning. Anything which can be shared with UML should go here.
  43        include $(srctree)/arch/x86/Makefile_32.cpu
  44        KBUILD_CFLAGS += $(cflags-y)
  45
  46        # temporary until string.h is fixed
  47        KBUILD_CFLAGS += -ffreestanding
  48else
  49        BITS := 64
  50        UTS_MACHINE := x86_64
  51        CHECKFLAGS += -D__x86_64__ -m64
  52
  53        KBUILD_AFLAGS += -m64
  54        KBUILD_CFLAGS += -m64
  55
  56        # Use -mpreferred-stack-boundary=3 if supported.
  57        KBUILD_CFLAGS += $(call cc-option,-mno-sse -mpreferred-stack-boundary=3)
  58
  59        # FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
  60        cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8)
  61        cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
  62
  63        cflags-$(CONFIG_MCORE2) += \
  64                $(call cc-option,-march=core2,$(call cc-option,-mtune=generic))
  65        cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom) \
  66                $(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
  67        cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)
  68        KBUILD_CFLAGS += $(cflags-y)
  69
  70        KBUILD_CFLAGS += -mno-red-zone
  71        KBUILD_CFLAGS += -mcmodel=kernel
  72
  73        # -funit-at-a-time shrinks the kernel .text considerably
  74        # unfortunately it makes reading oopses harder.
  75        KBUILD_CFLAGS += $(call cc-option,-funit-at-a-time)
  76
  77        # this works around some issues with generating unwind tables in older gccs
  78        # newer gccs do it by default
  79        KBUILD_CFLAGS += -maccumulate-outgoing-args
  80endif
  81
  82ifdef CONFIG_CC_STACKPROTECTOR
  83        cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
  84        ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(KBUILD_CPPFLAGS) $(biarch)),y)
  85                stackp-y := -fstack-protector
  86                KBUILD_CFLAGS += $(stackp-y)
  87        else
  88                $(warning stack protector enabled but no compiler support)
  89        endif
  90endif
  91
  92ifdef CONFIG_X86_X32
  93        x32_ld_ok := $(call try-run,\
  94                        /bin/echo -e '1: .quad 1b' | \
  95                        $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" - && \
  96                        $(OBJCOPY) -O elf32-x86-64 "$$TMP" "$$TMPO" && \
  97                        $(LD) -m elf32_x86_64 "$$TMPO" -o "$$TMP",y,n)
  98        ifeq ($(x32_ld_ok),y)
  99                CONFIG_X86_X32_ABI := y
 100                KBUILD_AFLAGS += -DCONFIG_X86_X32_ABI
 101                KBUILD_CFLAGS += -DCONFIG_X86_X32_ABI
 102        else
 103                $(warning CONFIG_X86_X32 enabled but no binutils support)
 104        endif
 105endif
 106export CONFIG_X86_X32_ABI
 107
 108# Don't unroll struct assignments with kmemcheck enabled
 109ifeq ($(CONFIG_KMEMCHECK),y)
 110        KBUILD_CFLAGS += $(call cc-option,-fno-builtin-memcpy)
 111endif
 112
 113# Stackpointer is addressed different for 32 bit and 64 bit x86
 114sp-$(CONFIG_X86_32) := esp
 115sp-$(CONFIG_X86_64) := rsp
 116
 117# do binutils support CFI?
 118cfi := $(call as-instr,.cfi_startproc\n.cfi_rel_offset $(sp-y)$(comma)0\n.cfi_endproc,-DCONFIG_AS_CFI=1)
 119# is .cfi_signal_frame supported too?
 120cfi-sigframe := $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1)
 121cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1)
 122
 123# does binutils support specific instructions?
 124asinstr := $(call as-instr,fxsaveq (%rax),-DCONFIG_AS_FXSAVEQ=1)
 125avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1)
 126
 127KBUILD_AFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr)
 128KBUILD_CFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr)
 129
 130LDFLAGS := -m elf_$(UTS_MACHINE)
 131
 132# Speed up the build
 133KBUILD_CFLAGS += -pipe
 134# Workaround for a gcc prelease that unfortunately was shipped in a suse release
 135KBUILD_CFLAGS += -Wno-sign-compare
 136#
 137KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
 138# prevent gcc from generating any FP code by mistake
 139KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
 140KBUILD_CFLAGS += $(call cc-option,-mno-avx,)
 141
 142KBUILD_CFLAGS += $(mflags-y)
 143KBUILD_AFLAGS += $(mflags-y)
 144
 145archscripts: scripts_basic
 146        $(Q)$(MAKE) $(build)=arch/x86/tools relocs
 147
 148###
 149# Syscall table generation
 150
 151archheaders:
 152        $(Q)$(MAKE) $(build)=arch/x86/syscalls all
 153
 154###
 155# Kernel objects
 156
 157head-y := arch/x86/kernel/head_$(BITS).o
 158head-y += arch/x86/kernel/head$(BITS).o
 159head-y += arch/x86/kernel/head.o
 160
 161libs-y  += arch/x86/lib/
 162
 163# See arch/x86/Kbuild for content of core part of the kernel
 164core-y += arch/x86/
 165
 166# drivers-y are linked after core-y
 167drivers-$(CONFIG_MATH_EMULATION) += arch/x86/math-emu/
 168drivers-$(CONFIG_PCI)            += arch/x86/pci/
 169
 170# must be linked after kernel/
 171drivers-$(CONFIG_OPROFILE) += arch/x86/oprofile/
 172
 173# suspend and hibernation support
 174drivers-$(CONFIG_PM) += arch/x86/power/
  75   17ef="arch/x86/Makefile#L166" id="L16 class="l1"line" name="L76">  76
  17>driv7ref="arch/x86/Makefile#L148" id="L18" class=1"line" name="L78">  78   17a href=""arch/x86/Makefile#L155" id="L19" class=1"line" name="L79">  79   17call taboot lohrefa href=".x86FIGanerae=""sd aftkepit andlegacy purpos="arch/x86/Makefile#L138" id="L10" class=1"line" name="L80">  80end18ref="arch/x86/Makefile#L161" id="L11" class=1"line" name="L81">  81
  82ifd18ref="arch/x86/Makefile#L173" id="L13" class=1"line" name="L83">  83   1    ccBOOT_TARGETS = bzlilo bzdisk fdimCC bfdimCC  hrbfdimCC 288 isoimCC arch/x86/Makefile#L173" id="L134" class="line" name="L84">  84   18ref="arch/x86/Makefile#L145" id="L15" class=1"line" name="L85">  85   1      PHONY86/pbzImCC b  86   18ref="arch/x86/Makefile#L157" id="L17" class=1"line" name="L87">  87   18binutilDhref="ext constohref="arch/x86/Makefile#L133" id="L18" class=1"line" name="L88">  88   1      f=":pbzImCC arch/x86/Makefile#L133" id="L18" class=1"line" name="L89">  89   18ref="arch/x86/Makefile#L170" id="L10" class=1"line" name="L90">  90end19t be liAGS += IMAGEinstrucyerae="" imCC bbe codref="arch/x86/Makefile#L31" id="L311" class=1"line" name="L91">  91
  92ifd19ref="arch/x86/Makefile#L173" id="L13" class=1"line" name="L93">  93   1    x3bzImCC :  --emitarch/x86/Makefile#L173" id="L134" class="line" name="L94">  94   19($(ARCH),x86)_64) := rspDECODER_SELFTESTef="arch/x86/Makefile#L110" id="L15" class=1"line" name="L95">  95   1              ) $(build)=arch/x86/tools relocs
  96   1      ref="arch/x86/Makefile#L112" id="L17" class=1"line" name="L97">  97   1              ) $(build)=arch/x86/tinboot)AFLAGS) -cIMAGE"arch/x86/Makefile#L110" id="L15" class=1"line" name="L98">  98   1    ifeq ($(x3) $(mkdir -p3) obj/x86/MakefiINE)
  99   1            CO) $(lnroten /gfx.l/heaboot/bzImCC b 100<2a>   20ref="arch/x86/Makefile#L161" id="L201" class2"line" name="L101"> 101<2a>   2       102<2a>   20   $(Q)$(MAKE) $(build)=arch/x86/sinboot)AF@arch/x86/Makefile#L161" id="L20" class=""line" name="L103"> 103<2a>   20ref="arch/x86/Makefile#L24" id="L2404" class2"line" name="L104"> 104<2a>   2    enPHONY86/phreff="arch/x86/Makefile#L153" id="L205" class2"line" name="L105"> 105<2a>end2f
 106<2a>exp20   $(Q)$(MAKE) $(build)=arch/x86/tinboot)AF@arch/x86/Makefile#L161" id="L20" class=""line" name="L107"> 107<2a>
 108<2a># D2n'PHONY86/pvdso_hreff="arch/x86/Makefile#L153" id="L20" class=""line" name="L109"> 109<2a>ife2 ($(COvdso_hreff=""arch/x86/Makefile#L152" id="L210" class2"line" name="L110"> 110<2a>   2    KBUILD_CFL) $(build)=arch/x86/tools relovdsoAF@arch/x86/Makefile#L161" id="L211" class2"line" name="L111"> 111<2a>end21ref="arch/x86/Makefile#L142" id="L212" class2"line" name="L112"> 112<2a>
 113<2a># S213  KBUILD_CFL) $(rm -rfb 114<2a>sp-214  KBUILD_CFL) $(rm -rfb 115<2a>sp-21             ) $(build)=arcclean/tinboot)arch/x86/Makefile#L2" id="L2" 16" class2"line" name="L116"> 116<2a>
 117<2a># d21ref="arch/x86/Makefile#L108" id="L218" class2"line" name="L118"> 118<2a>cfi2:= $(cd" in/Kbuilhel"arch/x86/Makefile#L116" id="L219" class2"line" name="L119"> 119<2a># i21       39;1:quad 1*pbzImCC bbbbbb- Co-starent xt consimCC b(ernel/heaboot/bzImCC )uad 1arch/x86/Makefile#L116" id="L20" class=""line" name="L20">  20cfi2    biar39;1:quad 1 phreff="bbbbbb- Ireff="bxt consus couad 1arch/x86/Makefile#L116" id="L201" class2"line" name="L21">  21cfi2    KBUI39;1:quad 1 ppppppppppppppppp(your) ~-e &#$(INSTALLKERNEL) oruad 1arch/x86/Makefile#L116" id="L20" class="lline" name="L22">  22>
  23# d223  KBUI39;1:quad 1 ppppppppppppppppphreff="btoh$$(INSTALL_PATH)natiorun lilouad 1arch/x86/Makefile#L116" id="L204" class2"line" name="L24">  24asi2    ifde39;1:quad 1 pfdimCC bbbbbb- Create 1.4MBaboot floppysimCC b(ernel/heaboot/fdimCC )uad 1arch/x86/Makefile#L116" id="L205" class2"line" name="L25">  25avx2        39;1:quad 1 pfdimCC  hrbbb- Create 1.4MBaboot floppysimCC b(ernel/heaboot/fdimCC )uad 1arch/x86/Makefile#L116" id="L206" class2"line" name="L26">  26
  27KBU227  biar39;1:quad 1 phsoimCC bbbbb- Create aaboot CD-ROMsimCC b(ernel/heaboot/imCC .hso)uad 1arch/x86/Makefile#L116" id="L208" class2"line" name="L28">  28KBU2    KBUI39;1:quad 1 pppppppppppppppppbzdisk/fdimCC */hsoimCC balsoAaccept:uad 1arch/x86/Makefile#L116" id="L209" class2"line" name="L29">  29
 130<2a>LDF23   biar39;1:quad 1 pppppppppppppppppFDINITRD= id=phritrdc and 131<2a>
 132<2a># S2eed up

iv id="contene" namefootnr">
Ta horiginal LXR  -mrw aftbydLXR ;ymmtimeyd up,s arouexperi kmeal  simplifbydrch/x86/Mmailto:lxr@-emit.no">lxr@-emit.nod up.
iv id="ontene" namesubfootnr">
lxr.-emit.no kindly hostnt bydrch/x86/Mhttp://www.redpill--emsto.no">Redpill Lemsto ASd up,sstoviderrnelLemit-ly