Hello,
Thanks for reviving the effort :D
I have pushed a few trivial patches which don't even pose copyright
questions. I let you discuss with Sergey and Jessica :)
Samuel
Paulo Duarte, le dim. 24 mai 2026 02:43:04 +0100, a ecrit:
> Hello Samuel,
>
> This series adds the gnumach kernel-side implementation for the
> aarch64 ABI Sergey landed in April 2024, plus the test-suite arms.
> Patch 01 brings in the aarch64-only sources from bugaevc/wip-aarch64
> verbatim, with Sergey as Author; the rest is mine.
>
> The meaningful divergence from wip-aarch64 is what I left out:
> roughly 150 files of cross-arch refactoring across kern/, ipc/, vm/,
> device/intr.{c,h}, and the i386 tree. Each got replaced with a
> smaller per-arch shim under aarch64/ so kern/bootstrap.c,
> device/intr.{c,h}, kern/lock.h, and the i386 trees all stay
> bit-identical to current master. The shared-file footprint outside
> aarch64/ is four files: a new ELF constant, two missing decls plus
> their include, and a linker-symbol filter extension.
>
> The bootstrap reader handles two DTB conventions:
> /chosen/multiboot,module (Sergey's, multi-module, fed by u-boot's
> `fdt mknod` per aarch64/BOOTING) and the standard arm64
> /chosen/linux,initrd-* so any stock bootloader works. Tests use the
> multiboot,module path; linux,initrd runs but QEMU's `-initrd`
> placement bumps into the single-segment vm_page heap. A
> multi-segment heap is on my follow-up list.
>
> Patches 11 and 12 each bundle two fixes that surfaced together when
> I first delivered a bootstrap module end-to-end and ran
> tests/test-thread-state-fp. I haven't reproduced them against
> wip-aarch64 directly (at least the kvtophys-contract half of patch
> 11 plausibly belongs to this series' integration with upstream's
> bootstrap.c rather than the imported code), but the fixes are needed
> either way. Splits are recoverable if anyone would rather review
> them separately.
>
> Tested: 12/12 pass on x86_64, i686, and aarch64 under qemu. No
> bare-metal validation yet. I plan to build bootable images and boot
> the kernel on Apple M1 / Raspberry Pi (aarch64) and an x86_64 box
> (x86_64 + i686). Help on any of these welcome.
>
> I used substantial AI assistance (Claude Code) on this. Every line is
> mine and the FSF assignment is on its way. Disclosing in the cover
> rather than per-commit since bug-hurd has no precedent either way;
> happy to add `Assisted-by:` per the Linux kernel's December 2025 form
> (https://docs.kernel.org/process/coding-assistants.html) if you'd
> rather see that.
>
> Sergey, especially interested in your read on patches 2 and 10's
> choice of small per-arch shims over rewriting shared code, and on
> whether the four test-time bugs in 11-12 read as wip-aarch64-inherent
> or as artefacts of how this series wires the import to upstream's
> bootstrap.c.
>
> Published at:
> https://github.com/paulofduarte/gnumach/tree/aarch64-tests
>
> Paulo
>
> Paulo Duarte (17):
> aarch64: add per-arch lock.h shim for kern/lock.h's machine include
> aarch64: drop the ramdisk driver from the import
> aarch64: stub hpclock hooks for current master's clock subsystem
> mach: add EM_AARCH64 to the ELF machine constant list
> ipc: declare copyinmsg / copyoutmsg in <ipc/copy_user.h>
> build: extend ld_magic_routines for the aarch64 PIE kernel
> aarch64: move boot stack out of .bss so zero_out_bss doesn't clobber
> it
> device/dtb: read 8-byte cells as two 4-byte loads to survive pre-MMU
> access
> aarch64: route bootstrap modules through kern/bootstrap.c
> aarch64: complete end-to-end bootstrap module delivery
> aarch64: fix AARCH64_FLOAT_STATE save/restore and setstatus alignment
> aarch64: accept linux,initrd-* DTB nodes as bootstrap modules
> tests: add aarch64 arm to start.S
> tests: support aarch64 in the test harness (u-boot + multiboot,module)
> tests: add aarch64 arm to testlib_thread_start.c
> tests: aarch64 arms for the per-arch test bodies
> tests: dedicated multiboot,module DTB bootstrap test (aarch64)
>
> Sergey Bugaev (1):
> aarch64: import the kernel-side port from bugaevc/wip-aarch64
>
> Makefile.am | 5 +-
> aarch64/BOOTING | 62 +
> aarch64/Makefrag.am | 80 ++
> aarch64/aarch64/aarch64asm.sym | 41 +
> aarch64/aarch64/bits/esr.h | 84 ++
> aarch64/aarch64/bits/hcr.h | 17 +
> aarch64/aarch64/bits/id_aa64.h | 148 ++
> aarch64/aarch64/bits/mair.h | 12 +
> aarch64/aarch64/bits/pte.h | 33 +
> aarch64/aarch64/bits/sctlr.h | 20 +
> aarch64/aarch64/bits/spsr.h | 42 +
> aarch64/aarch64/bits/tcr.h | 18 +
> aarch64/aarch64/boot.S | 106 ++
> aarch64/aarch64/conf.c | 53 +
> aarch64/aarch64/cpu_number.h | 36 +
> aarch64/aarch64/cswitch.S | 97 ++
> aarch64/aarch64/db_machdep.h | 25 +
> aarch64/aarch64/fpu.c | 157 +++
> aarch64/aarch64/fpu.h | 27 +
> aarch64/aarch64/hwcaps.c | 164 +++
> aarch64/aarch64/hwcaps.h | 31 +
> aarch64/aarch64/ipl.h | 24 +
> aarch64/aarch64/irq.c | 29 +
> aarch64/aarch64/irq.h | 76 +
> aarch64/aarch64/lock.h | 33 +
> aarch64/aarch64/locore.S | 837 +++++++++++
> aarch64/aarch64/locore.h | 50 +
> aarch64/aarch64/loose_ends.h | 24 +
> aarch64/aarch64/mach_aarch64.c | 45 +
> aarch64/aarch64/mach_param.h | 24 +
> aarch64/aarch64/machine_routines.h | 27 +
> aarch64/aarch64/model_dep.c | 527 +++++++
> aarch64/aarch64/model_dep.h | 61 +
> aarch64/aarch64/mp_desc.h | 22 +
> aarch64/aarch64/pcb.c | 396 ++++++
> aarch64/aarch64/pcb.h | 66 +
> aarch64/aarch64/percpu.c | 28 +
> aarch64/aarch64/percpu.h | 68 +
> aarch64/aarch64/pmap.c | 1248 +++++++++++++++++
> aarch64/aarch64/pmap.h | 95 ++
> aarch64/aarch64/setjmp.h | 19 +
> aarch64/aarch64/smp.h | 29 +
> aarch64/aarch64/spl.h | 100 ++
> aarch64/aarch64/strings.c | 59 +
> aarch64/aarch64/task.c | 38 +
> aarch64/aarch64/task.h | 55 +
> aarch64/aarch64/thread.h | 67 +
> aarch64/aarch64/trap.c | 683 +++++++++
> aarch64/aarch64/trap.h | 47 +
> aarch64/aarch64/undef.c | 31 +
> aarch64/aarch64/vm_param.h | 56 +
> aarch64/aarch64/xpr.h | 25 +
> aarch64/arm/gic-v2.c | 194 +++
> aarch64/arm/gic-v2.h | 38 +
> aarch64/arm/pl011.c | 207 +++
> aarch64/arm/pl011.h | 24 +
> aarch64/arm/psci.c | 152 ++
> aarch64/arm/psci.h | 29 +
> aarch64/arm/timer.c | 115 ++
> aarch64/arm/timer.h | 29 +
> aarch64/configfrag.ac | 4 +
> aarch64/include/mach/aarch64/exception.h | 25 +-
> aarch64/include/mach/aarch64/exec/elf.h | 44 +
> .../include/mach/aarch64/mach_aarch64.defs | 2 +-
> .../include/mach/aarch64/mach_aarch64_types.h | 2 +-
> .../include/mach/aarch64/machine_types.defs | 21 +-
> aarch64/include/mach/aarch64/multiboot.h | 61 +
> aarch64/include/mach/aarch64/thread_status.h | 2 +
> aarch64/include/mach/aarch64/vm_param.h | 4 +
> aarch64/ldscript | 35 +
> device/dtb.c | 440 ++++++
> device/dtb.h | 123 ++
> include/mach/exec/elf.h | 1 +
> ipc/copy_user.h | 15 +
> kern/exception.c | 1 +
> tests/Makefrag.am | 24 +-
> tests/run-multiboot-module-qemu.sh.template | 45 +
> tests/run-qemu.sh.template | 2 +-
> tests/start.S | 10 +
> tests/test-machmsg.c | 15 +
> tests/test-syscalls.c | 83 +-
> tests/test-thread-state-fp.c | 123 ++
> tests/testlib_thread_start.c | 21 +
> tests/uboot.script.template | 71 +
> tests/user-qemu.mk | 135 +-
> 85 files changed, 8203 insertions(+), 41 deletions(-)
> create mode 100644 aarch64/BOOTING
> create mode 100644 aarch64/aarch64/aarch64asm.sym
> create mode 100644 aarch64/aarch64/bits/esr.h
> create mode 100644 aarch64/aarch64/bits/hcr.h
> create mode 100644 aarch64/aarch64/bits/id_aa64.h
> create mode 100644 aarch64/aarch64/bits/mair.h
> create mode 100644 aarch64/aarch64/bits/pte.h
> create mode 100644 aarch64/aarch64/bits/sctlr.h
> create mode 100644 aarch64/aarch64/bits/spsr.h
> create mode 100644 aarch64/aarch64/bits/tcr.h
> create mode 100644 aarch64/aarch64/boot.S
> create mode 100644 aarch64/aarch64/conf.c
> create mode 100644 aarch64/aarch64/cpu_number.h
> create mode 100644 aarch64/aarch64/cswitch.S
> create mode 100644 aarch64/aarch64/db_machdep.h
> create mode 100644 aarch64/aarch64/fpu.c
> create mode 100644 aarch64/aarch64/fpu.h
> create mode 100644 aarch64/aarch64/hwcaps.c
> create mode 100644 aarch64/aarch64/hwcaps.h
> create mode 100644 aarch64/aarch64/ipl.h
> create mode 100644 aarch64/aarch64/irq.c
> create mode 100644 aarch64/aarch64/irq.h
> create mode 100644 aarch64/aarch64/lock.h
> create mode 100644 aarch64/aarch64/locore.S
> create mode 100644 aarch64/aarch64/locore.h
> create mode 100644 aarch64/aarch64/loose_ends.h
> create mode 100644 aarch64/aarch64/mach_aarch64.c
> create mode 100644 aarch64/aarch64/mach_param.h
> create mode 100644 aarch64/aarch64/machine_routines.h
> create mode 100644 aarch64/aarch64/model_dep.c
> create mode 100644 aarch64/aarch64/model_dep.h
> create mode 100644 aarch64/aarch64/mp_desc.h
> create mode 100644 aarch64/aarch64/pcb.c
> create mode 100644 aarch64/aarch64/pcb.h
> create mode 100644 aarch64/aarch64/percpu.c
> create mode 100644 aarch64/aarch64/percpu.h
> create mode 100644 aarch64/aarch64/pmap.c
> create mode 100644 aarch64/aarch64/pmap.h
> create mode 100644 aarch64/aarch64/setjmp.h
> create mode 100644 aarch64/aarch64/smp.h
> create mode 100644 aarch64/aarch64/spl.h
> create mode 100644 aarch64/aarch64/strings.c
> create mode 100644 aarch64/aarch64/task.c
> create mode 100644 aarch64/aarch64/task.h
> create mode 100644 aarch64/aarch64/thread.h
> create mode 100644 aarch64/aarch64/trap.c
> create mode 100644 aarch64/aarch64/trap.h
> create mode 100644 aarch64/aarch64/undef.c
> create mode 100644 aarch64/aarch64/vm_param.h
> create mode 100644 aarch64/aarch64/xpr.h
> create mode 100644 aarch64/arm/gic-v2.c
> create mode 100644 aarch64/arm/gic-v2.h
> create mode 100644 aarch64/arm/pl011.c
> create mode 100644 aarch64/arm/pl011.h
> create mode 100644 aarch64/arm/psci.c
> create mode 100644 aarch64/arm/psci.h
> create mode 100644 aarch64/arm/timer.c
> create mode 100644 aarch64/arm/timer.h
> create mode 100644 aarch64/include/mach/aarch64/exec/elf.h
> create mode 100644 aarch64/include/mach/aarch64/multiboot.h
> create mode 100644 aarch64/ldscript
> create mode 100644 device/dtb.c
> create mode 100644 device/dtb.h
> create mode 100644 tests/run-multiboot-module-qemu.sh.template
> create mode 100644 tests/uboot.script.template
>
> --
> 2.54.0
>
--
Samuel
Actually, typing random strings in the Finder does the equivalent of
filename completion.
(Discussion in comp.os.linux.misc on the intuitiveness of commands: file
completion vs. the Mac Finder.)