feat: add support for aarch64 timer/interrupts, port MontaukOS userspace
This commit is contained in:
1 parent
8b6379fb7e
commit
8c09ccef66
101 files changed
+1720
-629
No files matched your search
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* aarch64-montauk.h
|
||||
* GCC target definitions for aarch64-montauk userspace
|
||||
* (installed as gcc/config/aarch64/montauk.h)
|
||||
* Copyright (c) 2026 Daniel Hammer
|
||||
*
|
||||
* Programs are static, non-PIE ET_EXEC images loaded by the kernel
|
||||
* ELF loader (kernel/src/Sched/ElfLoader.cpp) at their linked
|
||||
* address. The loader maps 4 KiB pages, so segments must not use
|
||||
* the 64 KiB AArch64 default alignment.
|
||||
*/
|
||||
|
||||
#undef TARGET_OS_CPP_BUILTINS
|
||||
#define TARGET_OS_CPP_BUILTINS() \
|
||||
do { \
|
||||
builtin_define("__montauk__"); \
|
||||
builtin_define("__MONTAUK__"); \
|
||||
builtin_assert("system=montauk"); \
|
||||
} while (0)
|
||||
|
||||
/* Inline LL/SC atomics: outline atomics pick LSE at run time from HWCAP,
|
||||
which Montauk does not provide, and their helpers live in libgcc, which
|
||||
-nostdlib programs never link.
|
||||
Signed plain char, as on x86_64-montauk: the userspace is shared between
|
||||
the architectures and its CP1252 text handling assumes it.
|
||||
-moutline-atomics / -funsigned-char still override. */
|
||||
#undef CC1_SPEC
|
||||
#define CC1_SPEC "%{!moutline-atomics:-mno-outline-atomics} %{!funsigned-char:-fsigned-char}"
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
"-maarch64elf -X -z max-page-size=0x1000 %{shared:-shared} %{!shared:-static}"
|
||||
|
||||
/* As on x86_64-montauk: crt1/crti/crtn from the Montauk libc,
|
||||
crtbegin/crtend from libgcc. */
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC "crt1.o%s crti.o%s crtbegin.o%s"
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC "crtend.o%s crtn.o%s"
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC "-lc"
|
||||
Reference in new issue
Block a user