source: mainline/uspace/lib/c/doc/doxygroups.h@ b83c5e4

ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since b83c5e4 was 84176f3, checked in by Jakub Jermář <jakub@…>, 6 years ago

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.

  • Property mode set to 100644
File size: 709 bytes
RevLine 
[4122410]1/**
2 * @addtogroup libc libc
3 * @brief HelenOS C library
4 * @ingroup libs
5 */
6
7/**
8 * @addtogroup libcabs32le abs32le
9 * @ingroup libc
10 */
11
12/**
13 * @addtogroup libcamd64 amd64
14 * @ingroup libc
15 */
16
17/**
18 * @addtogroup libcarm32 arm32
19 * @ingroup libc
20 */
21
[84176f3]22/**
23 * @addtogroup libcarm64 arm64
24 * @ingroup libc
25 */
26
[4122410]27/**
28 * @addtogroup libcia32 ia32
29 * @ingroup libc
30 */
31
32/**
33 * @addtogroup libcia64 ia64
34 * @ingroup libc
35 */
36
37/**
38 * @addtogroup libcmips32 mips32
39 * @ingroup libc
40 */
41
42/**
43 * @addtogroup libcppc32 ppc32
44 * @ingroup libc
45 */
46
47/**
48 * @addtogroup libcriscv64 riscv64
49 * @ingroup libc
50 */
51
52/**
53 * @addtogroup libcsparc64 sparc64
54 * @ingroup libc
55 */
56
[b1834a01]57/**
58 * @addtogroup rtld rtld
59 * @ingroup libc
60 */
Note: See TracBrowser for help on using the repository browser.