Cores from the DTB /cpus or, on QEMU (ACPI, no DTB), the MADT GICC entries; the MADT lookup is now shared (hal/acpi.c) with amd64. PSCI CPU_ON through the discovered conduit into ap_entry.S, which copies the boot core's MMU/control state, sets TPIDR_EL1 and parks. Core 1 online at EL1 with its own block; its vCPU thread 0.0% on the host. QEMU aarch64 -smp 2 -name debug-threads=on. 3-ISA acceptance clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 lines
1004 B
C
33 lines
1004 B
C
/*
|
||
StarForth — Steady-State Virtual Machine Runtime
|
||
|
||
Copyright (c) 2023–2025 Robert A. James
|
||
All rights reserved.
|
||
|
||
This file is part of the StarForth project.
|
||
|
||
Licensed under the StarForth License, Version 1.0 (the "License");
|
||
you may not use this file except in compliance with the License.
|
||
*/
|
||
|
||
/**
|
||
* acpi.h - Finding an ACPI table from the RSDP (FABRIC-3.10.8 MC-1b).
|
||
*
|
||
* Shared by the core enumeration of amd64 (MADT Local APIC entries) and
|
||
* aarch64 (MADT GICC entries, when the firmware hands over ACPI rather
|
||
* than a devicetree, as QEMU's AAVMF does).
|
||
*/
|
||
#ifndef STARKERNEL_ACPI_H
|
||
#define STARKERNEL_ACPI_H
|
||
|
||
#include <stdint.h>
|
||
|
||
/* The first XSDT-listed table whose 4-byte signature is `sig`, or NULL.
|
||
* `rsdp` is BootInfo->acpi_table (ACPI 2.0+ RSDP); NULL-safe. */
|
||
const uint8_t *acpi_find_table(const void *rsdp, const char *sig);
|
||
|
||
/* A table's length field (bytes 4..7 of its header). */
|
||
uint32_t acpi_table_length(const uint8_t *table);
|
||
|
||
#endif /* STARKERNEL_ACPI_H */
|