source: mainline/kernel/doc/doxygroups.h@ 6de65f3

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 6de65f3 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: 7.9 KB
RevLine 
[b6529ae]1/* Definitions of modules and its relations for generating Doxygen documentation */
2
[b1834a01]3/** @defgroup kernel kernel
4 * @brief HelenOS kernel
[904b1bc]5 */
6
[174156fd]7/** @defgroup kernel_generic_adt Data types
[b6529ae]8 * @ingroup kernel
9 */
10
[174156fd]11/** @defgroup kernel_generic_console Kernel console
[1bb2e7a]12 * @ingroup others
[b6529ae]13 */
14
[e88eb48]15/** @defgroup kernel_time Time management
[904b1bc]16 * @ingroup kernel
17 */
18
19/** @defgroup proc Scheduling
20 * @ingroup kernel
21 */
22
[174156fd]23/** @defgroup kernel_generic_proc generic
[904b1bc]24 * @ingroup proc
25 */
26
[46f7b64]27/**
28 * @cond abs32le
[c5429fe]29 * @defgroup kernel_abs32le_proc abs32le
[46f7b64]30 * @ingroup proc
31 * @endcond
32 */
33
[1bb2e7a]34/**
[904b1bc]35 * @cond amd64
[c5429fe]36 * @defgroup kernel_amd64_proc amd64
[904b1bc]37 * @ingroup proc
38 * @endcond
39 */
40
41/**
42 * @cond arm32
[c5429fe]43 * @defgroup kernel_arm32_proc arm32
[904b1bc]44 * @ingroup proc
45 * @endcond
46 */
47
[84176f3]48/**
49 * @cond arm64
50 * @defgroup kernel_arm64_proc arm64
51 * @ingroup proc
52 * @endcond
53 */
54
[904b1bc]55/**
56 * @cond ia32
[c5429fe]57 * @defgroup kernel_ia32_proc ia32
[904b1bc]58 * @ingroup proc
59 * @endcond
60 */
61
62/**
63 * @cond ia64
[c5429fe]64 * @defgroup kernel_ia64_proc ia64
[904b1bc]65 * @ingroup proc
66 * @endcond
67 */
68
69/**
70 * @cond mips32
[c5429fe]71 * @defgroup kernel_mips32_proc mips32
[904b1bc]72 * @ingroup proc
73 * @endcond
74 */
75
76/**
77 * @cond ppc32
[c5429fe]78 * @defgroup kernel_ppc32_proc ppc32
[904b1bc]79 * @ingroup proc
80 * @endcond
81 */
82
83/**
[b1276d44]84 * @cond riscv64
[c5429fe]85 * @defgroup kernel_riscv64_proc riscv64
[904b1bc]86 * @ingroup proc
87 * @endcond
88 */
89
90/**
91 * @cond sparc64
[c5429fe]92 * @defgroup kernel_sparc64_proc sparc64
[904b1bc]93 * @ingroup proc
94 * @endcond
95 */
[1bb2e7a]96
[e88eb48]97/** @defgroup kernel_sync Synchronization
[b6529ae]98 * @ingroup kernel
99 */
[1bb2e7a]100
[904b1bc]101/** @defgroup mm Memory management
102 * @ingroup kernel
103 */
104
105/**
[174156fd]106 * @defgroup kernel_generic_mm generic
[904b1bc]107 * @ingroup mm
108 */
109
110/**
[6404aca]111 * @defgroup kernel_genarch_mm genarch
[904b1bc]112 * @ingroup mm
113 */
114
[46f7b64]115/**
116 * @cond abs32le
[c5429fe]117 * @defgroup kernel_abs32le_mm abs32le
[46f7b64]118 * @ingroup mm
119 * @endcond
120 */
121
[904b1bc]122/**
123 * @cond amd64
[c5429fe]124 * @defgroup kernel_amd64_mm amd64
[904b1bc]125 * @ingroup mm
126 * @endcond
127 */
128
129/**
130 * @cond arm32
[c5429fe]131 * @defgroup kernel_arm32_mm arm32
[904b1bc]132 * @ingroup mm
133 * @endcond
134 */
135
[84176f3]136/**
137 * @cond arm64
138 * @defgroup kernel_arm64_mm arm64
139 * @ingroup mm
140 * @endcond
141 */
142
[904b1bc]143/**
144 * @cond ia32
[c5429fe]145 * @defgroup kernel_ia32_mm ia32
[904b1bc]146 * @ingroup mm
147 * @endcond
148 */
149
150/**
151 * @cond ia64
[c5429fe]152 * @defgroup kernel_ia64_mm ia64
[904b1bc]153 * @ingroup mm
154 * @endcond
155 */
156
157/**
158 * @cond mips32
[c5429fe]159 * @defgroup kernel_mips32_mm mips32
[904b1bc]160 * @ingroup mm
161 * @endcond
162 */
163
164/**
165 * @cond ppc32
[c5429fe]166 * @defgroup kernel_ppc32_mm ppc32
[904b1bc]167 * @ingroup mm
168 * @endcond
169 */
170
171/**
[b1276d44]172 * @cond riscv64
[c5429fe]173 * @defgroup kernel_riscv64_mm riscv64
[904b1bc]174 * @ingroup mm
175 * @endcond
176 */
177
178/**
179 * @cond sparc64
[c5429fe]180 * @defgroup kernel_sparc64_mm sparc64
[904b1bc]181 * @ingroup mm
182 * @endcond
183 */
[1bb2e7a]184
[174156fd]185/** @defgroup kernel_generic_ipc IPC
[1bb2e7a]186 * @ingroup kernel
187 */
[a35b458]188
[174156fd]189/** @defgroup kernel_generic_kio KIO
[6fa9a99d]190 * @brief Kernel character input/output facility
[174156fd]191 * @ingroup kernel_generic_console
[1bb2e7a]192 */
193
[b6529ae]194/** @defgroup ddi Device Driver Interface
195 * @ingroup kernel
196 */
197
[904b1bc]198/**
[174156fd]199 * @defgroup kernel_generic_ddi generic
[904b1bc]200 * @ingroup ddi
201 */
202
[46f7b64]203/**
204 * @cond abs32le
[c5429fe]205 * @defgroup kernel_abs32le_ddi abs32le
[46f7b64]206 * @ingroup ddi
207 * @endcond
208 */
209
[904b1bc]210/**
211 * @cond amd64
[c5429fe]212 * @defgroup kernel_amd64_ddi amd64
[904b1bc]213 * @ingroup ddi
214 * @endcond
215 */
216
217/**
218 * @cond arm32
[c5429fe]219 * @defgroup kernel_arm32_ddi arm32
[904b1bc]220 * @ingroup ddi
221 * @endcond
222 */
223
[84176f3]224/**
225 * @cond arm64
226 * @defgroup kernel_arm64_ddi arm64
227 * @ingroup ddi
228 * @endcond
229 */
230
[904b1bc]231/**
232 * @cond ia32
[c5429fe]233 * @defgroup kernel_ia32_ddi ia32
[904b1bc]234 * @ingroup ddi
235 * @endcond
236 */
237
238/**
239 * @cond ia64
[c5429fe]240 * @defgroup kernel_ia64_ddi ia64
[904b1bc]241 * @ingroup ddi
242 * @endcond
243 */
244
245/**
246 * @cond mips32
[c5429fe]247 * @defgroup kernel_mips32_ddi mips32
[904b1bc]248 * @ingroup ddi
249 * @endcond
250 */
251
252/**
253 * @cond ppc32
[c5429fe]254 * @defgroup kernel_ppc32_ddi ppc32
[904b1bc]255 * @ingroup ddi
256 * @endcond
257 */
258
259/**
[b1276d44]260 * @cond riscv64
[c5429fe]261 * @defgroup kernel_riscv64_ddi riscv64
[904b1bc]262 * @ingroup ddi
263 * @endcond
264 */
265
266/**
267 * @cond sparc64
[c5429fe]268 * @defgroup kernel_sparc64_ddi sparc64
[904b1bc]269 * @ingroup ddi
270 * @endcond
271 */
272
273/** @defgroup debug Debugging
[1bb2e7a]274 * @ingroup others
[b6529ae]275 */
[a35b458]276
[904b1bc]277/**
[174156fd]278 * @defgroup kernel_generic_debug generic
[904b1bc]279 * @ingroup debug
280 */
281
[46f7b64]282/**
283 * @cond abs32le
[c5429fe]284 * @defgroup kernel_abs32le_debug abs32le
[46f7b64]285 * @ingroup debug
286 * @endcond
287 */
288
[904b1bc]289/**
290 * @cond amd64
[c5429fe]291 * @defgroup kernel_amd64_debug ia32/amd64
[904b1bc]292 * @ingroup debug
293 * @endcond
294 */
295
296/**
297 * @cond arm32
[c5429fe]298 * @defgroup kernel_arm32_debug arm32
[904b1bc]299 * @ingroup debug
300 * @endcond
301 */
302
[84176f3]303/**
304 * @cond arm64
305 * @defgroup kernel_arm64_debug arm64
306 * @ingroup debug
307 * @endcond
308 */
309
[904b1bc]310/**
311 * @cond ia32
[c5429fe]312 * @defgroup kernel_amd64_debug ia32/amd64
[904b1bc]313 * @ingroup debug
314 * @endcond
315 */
316
317/**
318 * @cond ia64
[c5429fe]319 * @defgroup kernel_ia64_debug ia64
[904b1bc]320 * @ingroup debug
321 * @endcond
322 */
323
324/**
325 * @cond mips32
[c5429fe]326 * @defgroup kernel_mips32_debug mips32
[904b1bc]327 * @ingroup debug
328 * @endcond
329 */
330
331/**
332 * @cond ppc32
[c5429fe]333 * @defgroup kernel_ppc32_debug ppc32
[904b1bc]334 * @ingroup debug
335 * @endcond
336 */
337
338/**
[b1276d44]339 * @cond riscv64
[c5429fe]340 * @defgroup kernel_riscv64_debug riscv64
[904b1bc]341 * @ingroup debug
342 * @endcond
343 */
344
345/**
346 * @cond sparc64
[c5429fe]347 * @defgroup kernel_sparc64_debug sparc64
[904b1bc]348 * @ingroup debug
349 * @endcond
350 */
351
352/** @defgroup interrupt Interrupt handling and dispatching
353 * @ingroup kernel
354 */
355/**
[174156fd]356 * @defgroup kernel_generic_interrupt generic
[904b1bc]357 * @ingroup interrupt
358 */
359
[46f7b64]360/**
361 * @cond abs32le
[c5429fe]362 * @defgroup kernel_abs32le_interrupt abs32le
[46f7b64]363 * @ingroup interrupt
364 * @endcond
365 */
366
[904b1bc]367/**
368 * @cond amd64
[c5429fe]369 * @defgroup kernel_amd64_interrupt amd64
[904b1bc]370 * @ingroup interrupt
371 * @endcond
372 */
373
374/**
375 * @cond arm32
[c5429fe]376 * @defgroup kernel_arm32_interrupt arm32
[904b1bc]377 * @ingroup interrupt
378 * @endcond
379 */
380
[84176f3]381/**
382 * @cond arm64
383 * @defgroup kernel_arm64_interrupt arm64
384 * @ingroup interrupt
385 * @endcond
386 */
387
[904b1bc]388/**
389 * @cond ia32
[c5429fe]390 * @defgroup kernel_ia32_interrupt ia32
[904b1bc]391 * @ingroup interrupt
392 * @endcond
393 */
394
395/**
396 * @cond ia64
[c5429fe]397 * @defgroup kernel_ia64_interrupt ia64
[904b1bc]398 * @ingroup interrupt
399 * @endcond
400 */
401
402/**
403 * @cond mips32
[c5429fe]404 * @defgroup kernel_mips32_interrupt mips32
[904b1bc]405 * @ingroup interrupt
406 * @endcond
407 */
408
409/**
410 * @cond ppc32
[c5429fe]411 * @defgroup kernel_ppc32_interrupt ppc32
[904b1bc]412 * @ingroup interrupt
413 * @endcond
414 */
415
416/**
[b1276d44]417 * @cond riscv64
[c5429fe]418 * @defgroup kernel_riscv64_interrupt riscv64
[904b1bc]419 * @ingroup interrupt
420 * @endcond
421 */
422
423/**
424 * @cond sparc64
[c5429fe]425 * @defgroup kernel_sparc64_interrupt sparc64
[904b1bc]426 * @ingroup interrupt
427 * @endcond
428 */
[b6529ae]429
[1bb2e7a]430/** @defgroup others Miscellanea
[b6529ae]431 * @ingroup kernel
432 */
[904b1bc]433
434/**
[174156fd]435 * @defgroup kernel_generic generic
[904b1bc]436 * @ingroup others
437 */
438
439/**
[6404aca]440 * @defgroup kernel_genarch genarch
[904b1bc]441 * @ingroup others
442 */
443
[46f7b64]444/**
445 * @cond abs32le
[c5429fe]446 * @defgroup kernel_abs32le abs32le
[46f7b64]447 * @ingroup others
448 * @endcond
449 */
450
[904b1bc]451/**
452 * @cond amd64
[c5429fe]453 * @defgroup kernel_amd64 amd64
[904b1bc]454 * @ingroup others
455 * @endcond
456 */
457
458/**
459 * @cond arm32
[c5429fe]460 * @defgroup kernel_arm32 arm32
[904b1bc]461 * @ingroup others
462 * @endcond
463 */
464
[84176f3]465/**
466 * @cond arm64
467 * @defgroup kernel_arm64 arm64
468 * @ingroup others
469 * @endcond
470 */
471
[904b1bc]472/**
473 * @cond ia32
[c5429fe]474 * @defgroup kernel_ia32 ia32
[904b1bc]475 * @ingroup others
476 * @endcond
477 */
478
479/**
480 * @cond ia64
[c5429fe]481 * @defgroup kernel_ia64 ia64
[904b1bc]482 * @ingroup others
483 * @endcond
484 */
485
486/**
487 * @cond mips32
[c5429fe]488 * @defgroup kernel_mips32 mips32
[904b1bc]489 * @ingroup others
490 * @endcond
491 */
492
493/**
494 * @cond ppc32
[c5429fe]495 * @defgroup kernel_ppc32 ppc32
[904b1bc]496 * @ingroup others
497 * @endcond
498 */
499
500/**
[b1276d44]501 * @cond riscv64
[c5429fe]502 * @defgroup kernel_riscv64 riscv64
[904b1bc]503 * @ingroup others
504 * @endcond
505 */
506
507/**
508 * @cond sparc64
[c5429fe]509 * @defgroup kernel_sparc64 sparc64
[904b1bc]510 * @ingroup others
511 * @endcond
512 */
Note: See TracBrowser for help on using the repository browser.