source: mainline/.gitignore@ a4bd537

Last change on this file since a4bd537 was a4bd537, checked in by Petr Pavlu <setup@…>, 7 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: 11.4 KB
Line 
1*.a
2*.check.c
3*.d
4*.deflate
5*.disasm
6*.la
7*.lo
8*.map
9*.o
10*.prev
11*.pyc
12*.so.*
13/Makefile.common
14/Makefile.config
15/PKG
16/QEMU_EFI_ARM64.fd
17/common.h
18/config.h
19/cscope.out
20/downloads
21/hdisk.img
22/image.boot
23/image.iso
24/uImage.bin
25autotool/
26boot/arch/arm32/_link.ld
27boot/arch/arm64/_link.ld
28boot/arch/ia64/_link.ld
29boot/arch/mips32/_link.ld
30boot/arch/ppc32/_link.ld
31boot/arch/sparc64/_link.ld
32boot/components.h
33boot/components.o.new
34boot/components.s
35boot/components.tar
36boot/components.zip
37boot/components_desc.c
38boot/distroot/
39boot/image.bin
40boot/image.boot
41boot/image.raw
42boot/initrd.img
43boot/initrd.img.gz
44common.h.new
45deps.mk
46doxygen/doxygen.cfg
47doxygen/doxygen.cfg.gen
48doxygen/html/
49doxygen/latex/
50kernel/arch/abs32le/_link.ld
51kernel/arch/amd64/_link.ld
52kernel/arch/arm32/_link.ld
53kernel/arch/arm64/_link.ld
54kernel/arch/ia32/_link.ld
55kernel/arch/ia64/_link.ld
56kernel/arch/mips32/_link.ld
57kernel/arch/ppc32/_link.ld
58kernel/arch/sparc64/_link.ld
59kernel/generic/src/debug/real_map.bin
60kernel/kernel.bin
61kernel/kernel.bin.gz
62kernel/kernel.dump
63kernel/kernel.elf
64kernel/kernel.elf.gz
65kernel/kernel.raw
66tag
67tags
68tools/amd64-unknown-elf
69tools/arm-linux-gnueabi
70tools/binutils-*.tar.bz2
71tools/downloads/
72tools/gcc-*.tar.bz2
73tools/gdb-*.tar.gz
74tools/i686-pc-linux-gnu
75tools/ia64-pc-linux-gnu
76tools/mips-linux-gnu
77tools/mips64el-linux-gnu
78tools/mipsel-linux-gnu
79tools/ppc-linux-gnu
80tools/ppc64-linux-gnu
81tools/riscv64-unknown-linux-gnu
82tools/sparc64-linux-gnu
83tools/sycek/
84tools/xcw/demo/viewer
85uspace/app/barber/barber
86uspace/app/barber/images.c
87uspace/app/barber/images.h
88uspace/app/barber/images.s
89uspace/app/barber/images.zip
90uspace/app/barber/images_desc.c
91uspace/app/bdsh/bdsh
92uspace/app/bdsh/test-bdsh
93uspace/app/bithenge/bithenge
94uspace/app/blkdump/blkdump
95uspace/app/contacts/contacts
96uspace/app/corecfg/corecfg
97uspace/app/cpptest/cpptest
98uspace/app/date/date
99uspace/app/devctl/devctl
100uspace/app/df/df
101uspace/app/dltest/dltest
102uspace/app/dltests/dltests
103uspace/app/dnscfg/dnscfg
104uspace/app/dnsres/dnsres
105uspace/app/download/download
106uspace/app/edit/edit
107uspace/app/fdisk/fdisk
108uspace/app/fontviewer/fontviewer
109uspace/app/getterm/getterm
110uspace/app/gunzip/gunzip
111uspace/app/hbench/hbench
112uspace/app/inet/inet
113uspace/app/init/init
114uspace/app/init/init.gz
115uspace/app/lprint/lprint
116uspace/app/kill/kill
117uspace/app/killall/killall
118uspace/app/kio/kio
119uspace/app/loc/loc
120uspace/app/logset/logset
121uspace/app/mixerctl/mixerctl
122uspace/app/mkbd/mkbd
123uspace/app/mkexfat/mkexfat
124uspace/app/mkext4/mkext4
125uspace/app/mkfat/mkfat
126uspace/app/mkmfs/mkmfs
127uspace/app/modplay/modplay
128uspace/app/netecho/netecho
129uspace/app/netspeed/netspeed
130uspace/app/nettest1/nettest1
131uspace/app/nettest2/nettest2
132uspace/app/nettest3/nettest3
133uspace/app/nic/nic
134uspace/app/nterm/nterm
135uspace/app/pci/pci
136uspace/app/ping/ping
137uspace/app/ping6/ping6
138uspace/app/pkg/pkg
139uspace/app/redir/redir
140uspace/app/sbi/sbi
141uspace/app/sportdmp/sportdmp
142uspace/app/stats/stats
143uspace/app/sysinfo/sysinfo
144uspace/app/sysinst/sysinst
145uspace/app/taskdump/taskdump
146uspace/app/tester/tester
147uspace/app/testread/testread
148uspace/app/testrunner/testrunner
149uspace/app/testwrit/testwrit
150uspace/app/tetris/tetris
151uspace/app/tmon/tmon
152uspace/app/top/top
153uspace/app/trace/trace
154uspace/app/untar/untar
155uspace/app/usbinfo/usbinfo
156uspace/app/vcalc/vcalc
157uspace/app/vdemo/vdemo
158uspace/app/viewer/viewer
159uspace/app/vlaunch/images.c
160uspace/app/vlaunch/images.h
161uspace/app/vlaunch/images.s
162uspace/app/vlaunch/images.zip
163uspace/app/vlaunch/images_desc.c
164uspace/app/vlaunch/vlaunch
165uspace/app/vol/vol
166uspace/app/vterm/vterm
167uspace/app/vuhid/vuh
168uspace/app/vuhid/vuhid
169uspace/app/wavplay/wavplay
170uspace/app/websrv/websrv
171uspace/app/wifi_supplicant/wifi_supplicant
172uspace/dist/app/
173uspace/dist/app/barber
174uspace/dist/app/bdsh
175uspace/dist/app/bithenge
176uspace/dist/app/blkdump
177uspace/dist/app/corecfg
178uspace/dist/app/cpptest
179uspace/dist/app/date
180uspace/dist/app/devctl
181uspace/dist/app/df
182uspace/dist/app/dltest
183uspace/dist/app/dltests
184uspace/dist/app/dnscfg
185uspace/dist/app/dnsres
186uspace/dist/app/download
187uspace/dist/app/edit
188uspace/dist/app/fdisk
189uspace/dist/app/fontviewer
190uspace/dist/app/getterm
191uspace/dist/app/gunzip
192uspace/dist/app/inet
193uspace/dist/app/kill
194uspace/dist/app/killall
195uspace/dist/app/kio
196uspace/dist/app/loc
197uspace/dist/app/logset
198uspace/dist/app/mixerctl
199uspace/dist/app/mkbd
200uspace/dist/app/mkexfat
201uspace/dist/app/mkfat
202uspace/dist/app/mkmfs
203uspace/dist/app/modplay
204uspace/dist/app/netecho
205uspace/dist/app/netspeed
206uspace/dist/app/nettest1
207uspace/dist/app/nettest2
208uspace/dist/app/nettest3
209uspace/dist/app/nic
210uspace/dist/app/nterm
211uspace/dist/app/ping
212uspace/dist/app/ping6
213uspace/dist/app/pkg
214uspace/dist/app/redir
215uspace/dist/app/sbi
216uspace/dist/app/sportdmp
217uspace/dist/app/stats
218uspace/dist/app/sysinfo
219uspace/dist/app/sysinst
220uspace/dist/app/taskdump
221uspace/dist/app/tester
222uspace/dist/app/testread
223uspace/dist/app/testwrit
224uspace/dist/app/tetris
225uspace/dist/app/tmon
226uspace/dist/app/top
227uspace/dist/app/trace
228uspace/dist/app/untar
229uspace/dist/app/usbinfo
230uspace/dist/app/vcalc
231uspace/dist/app/vdemo
232uspace/dist/app/viewer
233uspace/dist/app/vlaunch
234uspace/dist/app/vterm
235uspace/dist/app/vuh
236uspace/dist/app/wavplay
237uspace/dist/app/websrv
238uspace/dist/app/wifi_supplicant
239uspace/dist/demo.txt
240uspace/dist/demo.wav
241uspace/dist/demo.xm
242uspace/dist/drv/
243uspace/dist/drv/ahci/
244uspace/dist/drv/apic/
245uspace/dist/drv/ar9271/
246uspace/dist/drv/ata_bd/
247uspace/dist/drv/atkbd/
248uspace/dist/drv/cmos-rtc/
249uspace/dist/drv/e1k/
250uspace/dist/drv/ehci/
251uspace/dist/drv/hdaudio/
252uspace/dist/drv/i8042/
253uspace/dist/drv/i8259/
254uspace/dist/drv/icp-ic/
255uspace/dist/drv/icp/
256uspace/dist/drv/isa/
257uspace/dist/drv/kfb/
258uspace/dist/drv/msim-con/
259uspace/dist/drv/ne2k/
260uspace/dist/drv/ns8250/
261uspace/dist/drv/ohci/
262uspace/dist/drv/pc/
263uspace/dist/drv/pciintel/
264uspace/dist/drv/pl050/
265uspace/dist/drv/ps2mouse/
266uspace/dist/drv/root/
267uspace/dist/drv/rootpc/
268uspace/dist/drv/rtl8139/
269uspace/dist/drv/rtl8169/
270uspace/dist/drv/sb16/
271uspace/dist/drv/ski-con/
272uspace/dist/drv/sun4v-con/
273uspace/dist/drv/test1/
274uspace/dist/drv/test2/
275uspace/dist/drv/test3/
276uspace/dist/drv/uhci/
277uspace/dist/drv/usbdiag/
278uspace/dist/drv/usbflbk/
279uspace/dist/drv/usbhid/
280uspace/dist/drv/usbhub/
281uspace/dist/drv/usbmast/
282uspace/dist/drv/usbmid/
283uspace/dist/drv/vhc/
284uspace/dist/drv/virt/
285uspace/dist/drv/xhci/
286uspace/dist/drv/xtkbd/
287uspace/dist/inc/
288uspace/dist/inc/_link.ld
289uspace/dist/inc/c/
290uspace/dist/logo.tga
291uspace/dist/srv/
292uspace/dist/test/
293uspace/drv/audio/hdaudio/hdaudio
294uspace/drv/audio/sb16/sb16
295uspace/drv/block/ahci/ahci
296uspace/drv/block/ata_bd/ata_bd
297uspace/drv/block/ddisk/ddisk
298uspace/drv/block/usbmast/usbmast
299uspace/drv/bus/adb/cuda_adb/cuda_adb
300uspace/drv/bus/isa/isa
301uspace/drv/bus/pci/pciintel/pciintel
302uspace/drv/bus/usb/ehci/ehci
303uspace/drv/bus/usb/ohci/ohci
304uspace/drv/bus/usb/uhci/uhci
305uspace/drv/bus/usb/usbdiag/usbdiag
306uspace/drv/bus/usb/usbflbk/usbflbk
307uspace/drv/bus/usb/usbhub/usbhub
308uspace/drv/bus/usb/usbmid/usbmid
309uspace/drv/bus/usb/vhc/vhc
310uspace/drv/bus/usb/xhci/test-xhci
311uspace/drv/bus/usb/xhci/xhci
312uspace/drv/char/i8042/i8042
313uspace/drv/char/msim-con/msim-con
314uspace/drv/char/ns8250/ns8250
315uspace/drv/char/pc-lpt/pc-lpt
316uspace/drv/char/pl050/pl050
317uspace/drv/char/ps2mouse/ps2mouse
318uspace/drv/char/ski-con/ski-con
319uspace/drv/char/sun4v-con/sun4v-con
320uspace/drv/fb/amdm37x_dispc/amdm37x_dispc
321uspace/drv/fb/kfb/kfb
322uspace/drv/hid/adb-kbd/adb-kbd
323uspace/drv/hid/adb-mouse/adb-mouse
324uspace/drv/hid/atkbd/atkbd
325uspace/drv/hid/ps2mouse/ps2mouse
326uspace/drv/hid/usbhid/usbhid
327uspace/drv/hid/xtkbd/xtkbd
328uspace/drv/intctl/apic/apic
329uspace/drv/intctl/i8259/i8259
330uspace/drv/intctl/icp-ic/icp-ic
331uspace/drv/intctl/obio/obio
332uspace/drv/nic/ar9271/ar9271
333uspace/drv/nic/e1k/e1k
334uspace/drv/nic/ne2k/ne2k
335uspace/drv/nic/rtl8139/rtl8139
336uspace/drv/nic/rtl8169/rtl8169
337uspace/drv/nic/virtio-net/virtio-net
338uspace/drv/platform/amdm37x/amdm37x
339uspace/drv/platform/icp/icp
340uspace/drv/platform/mac/mac
341uspace/drv/platform/malta/malta
342uspace/drv/platform/msim/msim
343uspace/drv/platform/pc/pc
344uspace/drv/platform/rootpc/rootpc
345uspace/drv/platform/ski/ski
346uspace/drv/platform/sun4v/sun4v
347uspace/drv/root/root/root
348uspace/drv/root/virt/virt
349uspace/drv/test/test1/test1
350uspace/drv/test/test2/test2
351uspace/drv/test/test3/test3
352uspace/drv/time/cmos-rtc/cmos-rtc
353uspace/export
354uspace/lib/c/arch/abs32le/_link-dlexe.ld
355uspace/lib/c/arch/abs32le/_link-loader.ld
356uspace/lib/c/arch/abs32le/_link-shlib.ld
357uspace/lib/c/arch/abs32le/_link.ld
358uspace/lib/c/arch/amd64/_link-dlexe.ld
359uspace/lib/c/arch/amd64/_link-loader.ld
360uspace/lib/c/arch/amd64/_link-shlib.ld
361uspace/lib/c/arch/amd64/_link.ld
362uspace/lib/c/arch/arm32/_link-dlexe.ld
363uspace/lib/c/arch/arm32/_link-loader.ld
364uspace/lib/c/arch/arm32/_link-shlib.ld
365uspace/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
370uspace/lib/c/arch/ia32/_link-dlexe.ld
371uspace/lib/c/arch/ia32/_link-loader.ld
372uspace/lib/c/arch/ia32/_link-shlib.ld
373uspace/lib/c/arch/ia32/_link.ld
374uspace/lib/c/arch/ia64/_link-dlexe.ld
375uspace/lib/c/arch/ia64/_link-loader.ld
376uspace/lib/c/arch/ia64/_link-shlib.ld
377uspace/lib/c/arch/ia64/_link.ld
378uspace/lib/c/arch/mips32/_link-dlexe.ld
379uspace/lib/c/arch/mips32/_link-loader.ld
380uspace/lib/c/arch/mips32/_link-shlib.ld
381uspace/lib/c/arch/mips32/_link.ld
382uspace/lib/c/arch/mips32eb/_link-dlexe.ld
383uspace/lib/c/arch/mips32eb/_link-loader.ld
384uspace/lib/c/arch/mips32eb/_link-shlib.ld
385uspace/lib/c/arch/mips32eb/_link.ld
386uspace/lib/c/arch/ppc32/_link-dlexe.ld
387uspace/lib/c/arch/ppc32/_link-loader.ld
388uspace/lib/c/arch/ppc32/_link-shlib.ld
389uspace/lib/c/arch/ppc32/_link.ld
390uspace/lib/c/arch/sparc64/_link-dlexe.ld
391uspace/lib/c/arch/sparc64/_link-loader.ld
392uspace/lib/c/arch/sparc64/_link-shlib.ld
393uspace/lib/c/arch/sparc64/_link.ld
394uspace/lib/c/test-libc
395uspace/lib/label/test-liblabel
396uspace/lib/math/test-libmath
397uspace/lib/pcut/test-libpcut-*
398uspace/lib/posix/gcc.specs
399uspace/lib/posix/link.ld
400uspace/lib/posix/test-libposix
401uspace/lib/sif/test-libsif
402uspace/lib/uri/test-liburi
403uspace/srv/audio/hound/hound
404uspace/srv/bd/file_bd/file_bd
405uspace/srv/bd/rd/rd
406uspace/srv/bd/rd/rd.gz
407uspace/srv/bd/sata_bd/sata_bd
408uspace/srv/bd/vbd/vbd
409uspace/srv/clipboard/clipboard
410uspace/srv/devman/devman
411uspace/srv/fs/cdfs/cdfs
412uspace/srv/fs/exfat/exfat
413uspace/srv/fs/ext4fs/ext4fs
414uspace/srv/fs/ext4fs/ext4fs.gz
415uspace/srv/fs/fat/fat
416uspace/srv/fs/fat/fat.gz
417uspace/srv/fs/locfs/locfs
418uspace/srv/fs/mfs/mfs
419uspace/srv/fs/tmpfs/tmpfs
420uspace/srv/fs/udf/udf
421uspace/srv/hid/compositor/compositor
422uspace/srv/hid/compositor/images.c
423uspace/srv/hid/compositor/images.h
424uspace/srv/hid/console/console
425uspace/srv/hid/input/input
426uspace/srv/hid/isdv4_tablet/isdv4_tablet
427uspace/srv/hid/output/output
428uspace/srv/hid/remcons/remcons
429uspace/srv/hid/rfb/rfb
430uspace/srv/hid/s3c24xx_ts/s3c24xx_ts
431uspace/srv/hw/bus/cuda_adb/cuda_adb
432uspace/srv/hw/char/s3c24xx_uart/s3c24ser
433uspace/srv/hw/char/s3c24xx_uart/s3c24xx_uart
434uspace/srv/hw/irc/obio/obio
435uspace/srv/klog/klog
436uspace/srv/loader/loader
437uspace/srv/loader/loader.gz
438uspace/srv/locsrv/locsrv
439uspace/srv/locsrv/locsrv.gz
440uspace/srv/logger/logger
441uspace/srv/logger/logger.gz
442uspace/srv/net/dhcp/dhcp
443uspace/srv/net/dnsrsrv/dnsrsrv
444uspace/srv/net/ethip/ethip
445uspace/srv/net/inetsrv/inetsrv
446uspace/srv/net/loopip/loopip
447uspace/srv/net/nconfsrv/nconfsrv
448uspace/srv/net/slip/slip
449uspace/srv/net/tcp/tcp
450uspace/srv/net/tcp/test-tcp
451uspace/srv/net/udp/udp
452uspace/srv/ns/ns
453uspace/srv/ns/ns.gz
454uspace/srv/taskmon/taskmon
455uspace/srv/test/chardev-test/chardev-test
456uspace/srv/test/ipc-test/ipc-test
457uspace/srv/vfs/vfs
458uspace/srv/vfs/vfs.gz
459uspace/srv/volsrv/test-volsrv
460uspace/srv/volsrv/volsrv
Note: See TracBrowser for help on using the repository browser.