Skip to content

Commit 3f9807a

Browse files
committed
Changes for ARM64
1 parent c417375 commit 3f9807a

15 files changed

Lines changed: 115 additions & 14 deletions

File tree

EXTERNAL_HEADERS/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ INSTALL_MI_LIST =
3838

3939
INSTALL_MI_DIR = .
4040

41-
INSTALL_KF_MI_LIST = ${KERNEL_FILES}
41+
INSTALL_KF_MI_LIST = ${EXPORT_FILES} ${KERNEL_FILES}
4242

4343
INSTALL_KF_MI_LCL_LIST = ${KERNEL_FILES}
4444

SETUP/kextsymboltool/kextsymboltool.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@ lookup_arch(const char *archstring)
474474
static const NXArchInfo archlist[] = {
475475
{ "x86_64", 0x01000007 /* CPU_TYPE_X86_64 */, 3 /* CPU_SUBTYPE_X86_64_ALL */, NX_LittleEndian, NULL },
476476
{ "x86_64h", 0x01000007 /* CPU_TYPE_X86_64 */, 8 /* CPU_SUBTYPE_X86_64_H */, NX_LittleEndian, NULL },
477+
{ "arm64", 0x0100000c /* CPU_TYPE_ARM64 */, 0 /* CPU_SUBTYPE_ARM64_ALL */, NX_LittleEndian, NULL },
477478
};
478479
unsigned long i;
479480

bsd/dev/arm/kern_machdep.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,7 @@ grade_binary(cpu_type_t exectype, cpu_subtype_t execsubtype)
6868
return 8;
6969
}
7070
break;
71-
72-
73-
break;
71+
}
7472
#else /* __arm64__ */
7573

7674
case CPU_TYPE_ARM:

libkern/conf/files.arm64

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

makedefs/MakeInc.cmd

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,12 @@ SUPPORTED_SIMULATOR_PLATFORMS := iPhoneSimulator iPhoneNanoSimulator tvSimulator
123123
SUPPORTED_PLATFORMS := MacOSX $(SUPPORTED_SIMULATOR_PLATFORMS) $(SUPPORTED_EMBEDDED_PLATFORMS)
124124

125125
# Platform-specific tools
126-
ifneq ($(filter $(SUPPORTED_EMBEDDED_PLATFORMS),$(PLATFORM)),)
127-
ifeq ($(EMBEDDED_DEVICE_MAP),)
128-
export EMBEDDED_DEVICE_MAP := $(shell $(XCRUN) -sdk $(SDKROOT) -find embedded_device_map)
129-
endif
130-
EDM_DBPATH ?= $(PLATFORMPATH)/usr/local/standalone/firmware/device_map.db
131-
endif
126+
#ifneq ($(filter $(SUPPORTED_EMBEDDED_PLATFORMS),$(PLATFORM)),)
127+
#ifeq ($(EMBEDDED_DEVICE_MAP),)
128+
# export EMBEDDED_DEVICE_MAP := $(shell $(XCRUN) -sdk $(SDKROOT) -find embedded_device_map)
129+
#endif
130+
#EDM_DBPATH ?= $(PLATFORMPATH)/usr/local/standalone/firmware/device_map.db
131+
#endif
132132

133133
# Scripts or tools we build ourselves
134134
#

makedefs/MakeInc.def

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
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

2323
SUPPORTED_X86_64_MACHINE_CONFIGS = NONE
2424
SUPPORTED_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

154156
CWARNFLAGS_STD = \
155157
$(WARNFLAGS_STD) \
@@ -188,7 +190,7 @@ endef
188190

189191
ARCH_FLAGS_X86_64 = -arch x86_64
190192
ARCH_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

229231
CFLAGS_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

