diff --git a/src/system/glue/arch/arm64/Jamfile b/src/system/glue/arch/arm64/Jamfile new file mode 100644 index 0000000000..678f32b95a --- /dev/null +++ b/src/system/glue/arch/arm64/Jamfile @@ -0,0 +1,21 @@ +SubDir HAIKU_TOP src system glue arch arm64 ; + +local architectureObject ; +for architectureObject in [ MultiArchSubDirSetup arm64 ] { + on $(architectureObject) { + local architecture = $(TARGET_PACKAGING_ARCH) ; + + UsePrivateSystemHeaders ; + + local sources = + crti.S + crtn.S + ; + MergeObject <$(architecture)>glue_arch_$(TARGET_ARCH).o : $(sources) ; + + if $(HAIKU_BUILD_TYPE) = bootstrap { + # build a version for stage0 of the bootstrap process + BootstrapStage0PlatformObjects [ FGristFiles $(sources) ] : true ; + } + } +} diff --git a/src/system/glue/arch/arm64/crti.S b/src/system/glue/arch/arm64/crti.S new file mode 100644 index 0000000000..680b4f24a5 --- /dev/null +++ b/src/system/glue/arch/arm64/crti.S @@ -0,0 +1,28 @@ +/* + * Copyright 2005, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ + +/** This file contains the first part of the ".init" and ".fini" sections in + * the ELF executable. + * The functions defined here will be called during initialization/termination + * of the loaded executable/library. The ".init" and ".fini" sections are + * stacked together like this: + * + * crti.S entry point + * call to _init_before/_term_before + * crtbegin.S GCC specific: constructors/destructors are called, ... + * crtend.S + * crtn.S call to _init_after/_term_after + * exit + */ + +#define FUNCTION(x) .global x; .type x,%function; x + +.section .init +FUNCTION(_init): + // crtbegin.o stuff comes here + +.section .fini +FUNCTION(_fini): + // crtbegin.o stuff comes here diff --git a/src/system/glue/arch/arm64/crtn.S b/src/system/glue/arch/arm64/crtn.S new file mode 100644 index 0000000000..48e3dc6170 --- /dev/null +++ b/src/system/glue/arch/arm64/crtn.S @@ -0,0 +1,17 @@ +/* + * Copyright 2005, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ + +/** This file contains the final part of the ".init" and ".fini" sections in + * the ELF executable. It is tightly connected to crti.S. + * Have a look at crti.S to find a description of what happens here. + */ + +.section .init + // the image ID and program args are still on the stack + + +.section .fini + // the image ID and program args are still on the stack +