ladybird/Kernel/Arch/aarch64
Daniel Bertalan 81dd29f713 Kernel/aarch64: Support reading the command line via the RPi Mailbox
This reuses the existing `RPi::Mailbox` interface to read the command
line via a VideoCore-specific mailbox message. This will have to be
replaced if that interface starts being smarter, as this is needed very
early, and nothing guarantees that a smarter Mailbox interface wouldn't
need to allocate or log, which is a no-no during early boot.

As the response string can be arbitrarily long, it's the caller's job to
provide a long enough buffer for `Mailbox::query_kernel_command_line`.
This commit chose 512 bytes, as it provides a large enough headroom over
the 150-200 characters implicitly added by the VC firmware.

The portable way would be to parse the `/chosen/bootargs` property of
the device tree, but we currently lack the scaffolding for doing that.

Support for this in QEMU relies on a patch that has not yet been
accepted upstream, but is available via our `Toolchain/BuildQEMU.sh`
script. It should, however, work on bare metal.

Tested-By: Timon Kruiper <timonkruiper@gmail.com>
2023-04-29 08:24:18 +02:00
..
RPi Kernel/aarch64: Support reading the command line via the RPi Mailbox 2023-04-29 08:24:18 +02:00
ASM_wrapper.h Kernel/aarch64: Add volatile modifier to various asm statements 2023-04-13 20:22:08 +02:00
boot.S Kernel/aarch64: Execute kernel with SP_EL1 instead of SP_EL0 2023-01-27 11:41:43 +01:00
BootPPMParser.cpp Kernel: Remove Prekernel namespace in the aarch64 Kernel 2022-05-12 23:14:05 +02:00
BootPPMParser.h Kernel: Remove Prekernel namespace in the aarch64 Kernel 2022-05-12 23:14:05 +02:00
CPU.h Kernel: Move Memory/PageDirectory.{cpp,h} to arch-specific directory 2023-01-27 11:41:43 +01:00
CPUID.cpp Everywhere: Change all XXX into FIXME or remove as appropriate 2023-02-15 23:33:25 +01:00
CPUID.h Revert "Kernel: Migrate ‘main id registerʼ access in Aarch64 MMIO" 2023-02-17 11:29:33 -07:00
CurrentTime.cpp Kernel: Fix build error on AARCH64 2022-10-15 06:01:45 +00:00
Dummy.cpp Kernel: Merge x86_64 and aarch64 init.cpp files 2023-04-03 20:01:28 -06:00
Exceptions.cpp Kernel/aarch64: Disable memory access alignment check 2023-02-18 19:17:21 +01:00
InterruptManagement.cpp Kernel: Stub more functions to progress aarch64 build 2022-10-26 20:01:45 +02:00
InterruptManagement.h Kernel: Stub more functions to progress aarch64 build 2022-10-26 20:01:45 +02:00
Interrupts.cpp Kernel/aarch64: Fix build after is_sharing_with_others API removal 2023-04-28 15:00:06 +02:00
IRQController.h AK+Kernel: Add AK::AtomicRefCounted and use everywhere in the kernel 2022-08-20 17:15:52 +02:00
kprintf.cpp Kernel/aarch64: Implement dbgput{str,char} in kprintf.cpp 2022-12-29 19:32:20 -07:00
linker.ld Revert "Kernel/aarch64: Embed disk image into kernel binary" 2023-03-25 16:50:36 +00:00
MainIdRegister.cpp Revert "Kernel: Remove old ‘main id register accessorʼ for Aarch64" 2023-02-17 11:29:33 -07:00
MainIdRegister.h Revert "Kernel: Remove old ‘main id register accessorʼ for Aarch64" 2023-02-17 11:29:33 -07:00
mcontext.h Kernel+LibC: Modify aarch64's __mcontext to store registers in an array 2023-04-06 21:19:58 +03:00
MMU.cpp Kernel/aarch64: Set kernel_load_base and correctly calculate symbol addr 2023-02-08 18:19:48 +00:00
PageDirectory.cpp Kernel/aarch64: Flush entire TLB cache when changing TTBR0_EL1 2023-04-06 21:19:58 +03:00
PageDirectory.h Kernel: Store a pointer to the owner process in PageDirectory 2023-04-06 20:30:03 +03:00
Panic.cpp Kernel: Move __assertion_failed to aarch64/Panic.cpp 2022-05-12 23:14:05 +02:00
pre_init.cpp Kernel: Move Memory/PageDirectory.{cpp,h} to arch-specific directory 2023-01-27 11:41:43 +01:00
Processor.cpp Kernel/aarch64: Flush entire TLB cache when changing TTBR0_EL1 2023-04-06 21:19:58 +03:00
Processor.h Kernel/aarch64: Add implementation of Processor::for_each 2023-04-13 20:24:25 +02:00
Registers.h Kernel/aarch64: Add volatile modifier to various asm statements 2023-04-13 20:22:08 +02:00
RegisterState.h Kernel/aarch64: Add getters/setters in RegisterState and ThreadRegisters 2023-04-06 21:19:58 +03:00
SafeMem.cpp Kernel/aarch64: Add implementations for safe_memset and safe_strnlen 2023-02-15 22:53:19 +01:00
SerenityLogoRGB.ppm Kernel: Move aarch64 Prekernel into Kernel 2022-03-12 14:54:12 -08:00
SmapDisabler.cpp Kernel: Use default constructors/destructors 2022-03-17 00:51:36 -07:00
ThreadRegisters.h Kernel/aarch64: Add getters/setters in RegisterState and ThreadRegisters 2023-04-06 21:19:58 +03:00
TrapFrame.cpp Kernel: Call exit_trap in AArch64 restore_context_and_eret 2023-04-03 02:59:37 -06:00
TrapFrame.h Kernel: Implement Processor::assume_context for AArch64 2023-04-03 02:59:37 -06:00
vector_table.S Kernel: Call exit_trap in AArch64 restore_context_and_eret 2023-04-03 02:59:37 -06:00