diff options
Diffstat (limited to 'kernel/arch/aarch64')
| -rw-r--r-- | kernel/arch/aarch64/Processor.cpp | 17 | ||||
| -rw-r--r-- | kernel/arch/aarch64/Processor.h | 29 |
2 files changed, 46 insertions, 0 deletions
diff --git a/kernel/arch/aarch64/Processor.cpp b/kernel/arch/aarch64/Processor.cpp new file mode 100644 index 0000000..725fa38 --- /dev/null +++ b/kernel/arch/aarch64/Processor.cpp @@ -0,0 +1,17 @@ +// ============================================================================ +// arch/aarch64/Processor.cpp - AArch64 per-CPU state implementation +// ============================================================================ + +#include "Processor.h" +#include <boot/boot_info.h> + +static Processor g_processor; + +Processor& processor() { + return g_processor; +} + +void Processor::InitEarly(const BootInfo& boot_info) { + // Phase 2: VBAR_EL1, GIC base, etc. + (void)boot_info; +} diff --git a/kernel/arch/aarch64/Processor.h b/kernel/arch/aarch64/Processor.h new file mode 100644 index 0000000..81be414 --- /dev/null +++ b/kernel/arch/aarch64/Processor.h @@ -0,0 +1,29 @@ +#pragma once +// ============================================================================ +// arch/aarch64/Processor.h - AArch64 per-CPU state +// ============================================================================ + +#include <stdint.h> +#include <kernel/types.h> + +struct BootInfo; + +class Processor { +public: + void InitEarly(const BootInfo& boot_info); + + // Phase 2 will add: + // PhysAddr GetGicBase() const; + // uint64_t GetVbarEl1() const; + // PhysAddr GetTtbr0() const; + // PhysAddr GetTtbr1() const; + + Processor() = default; + Processor(const Processor&) = delete; + Processor& operator=(const Processor&) = delete; + +private: + // Phase 2: gic_base, vbar_el1, ttbr0, ttbr1... +}; + +Processor& processor(); |
