Blame view

arch/x86/Makefile 6.61 KB
74b469f2e   Sam Ravnborg   x86: move i386 an...
1
  # Unified Makefile for i386 and x86_64
2266cfd50   Sam Ravnborg   x86: move defconf...
2
  # select defconfig based on actual architecture
d746d647f   Sam Ravnborg   x86: do not use $...
3
4
5
6
7
  ifeq ($(ARCH),x86)
          KBUILD_DEFCONFIG := i386_defconfig
  else
          KBUILD_DEFCONFIG := $(ARCH)_defconfig
  endif
2266cfd50   Sam Ravnborg   x86: move defconf...
8

0a6ef376d   Sam Ravnborg   x86: unification ...
9
10
11
12
  # BITS is used as extension for files which are available in a 32 bit
  # and a 64 bit version to simplify shared Makefiles.
  # e.g.: obj-y += foo_$(BITS).o
  export BITS
74b469f2e   Sam Ravnborg   x86: move i386 an...
13

d746d647f   Sam Ravnborg   x86: do not use $...
14
  ifeq ($(CONFIG_X86_32),y)
0a6ef376d   Sam Ravnborg   x86: unification ...
15
          BITS := 32
8c6531f7a   Andreas Herrmann   x86: correctly se...
16
          UTS_MACHINE := i386
4ba7e5cd4   Sam Ravnborg   x86: biarch suppo...
17
          CHECKFLAGS += -D__i386__
0a6ef376d   Sam Ravnborg   x86: unification ...
18

4ba7e5cd4   Sam Ravnborg   x86: biarch suppo...
19
20
21
          biarch := $(call cc-option,-m32)
          KBUILD_AFLAGS += $(biarch)
          KBUILD_CFLAGS += $(biarch)
0a6ef376d   Sam Ravnborg   x86: unification ...
22
23
24
25
  
          ifdef CONFIG_RELOCATABLE
                  LDFLAGS_vmlinux := --emit-relocs
          endif
0a6ef376d   Sam Ravnborg   x86: unification ...
26
27
28
29
30
31
32
33
  
          KBUILD_CFLAGS += -msoft-float -mregparm=3 -freg-struct-return
  
          # prevent gcc from keeping the stack 16 byte aligned
          KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
  
          # Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
          # a lot more stack due to the lack of sharing of stacklots:
c7bd0414d   Frans Pop   x86: Simplify the...
34
35
          KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0400, \
  				$(call cc-option,-fno-unit-at-a-time))
0a6ef376d   Sam Ravnborg   x86: unification ...
36
37
38
39
40
41
42
  
          # CPU-specific tuning. Anything which can be shared with UML should go here.
          include $(srctree)/arch/x86/Makefile_32.cpu
          KBUILD_CFLAGS += $(cflags-y)
  
          # temporary until string.h is fixed
          KBUILD_CFLAGS += -ffreestanding
74b469f2e   Sam Ravnborg   x86: move i386 an...
43
  else
0a6ef376d   Sam Ravnborg   x86: unification ...
44
          BITS := 64
8c6531f7a   Andreas Herrmann   x86: correctly se...
45
          UTS_MACHINE := x86_64
0a6ef376d   Sam Ravnborg   x86: unification ...
46
47
48
49
50
51
52
53
54
55
56
          CHECKFLAGS += -D__x86_64__ -m64
  
          KBUILD_AFLAGS += -m64
          KBUILD_CFLAGS += -m64
  
          # FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
          cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8)
          cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
  
          cflags-$(CONFIG_MCORE2) += \
                  $(call cc-option,-march=core2,$(call cc-option,-mtune=generic))
366d19e18   Tobias Doerffel   x86: add specific...
57
58
  	cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom) \
  		$(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
0a6ef376d   Sam Ravnborg   x86: unification ...
59
60
61
62
63
          cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)
          KBUILD_CFLAGS += $(cflags-y)
  
          KBUILD_CFLAGS += -mno-red-zone
          KBUILD_CFLAGS += -mcmodel=kernel
0a6ef376d   Sam Ravnborg   x86: unification ...
64
65
66
          # -funit-at-a-time shrinks the kernel .text considerably
          # unfortunately it makes reading oopses harder.
          KBUILD_CFLAGS += $(call cc-option,-funit-at-a-time)
0a6ef376d   Sam Ravnborg   x86: unification ...
67
68
69
          # this works around some issues with generating unwind tables in older gccs
          # newer gccs do it by default
          KBUILD_CFLAGS += -maccumulate-outgoing-args
