Blame view

arch/arm64/Makefile 4.52 KB
8c2c3df31   Catalin Marinas   arm64: Build infr...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  #
  # arch/arm64/Makefile
  #
  # This file is included by the global makefile so that you can add your own
  # architecture-specific flags and dependencies.
  #
  # 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) 1995-2001 by Russell King
  
  LDFLAGS_vmlinux	:=-p --no-undefined -X
  CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET=$(TEXT_OFFSET)
8c2c3df31   Catalin Marinas   arm64: Build infr...
15
  GZFLAGS		:=-9
1e48ef7fc   Ard Biesheuvel   arm64: add suppor...
16
  ifneq ($(CONFIG_RELOCATABLE),)
b9dce7f1b   Ard Biesheuvel   arm64: kernel: fo...
17
  LDFLAGS_vmlinux		+= -pie -shared -Bsymbolic
1e48ef7fc   Ard Biesheuvel   arm64: add suppor...
18
  endif
6ffe9923f   Will Deacon   arm64: errata: Pa...
19
20
21
22
23
24
25
  ifeq ($(CONFIG_ARM64_ERRATUM_843419),y)
    ifeq ($(call ld-option, --fix-cortex-a53-843419),)
  $(warning ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum)
    else
  LDFLAGS_vmlinux	+= --fix-cortex-a53-843419
    endif
  endif
8c2c3df31   Catalin Marinas   arm64: Build infr...
26
  KBUILD_DEFCONFIG := defconfig
c09d6a04d   Will Deacon   arm64: atomics: p...
27
28
29
30
31
32
33
34
35
36
  # Check for binutils support for specific extensions
  lseinstr := $(call as-instr,.arch_extension lse,-DCONFIG_AS_LSE=1)
  
  ifeq ($(CONFIG_ARM64_LSE_ATOMICS), y)
    ifeq ($(lseinstr),)
  $(warning LSE atomics not supported by binutils)
    endif
  endif
  
  KBUILD_CFLAGS	+= -mgeneral-regs-only $(lseinstr)
728dabd6d   William Cohen   Eliminate the .eh...
37
  KBUILD_CFLAGS	+= -fno-asynchronous-unwind-tables
67dfa1751   dann frazier   arm64: errata: Ad...
38
  KBUILD_CFLAGS	+= $(call cc-option, -mpc-relative-literal-loads)
c09d6a04d   Will Deacon   arm64: atomics: p...
39
  KBUILD_AFLAGS	+= $(lseinstr)
a0974e6e2   Will Deacon   arm64: big-endian...
40
41
42
43
  ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
  KBUILD_CPPFLAGS	+= -mbig-endian
  AS		+= -EB
  LD		+= -EB
cfa88c794   Michal Marek   arm64: Set UTS_MA...
44
  UTS_MACHINE	:= aarch64_be
a0974e6e2   Will Deacon   arm64: big-endian...
45
  else
8c2c3df31   Catalin Marinas   arm64: Build infr...
46
47
48
  KBUILD_CPPFLAGS	+= -mlittle-endian
  AS		+= -EL
  LD		+= -EL
cfa88c794   Michal Marek   arm64: Set UTS_MA...
49
  UTS_MACHINE	:= aarch64
a0974e6e2   Will Deacon   arm64: big-endian...
50
  endif
8c2c3df31   Catalin Marinas   arm64: Build infr...
51

8c2c3df31   Catalin Marinas   arm64: Build infr...
52
  CHECKFLAGS	+= -D__aarch64__
fd045f6cd   Ard Biesheuvel   arm64: add suppor...
53
  ifeq ($(CONFIG_ARM64_MODULE_CMODEL_LARGE), y)
b6dd8e071   Will Deacon   arm64: errata: us...
54
  KBUILD_CFLAGS_MODULE	+= -mcmodel=large
df057cc7b   Will Deacon   arm64: errata: ad...
55
  endif
fd045f6cd   Ard Biesheuvel   arm64: add suppor...
56
57
58
  ifeq ($(CONFIG_ARM64_MODULE_PLTS),y)
  KBUILD_LDFLAGS_MODULE	+= -T $(srctree)/arch/arm64/kernel/module.lds
  endif
8c2c3df31   Catalin Marinas   arm64: Build infr...
59
60
61
62
  # Default value
  head-y		:= arch/arm64/kernel/head.o
  
  # The byte offset of the kernel image in RAM from the start of RAM.
da57a369d   Mark Rutland   arm64: Enable TEX...
63
  ifeq ($(CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET), y)
aed7eb836   Mark Rutland   arm64: fix alignm...
64
65
66
67
  TEXT_OFFSET := $(shell awk "BEGIN {srand(); printf \"0x%06x
  \", \
  		 int(2 * 1024 * 1024 / (2 ^ $(CONFIG_ARM64_PAGE_SHIFT)) * \
  		 rand()) * (2 ^ $(CONFIG_ARM64_PAGE_SHIFT))}")
da57a369d   Mark Rutland   arm64: Enable TEX...
68
  else
8c2c3df31   Catalin Marinas   arm64: Build infr...
69
  TEXT_OFFSET := 0x00080000
da57a369d   Mark Rutland   arm64: Enable TEX...
70
  endif
8c2c3df31   Catalin Marinas   arm64: Build infr...
71

