99#
1010# Architecture Configuration options
1111#
12- SUPPORTED_ARCH_CONFIGS := X86_64 X86_64H
12+ SUPPORTED_ARCH_CONFIGS := X86_64 X86_64H ARM64
1313
1414#
1515# Kernel Configuration options
@@ -22,6 +22,7 @@ SUPPORTED_KERNEL_CONFIGS = RELEASE DEVELOPMENT DEBUG PROFILE KASAN
2222
2323SUPPORTED_X86_64_MACHINE_CONFIGS = NONE
2424SUPPORTED_X86_64H_MACHINE_CONFIGS = NONE
25+ SUPPORTED_ARM64_MACHINE_CONFIGS = NONE
2526
2627
2728#
@@ -149,7 +150,8 @@ WARNFLAGS_STD := \
149150 -Wno-used-but-marked-unused \
150151 -Wno-variadic-macros \
151152 -Wno-vla \
152- -Wno-zero-length-array
153+ -Wno-zero-length-array \
154+ -Wno-zero-as-null-pointer-constant
153155
154156CWARNFLAGS_STD = \
155157 $(WARNFLAGS_STD ) \
@@ -188,7 +190,7 @@ endef
188190
189191ARCH_FLAGS_X86_64 = -arch x86_64
190192ARCH_FLAGS_X86_64H = -arch x86_64h
191-
193+ ARCH_FLAGS_ARM64 = -arch arm64
192194
193195
194196#
@@ -228,6 +230,8 @@ CFLAGS_X86_64 = -Dx86_64 -DX86_64 -D__X86_64__ -DLP64 \
228230
229231CFLAGS_X86_64H = $(CFLAGS_X86_64 )
230232
233+ CFLAGS_ARM64 = -Darm64 -DARM64 -D__arm64__ -D__ARM64__ -DLP64 \
234+ -DCONFIG_EMBEDDED -mkernel -DARM64_BOARD_CONFIG_T8011=1
231235
232236CFLAGS_RELEASEX86_64 = -O2
233237CFLAGS_DEVELOPMENTX86_64 = -O2
@@ -248,6 +252,12 @@ CFLAGS_DEVELOPMENTARM = -O2
248252CFLAGS_DEBUGARM = -O0
249253CFLAGS_PROFILEARM = -O2
250254
255+ CFLAGS_RELEASEARM64 = -O2
256+ CFLAGS_DEVELOPMENTARM64 = -O2
257+ CFLAGS_KASANARM64 = $(CFLAGS_DEVELOPMENTARM64 )
258+ # No space optimization for the DEBUG kernel for the benefit of gdb:
259+ CFLAGS_DEBUGARM64 = -O0
260+ CFLAGS_PROFILEARM64 = -O2
251261
252262
253263#
@@ -264,6 +274,7 @@ ifeq ($(KASAN),1)
264274BUILD_LTO = 0
265275KASAN_SHIFT_X86_64 =0xdffffe1000000000
266276KASAN_SHIFT_X86_64H =$(KASAN_SHIFT_X86_64 )
277+ KASAN_SHIFT_ARM64 =$(KASAN_SHIFT_ARM64 )
267278KASAN_SHIFT =$($(addsuffix $(CURRENT_ARCH_CONFIG ) ,KASAN_SHIFT_) )
268279KASAN_BLACKLIST =$(OBJROOT ) /san/kasan-blacklist-$(CURRENT_ARCH_CONFIG_LC )
269280CFLAGS_GEN += -DKASAN=1 -DKASAN_SHIFT=$(KASAN_SHIFT ) -fsanitize=address \
@@ -314,6 +325,7 @@ SFLAGS_PROFILE =
314325
315326SFLAGS_X86_64 = $(CFLAGS_X86_64 )
316327SFLAGS_X86_64H = $(CFLAGS_X86_64H )
328+ SFLAGS_ARM64 = $(CFLAGS_ARM64 )
317329
318330SFLAGS = $(SFLAGS_GEN ) \
319331 $($(addsuffix $(CURRENT_MACHINE_CONFIG ) ,MACHINE_FLAGS_$(CURRENT_ARCH_CONFIG ) _) ) \
@@ -412,6 +424,7 @@ endif
412424# Define KERNEL_BASE_OFFSET so known at compile time:
413425CFLAGS_X86_64 += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET )
414426CFLAGS_X86_64H += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET )
427+ CFLAGS_ARM64 += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET )
415428
416429LDFLAGS_KERNEL_DEBUGX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64 )
417430LDFLAGS_KERNEL_DEVELOPMENTX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64 )
@@ -424,6 +437,41 @@ LDFLAGS_KERNEL_DEVELOPMENTX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H)
424437LDFLAGS_KERNEL_KASANX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H )
425438LDFLAGS_KERNEL_PROFILEX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H )
426439
440+ LDFLAGS_KERNEL_RELEASEARM64 = \
441+ -Wl,-pie \
442+ -Wl,-static \
443+ -Wl,-segaddr,__HIB,$(KERNEL_HIB_SECTION_BASE ) \
444+ -Wl,-image_base,$(KERNEL_TEXT_BASE ) \
445+ -Wl,-seg_page_size,__TEXT,0x200000 \
446+ -Wl,-sectalign,__HIB,__bootPT,0x1000 \
447+ -Wl,-sectalign,__HIB,__desc,0x1000 \
448+ -Wl,-sectalign,__HIB,__data,0x1000 \
449+ -Wl,-sectalign,__HIB,__text,0x1000 \
450+ -Wl,-sectalign,__HIB,__const,0x1000 \
451+ -Wl,-sectalign,__HIB,__bss,0x1000 \
452+ -Wl,-sectalign,__HIB,__common,0x1000 \
453+ -Wl,-sectalign,__HIB,__llvm_prf_cnts,0x1000 \
454+ -Wl,-sectalign,__HIB,__llvm_prf_names,0x1000 \
455+ -Wl,-sectalign,__HIB,__llvm_prf_data,0x1000 \
456+ -Wl,-sectalign,__HIB,__textcoal_nt,0x1000 \
457+ -Wl,-rename_section,__DATA,__const,__CONST,__constdata \
458+ -Wl,-no_zero_fill_sections \
459+ $(LDFLAGS_NOSTRIP_FLAG )
460+
461+ ifeq ($(KASAN ) ,1)
462+ LDFLAGS_KERNEL_RELEASEARM64 += \
463+ -Wl,-sectalign,__HIB,__cstring,0x1000 \
464+ -Wl,-sectalign,__HIB,__asan_globals,0x1000 \
465+ -Wl,-sectalign,__HIB,__asan_liveness,0x1000 \
466+ -Wl,-sectalign,__HIB,__mod_term_func,0x1000 \
467+ -Wl,-rename_section,__HIB,__mod_init_func,__NULL,__mod_init_func \
468+ -Wl,-rename_section,__HIB,__eh_frame,__NULL,__eh_frame
469+ endif
470+
471+ LDFLAGS_KERNEL_DEBUGARM64 = $(LDFLAGS_KERNEL_RELEASEARM64 )
472+ LDFLAGS_KERNEL_DEVELOPMENTARM64 = $(LDFLAGS_KERNEL_RELEASEARM64 )
473+ LDFLAGS_KERNEL_KASANARM64 = $(LDFLAGS_KERNEL_RELEASEARM64 )
474+ LDFLAGS_KERNEL_PROFILEARM64 = $(LDFLAGS_KERNEL_RELEASEARM64 )
427475
428476LDFLAGS_KERNEL = $(LDFLAGS_KERNEL_GEN ) \
429477 $(LDFLAGS_KERNEL_SDK ) \
@@ -616,6 +664,7 @@ DSYMUTIL_FLAGS_GEN = --minimize
616664
617665DSYMUTIL_FLAGS_X86_64 = --arch=x86_64
618666DSYMUTIL_FLAGS_X86_64H = --arch=x86_64h
667+ DSYMUTIL_FLAGS_ARM64 = --arch=arm64
619668
620669DSYMUTIL_FLAGS = $(DSYMUTIL_FLAGS_GEN ) \
621670 $($(addsuffix $(CURRENT_ARCH_CONFIG ) ,DSYMUTIL_FLAGS_) )
0 commit comments