5d707e9c8   Tejun Heo   stackprotector: u...
70
  endif
0a6ef376d   Sam Ravnborg   x86: unification ...
71

5d707e9c8   Tejun Heo   stackprotector: u...
72
73
  ifdef CONFIG_CC_STACKPROTECTOR
  	cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
08c2b394b   basile@opensource.dyc.edu   x86, build: Disab...
74
          ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(KBUILD_CPPFLAGS) $(biarch)),y)
5d707e9c8   Tejun Heo   stackprotector: u...
75
                  stackp-y := -fstack-protector
5d707e9c8   Tejun Heo   stackprotector: u...
76
77
78
79
                  KBUILD_CFLAGS += $(stackp-y)
          else
                  $(warning stack protector enabled but no compiler support)
          endif
0a6ef376d   Sam Ravnborg   x86: unification ...
80
  endif
dfec072ec   Vegard Nossum   kmemcheck: add th...
81
82
83
84
  # Don't unroll struct assignments with kmemcheck enabled
  ifeq ($(CONFIG_KMEMCHECK),y)
  	KBUILD_CFLAGS += $(call cc-option,-fno-builtin-memcpy)
  endif
0a6ef376d   Sam Ravnborg   x86: unification ...
85
86
87
88
89
90
91
92
93
94
95
96
  # Stackpointer is addressed different for 32 bit and 64 bit x86
  sp-$(CONFIG_X86_32) := esp
  sp-$(CONFIG_X86_64) := rsp
  
  # do binutils support CFI?
  cfi := $(call as-instr,.cfi_startproc
  .cfi_rel_offset $(sp-y)$(comma)0
  .cfi_endproc,-DCONFIG_AS_CFI=1)
  # is .cfi_signal_frame supported too?
  cfi-sigframe := $(call as-instr,.cfi_startproc
  .cfi_signal_frame
  .cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1)
9e5652922   Roland McGrath   x86: Use .cfi_sec...
97
  cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1)
d7acb92fe   H. Peter Anvin   x86-64, asm: If t...
98
99
100
101
102
103
  
  # does binutils support specific instructions?
  asinstr := $(call as-instr,fxsaveq (%rax),-DCONFIG_AS_FXSAVEQ=1)
  
  KBUILD_AFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr)
  KBUILD_CFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr)
0a6ef376d   Sam Ravnborg   x86: unification ...
104
105
  
  LDFLAGS := -m elf_$(UTS_MACHINE)
25dfeeb75   Sam Ravnborg   x86: share more o...
106
107
  
  # Speed up the build
0a6ef376d   Sam Ravnborg   x86: unification ...
108
  KBUILD_CFLAGS += -pipe
25dfeeb75   Sam Ravnborg   x86: share more o...
109
110
111
112
113
114
  # Workaround for a gcc prelease that unfortunately was shipped in a suse release
  KBUILD_CFLAGS += -Wno-sign-compare
  #
  KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
  # prevent gcc from generating any FP code by mistake
  KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
0a6ef376d   Sam Ravnborg   x86: unification ...
115

0a6ef376d   Sam Ravnborg   x86: unification ...
116
117
118
119
  KBUILD_CFLAGS += $(mflags-y)
  KBUILD_AFLAGS += $(mflags-y)
  
  ###
303395ac3   H. Peter Anvin   x86: Generate sys...
120
121
122
123
124
125
  # Syscall table generation
  
  archheaders:
  	$(Q)$(MAKE) $(build)=arch/x86/syscalls all
  
  ###
0a6ef376d   Sam Ravnborg   x86: unification ...
126
  # Kernel objects
700efc1b9   Eric W. Biederman   x86: introduce ke...
127
128
  head-y := arch/x86/kernel/head_$(BITS).o
  head-y += arch/x86/kernel/head$(BITS).o
0c51a965e   Huang, Ying   x86: extract comm...
129
  head-y += arch/x86/kernel/head.o
700efc1b9   Eric W. Biederman   x86: introduce ke...
130
  head-y += arch/x86/kernel/init_task.o
0a6ef376d   Sam Ravnborg   x86: unification ...
131
132
  
  libs-y  += arch/x86/lib/
d1f0ae5e2   Sam Ravnborg   x86: standardize ...
133
134
  # See arch/x86/Kbuild for content of core part of the kernel
  core-y += arch/x86/
