source: mainline/abi/doc/doxygroups.h@ f7842ef

Last change on this file since f7842ef was a4bd537, checked in by Petr Pavlu <setup@…>, 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: 880 bytes
Line 
1/* Definitions of modules and its relations for generating Doxygen documentation */
2
3/** @defgroup abi abi
4 * @brief Header files shared by the kernel and uspace
5 */
6
7/** @addtogroup bits _bits
8 * @ingroup abi
9 */
10
11/**
12 * @defgroup abi_generic generic
13 * @ingroup abi
14 */
15
16/**
17 * @defgroup abi_abs32le abs32le
18 * @ingroup abi
19 */
20
21/**
22 * @defgroup abi_amd64 amd64
23 * @ingroup abi
24 */
25
26/**
27 * @defgroup abi_arm32 arm32
28 * @ingroup abi
29 */
30
31/**
32 * @defgroup abi_arm64 arm64
33 * @ingroup abi
34 */
35
36/**
37 * @defgroup abi_ia32 ia32
38 * @ingroup abi
39 */
40
41/**
42 * @defgroup abi_ia64 ia64
43 * @ingroup abi
44 */
45
46/**
47 * @defgroup abi_mips32 mips32
48 * @ingroup abi
49 */
50
51/**
52 * @defgroup abi_ppc32 ppc32
53 * @ingroup abi
54 */
55
56/**
57 * @defgroup abi_riscv64 riscv64
58 * @ingroup abi
59 */
60
61/**
62 * @defgroup abi_sparc64 sparc64
63 * @ingroup abi
64 */
65
66/**
67 * @defgroup abi_genarch genarch
68 * @ingroup abi
69 */
Note: See TracBrowser for help on using the repository browser.