Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Theseus on aarch64 - tracking issue #702

Open
35 of 36 tasks
NathanRoyer opened this issue Nov 24, 2022 · 1 comment
Open
35 of 36 tasks

Theseus on aarch64 - tracking issue #702

NathanRoyer opened this issue Nov 24, 2022 · 1 comment
Assignees
Labels
enhancement major tracking an issue or PR used for tracking purposes only

Comments

@NathanRoyer
Copy link
Member

NathanRoyer commented Nov 24, 2022

This is a tracking issue for the support of the aarch64/ARMv8 platform for Theseus.

bootstrap and basic initialization

  • nano_core as an UEFI application
  • log-compatible logger setup

memory management

interrupts

task management

  • Pre-requisite: figure out how to get core ID for each CPU
  • context_switch_regular: Context Switching Primitives for AArch64 #744
  • Basic Context type
  • Determine register to use for passing a new task's ID
    • see context_switch_regular::ContextRegular::set_first_register()
    • i.e., from setup_context_trampoline to task_wrapper
  • Configure aarch64 register used for Thread-Local storage
    • equivalent to FS_BASE and fs on x86_64; see Task::set_as_current_task()

SMP multicore support

  • Detecting secondary cores
  • Starting secondary cores at a controlled entry point
  • Obtain current CPU ID; see get_my_apic_id()
  • Configure paging / set up page tables for each CPU
  • Enable interrupts and set up interrupt handlers on each CPU
    • Theseus shares one page table and one IDT across all CPUs on x86_64; this should also work on aarch64

Basic I/O support for interactivity

Loading and Linking


Future endeavors

Once the above core subsystems and components are finished, we will open separate issues for the following:

  • Supporting unwinding via aarch64-specific trampolines in unwind
  • More complex I/O, e.g., USB (?)
  • Two-part abstraction of interrupt/CPU controllers:
    • per-CPU interrupt controller abstraction: enabling/disabling local timer interrupt, sending IPIs
    • system-wide interrupt controller abstraction: registering interrupt handlers, etc
  • exceptions_full equivalent on aarch64
@kevinaboos kevinaboos added enhancement major tracking an issue or PR used for tracking purposes only labels Nov 25, 2022
@kevinaboos kevinaboos changed the title Tracking aarch64 support Theseus on aarch64 - tracking issue Nov 25, 2022
@tsoutsman

This comment was marked as resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement major tracking an issue or PR used for tracking purposes only
Projects
Status: 🏗 In progress
Development

No branches or pull requests

3 participants