0a6ef376d   Sam Ravnborg   x86: unification ...
135
136
137
138
139
140
141
  
  # drivers-y are linked after core-y
  drivers-$(CONFIG_MATH_EMULATION) += arch/x86/math-emu/
  drivers-$(CONFIG_PCI)            += arch/x86/pci/
  
  # must be linked after kernel/
  drivers-$(CONFIG_OPROFILE) += arch/x86/oprofile/
cf7700fe2   Rafael J. Wysocki   x86 PM: move 64-b...
142
  # suspend and hibernation support
0a6ef376d   Sam Ravnborg   x86: unification ...
143
  drivers-$(CONFIG_PM) += arch/x86/power/
cf7700fe2   Rafael J. Wysocki   x86 PM: move 64-b...
144

0a6ef376d   Sam Ravnborg   x86: unification ...
145
  drivers-$(CONFIG_FB) += arch/x86/video/
0a6ef376d   Sam Ravnborg   x86: unification ...
146
147
148
149
150
  
  ####
  # boot loader support. Several targets are kept for legacy purposes
  
  boot := arch/x86/boot
1648e4f80   H. Peter Anvin   x86, kbuild: make...
151
  BOOT_TARGETS = bzlilo bzdisk fdimage fdimage144 fdimage288 isoimage
f9c5107c2   H. Peter Anvin   x86: remove addit...
152
153
  
  PHONY += bzImage $(BOOT_TARGETS)
0a6ef376d   Sam Ravnborg   x86: unification ...
154
155
156
157
158
  
  # Default kernel to build
  all: bzImage
  
  # KBUILD_IMAGE specify target image being built
f9c5107c2   H. Peter Anvin   x86: remove addit...
159
  KBUILD_IMAGE := $(boot)/bzImage
0a6ef376d   Sam Ravnborg   x86: unification ...
160

f9c5107c2   H. Peter Anvin   x86: remove addit...
161
  bzImage: vmlinux
ca0e9badd   Masami Hiramatsu   x86: X86 instruct...
162
163
164
  ifeq ($(CONFIG_X86_DECODER_SELFTEST),y)
  	$(Q)$(MAKE) $(build)=arch/x86/tools posttest
  endif
0a6ef376d   Sam Ravnborg   x86: unification ...
165
166
  	$(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE)
  	$(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot
41b3eae66   Jan Beulich   x86: minor polish...
167
  	$(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/$@
0a6ef376d   Sam Ravnborg   x86: unification ...
168

f9c5107c2   H. Peter Anvin   x86: remove addit...
169
170
  $(BOOT_TARGETS): vmlinux
  	$(Q)$(MAKE) $(build)=$(boot) $@
0a6ef376d   Sam Ravnborg   x86: unification ...
171

1648e4f80   H. Peter Anvin   x86, kbuild: make...
172
173
174
  PHONY += install
  install:
  	$(Q)$(MAKE) $(build)=$(boot) $@
0a6ef376d   Sam Ravnborg   x86: unification ...
175
176
177
178
179
180
181
182
183
184
  PHONY += vdso_install
  vdso_install:
  	$(Q)$(MAKE) $(build)=arch/x86/vdso $@
  
  archclean:
  	$(Q)rm -rf $(objtree)/arch/i386
  	$(Q)rm -rf $(objtree)/arch/x86_64
  	$(Q)$(MAKE) $(clean)=$(boot)
  
  define archhelp
37f30e21d   Andi Kleen   x86: document fdi...
185
186
    echo  '* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)'
    echo  '  install      - Install kernel using'
caa27b66b   Sam Ravnborg   kbuild: use INSTA...
187
188
    echo  '                  (your) ~/bin/$(INSTALLKERNEL) or'
    echo  '                  (distribution) /sbin/$(INSTALLKERNEL) or'
37f30e21d   Andi Kleen   x86: document fdi...
189
190
191
192
193
194
195
196
    echo  '                  install to $$(INSTALL_PATH) and run lilo'
    echo  '  fdimage      - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)'
    echo  '  fdimage144   - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)'
    echo  '  fdimage288   - Create 2.8MB boot floppy image (arch/x86/boot/fdimage)'
    echo  '  isoimage     - Create a boot CD-ROM image (arch/x86/boot/image.iso)'
    echo  '                  bzdisk/fdimage*/isoimage also accept:'
    echo  '                  FDARGS="..."  arguments for the booted kernel'
    echo  '                  FDINITRD=file initrd for the booted kernel'
0a6ef376d   Sam Ravnborg   x86: unification ...
197
  endef