source: mainline/kernel/doc/doxygroups.h@ f73a8e3

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