232236
CFLAGS_RELEASEX86_64 = -O2
233237
CFLAGS_DEVELOPMENTX86_64 = -O2
@@ -248,6 +252,12 @@ CFLAGS_DEVELOPMENTARM = -O2
248252
CFLAGS_DEBUGARM = -O0
249253
CFLAGS_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)
264274
BUILD_LTO = 0
265275
KASAN_SHIFT_X86_64=0xdffffe1000000000
266276
KASAN_SHIFT_X86_64H=$(KASAN_SHIFT_X86_64)
277+
KASAN_SHIFT_ARM64=$(KASAN_SHIFT_ARM64)
267278
KASAN_SHIFT=$($(addsuffix $(CURRENT_ARCH_CONFIG),KASAN_SHIFT_))
268279
KASAN_BLACKLIST=$(OBJROOT)/san/kasan-blacklist-$(CURRENT_ARCH_CONFIG_LC)
269280
CFLAGS_GEN += -DKASAN=1 -DKASAN_SHIFT=$(KASAN_SHIFT) -fsanitize=address \
@@ -314,6 +325,7 @@ SFLAGS_PROFILE =
314325

315326
SFLAGS_X86_64 = $(CFLAGS_X86_64)
316327
SFLAGS_X86_64H = $(CFLAGS_X86_64H)
328+
SFLAGS_ARM64 = $(CFLAGS_ARM64)
317329

318330
SFLAGS = $(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:
413425
CFLAGS_X86_64 += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET)
414426
CFLAGS_X86_64H += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET)
427+
CFLAGS_ARM64 += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET)
415428

416429
LDFLAGS_KERNEL_DEBUGX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64)
417430
LDFLAGS_KERNEL_DEVELOPMENTX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64)
@@ -424,6 +437,41 @@ LDFLAGS_KERNEL_DEVELOPMENTX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H)
424437
LDFLAGS_KERNEL_KASANX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H)
425438
LDFLAGS_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

428476
LDFLAGS_KERNEL = $(LDFLAGS_KERNEL_GEN) \
429477
$(LDFLAGS_KERNEL_SDK) \
@@ -616,6 +664,7 @@ DSYMUTIL_FLAGS_GEN = --minimize
616664

617665
DSYMUTIL_FLAGS_X86_64 = --arch=x86_64
618666
DSYMUTIL_FLAGS_X86_64H = --arch=x86_64h
667+
DSYMUTIL_FLAGS_ARM64 = --arch=arm64
619668

620669
DSYMUTIL_FLAGS = $(DSYMUTIL_FLAGS_GEN) \
621670
$($(addsuffix $(CURRENT_ARCH_CONFIG),DSYMUTIL_FLAGS_))

makedefs/MakeInc.top

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ endif
8787
override DEFAULT_I386_MACHINE_CONFIG := NONE
8888
override DEFAULT_X86_64_MACHINE_CONFIG := NONE
8989
override DEFAULT_X86_64H_MACHINE_CONFIG := NONE
90+
override DEFAULT_ARM64_MACHINE_CONFIG := NONE
9091

9192

9293
# This is typically never specified (TARGET_CONFIGS is used)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#include <chud/chud_xnu_private.h>
2+
3+
__private_extern__ void
4+
chudxnu_cpu_signal_handler(void)
5+
{
6+
}
7+
8+
void *
9+
chudxnu_cpu_alloc(boolean_t boot_processor)
10+
{
11+
return NULL;
12+
}
13+
14+
void
15+
chudxnu_cpu_free(void *cp)
16+
{
17+
}

osfmk/chud/arm/chud_thread_arm.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#include <mach/mach_types.h>
2+
#include <chud/chud_xnu.h>
3+
4+
__private_extern__
5+
kern_return_t chudxnu_thread_get_callstack64_kperf(
6+
thread_t thread,
7+
uint64_t *callstack,
8+
mach_msg_type_number_t *count,
9+
boolean_t is_user)
10+
{
11+
return KERN_SUCCESS;
12+
}

osfmk/chud/arm/chud_xnu_private.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#ifndef _ARM64_CHUD_XNU_PRIVATE_H_
2+
#define _ARM64_CHUD_XNU_PRIVATE_H_
3+
4+
extern void chudxnu_cpu_signal_handler(void);
5+
6+
#endif /* _ARM64_CHUD_XNU_PRIVATE_H_ */

0 commit comments

Comments
 (0)