39d114ddc   Andrey Ryabinin   arm64: add KASAN ...
72
73
74
75
76
77
78
  # KASAN_SHADOW_OFFSET = VA_START + (1 << (VA_BITS - 3)) - (1 << 61)
  # in 32-bit arithmetic
  KASAN_SHADOW_OFFSET := $(shell printf "0x%08x00000000
  " $$(( \
  			(0xffffffff & (-1 << ($(CONFIG_ARM64_VA_BITS) - 32))) \
  			+ (1 << ($(CONFIG_ARM64_VA_BITS) - 32 - 3)) \
  			- (1 << (64 - 32 - 3)) )) )
8c2c3df31   Catalin Marinas   arm64: Build infr...
79
80
81
  export	TEXT_OFFSET GZFLAGS
  
  core-y		+= arch/arm64/kernel/ arch/arm64/mm/
e54bcde3d   Zi Shen Lim   arm64: eBPF JIT c...
82
  core-$(CONFIG_NET) += arch/arm64/net/
6211753fd   Marc Zyngier   arm64: KVM: Build...
83
  core-$(CONFIG_KVM) += arch/arm64/kvm/
63917f0b5   Catalin Marinas   Merge branch 'kvm...
84
  core-$(CONFIG_XEN) += arch/arm64/xen/
2c98833a4   Ard Biesheuvel   arm64/crypto: SHA...
85
  core-$(CONFIG_CRYPTO) += arch/arm64/crypto/
8c2c3df31   Catalin Marinas   arm64: Build infr...
86
  libs-y		:= arch/arm64/lib/ $(libs-y)
ad08fd494   Steve Capper   arm64: Adjust EFI...
87
  core-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
8c2c3df31   Catalin Marinas   arm64: Build infr...
88
89
  
  # Default target when executing plain make
70f915a29   Rob Herring   arm64: Add dtbs t...
90
91
  KBUILD_IMAGE	:= Image.gz
  KBUILD_DTBS	:= dtbs
8c2c3df31   Catalin Marinas   arm64: Build infr...
92

70f915a29   Rob Herring   arm64: Add dtbs t...
93
  all:	$(KBUILD_IMAGE) $(KBUILD_DTBS)
8c2c3df31   Catalin Marinas   arm64: Build infr...
94
95
  
  boot := arch/arm64/boot
0723c05fb   Olof Johansson   arm64: enable mor...
96
97
  Image: vmlinux
  	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
9ca4e58c2   Masahiro Yamada   arm64: fix boot i...
98
  Image.%: Image
70f915a29   Rob Herring   arm64: Add dtbs t...
99
  	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
8c2c3df31   Catalin Marinas   arm64: Build infr...
100

8684fa3e7   Masahiro Yamada   arm64: kbuild: ma...
101
  zinstall install:
70f915a29   Rob Herring   arm64: Add dtbs t...
102
  	$(Q)$(MAKE) $(build)=$(boot) $@
8c2c3df31   Catalin Marinas   arm64: Build infr...
103

70f915a29   Rob Herring   arm64: Add dtbs t...
104
105
  %.dtb: scripts
  	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
862f464a5   Robert Richter   dts, arm64: Add d...
106
  PHONY += dtbs dtbs_install
9fb5e5372   Robert Richter   dts, kbuild: Fact...
107
108
  
  dtbs: prepare scripts
d38726c48   Robert Richter   dts, arm/arm64: R...
109
  	$(Q)$(MAKE) $(build)=$(boot)/dts
8c2c3df31   Catalin Marinas   arm64: Build infr...
110

9fb5e5372   Robert Richter   dts, kbuild: Fact...
111
112
  dtbs_install:
  	$(Q)$(MAKE) $(dtbinst)=$(boot)/dts
3c01742a8   Kyle McMartin   arm64/Makefile: p...
113
114
115
  PHONY += vdso_install
  vdso_install:
  	$(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso $@
8c2c3df31   Catalin Marinas   arm64: Build infr...
116
117
118
  # We use MRPROPER_FILES and CLEAN_FILES now
  archclean:
  	$(Q)$(MAKE) $(clean)=$(boot)
c7c52e482   Jungseok Lee   arm64: Add dtb fi...
119
  	$(Q)$(MAKE) $(clean)=$(boot)/dts
8c2c3df31   Catalin Marinas   arm64: Build infr...
120

a66649dab   Kevin Brodsky   arm64: fix vdso-o...
121
122
123
124
125
126
127
128
129
  # We need to generate vdso-offsets.h before compiling certain files in kernel/.
  # In order to do that, we should use the archprepare target, but we can't since
  # asm-offsets.h is included in some files used to generate vdso-offsets.h, and
  # asm-offsets.h is built in prepare0, for which archprepare is a dependency.
  # Therefore we need to generate the header after prepare0 has been made, hence
  # this hack.
  prepare: vdso_prepare
  vdso_prepare: prepare0
  	$(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso include/generated/vdso-offsets.h
8c2c3df31   Catalin Marinas   arm64: Build infr...
130
131
132
  define archhelp
    echo  '* Image.gz      - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)'
    echo  '  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
70f915a29   Rob Herring   arm64: Add dtbs t...
133
    echo  '* dtbs          - Build device tree blobs for enabled boards'
862f464a5   Robert Richter   dts, arm64: Add d...
134
    echo  '  dtbs_install  - Install dtbs to $(INSTALL_DTBS_PATH)'
8c2c3df31   Catalin Marinas   arm64: Build infr...
135
136
137
138
139
140
    echo  '  install       - Install uncompressed kernel'
    echo  '  zinstall      - Install compressed kernel'
    echo  '                  Install using (your) ~/bin/installkernel or'
    echo  '                  (distribution) /sbin/installkernel or'
    echo  '                  install to $$(INSTALL_PATH) and run lilo'
  endef