Changeset 84176f3 in mainline for .gitignore


Ignore:
Timestamp:
2019-04-10T15:04:17Z (6 years ago)
Author:
Jakub Jermář <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8df0306
Parents:
b58728f
git-author:
Petr Pavlu <setup@…> (2019-03-31 14:09:57)
git-committer:
Jakub Jermář <jakub@…> (2019-04-10 15:04:17)
Message:

arm64: Add support for the architecture

This changeset adds basic support to run HelenOS on AArch64, targeting
the QEMU virt platform.

Boot:

  • Boot relies on the EDK II firmware, GRUB2 for EFI and the HelenOS bootloader (UEFI application). EDK II loads GRUB2 from a CD, GRUB2 loads the HelenOS bootloader (via UEFI) which loads OS components.
  • UEFI applications use the PE/COFF format and must be relocatable. The first problem is solved by manually having the PE/COFF headers and tables written in assembler. The relocatable requirement is addressed by compiling the code with -fpic and having the bootloader relocate itself at its startup.

Kernel:

  • Kernel code for AArch64 consists mostly of stubbing out various architecture-specific hooks: virtual memory management, interrupt and exception handling, context switching (including FPU lazy switching), support for virtual timer, atomic sequences and barriers, cache and TLB maintenance, thread and process initialization.
  • The patch adds a kernel driver for GICv2 (interrupt controller).
  • The PL011 kernel driver is extended to allow userspace to take ownership of the console.
  • The current code is not able to dynamically obtain information about available devices on the underlying machine. The port instead implements a machine-func interface similar to the one implemented by arm32. It defines a machine for the QEMU AArch64 virt platform. The configuration (device addresses and IRQ numbers) is then baked into the machine definition.

User space:

  • Uspace code for AArch64 similarly mostly implements architecture-specific hooks: context saving/restoring, syscall support, TLS support.

The patchset allows to boot the system but user interaction with the OS
is not yet possible.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    rb58728f r84176f3  
    1414/Makefile.config
    1515/PKG
     16/QEMU_EFI_ARM64.fd
    1617/common.h
    1718/config.h
     
    2425autotool/
    2526boot/arch/arm32/_link.ld
     27boot/arch/arm64/_link.ld
    2628boot/arch/ia64/_link.ld
    2729boot/arch/mips32/_link.ld
     
    4951kernel/arch/amd64/_link.ld
    5052kernel/arch/arm32/_link.ld
     53kernel/arch/arm64/_link.ld
    5154kernel/arch/ia32/_link.ld
    5255kernel/arch/ia64/_link.ld
     
    361364uspace/lib/c/arch/arm32/_link-shlib.ld
    362365uspace/lib/c/arch/arm32/_link.ld
     366uspace/lib/c/arch/arm64/_link-dlexe.ld
     367uspace/lib/c/arch/arm64/_link-loader.ld
     368uspace/lib/c/arch/arm64/_link-shlib.ld
     369uspace/lib/c/arch/arm64/_link.ld
    363370uspace/lib/c/arch/ia32/_link-dlexe.ld
    364371uspace/lib/c/arch/ia32/_link-loader.ld
Note: See TracChangeset for help on using the changeset viewer.