Filiph Sandström
7e1e208d08
Kernel: Add basic aarch64 support to MemoryManager
...
FIXME: There's still a lot to do like for example, port `quickmap_page`.
This does however get us further into the boot process than before.
2022-09-12 00:56:44 +01:00
Filiph Sandström
3b331a83e2
Kernel: Include CommandLine
as a part of aarch64
2022-09-12 00:56:44 +01:00
Filiph Sandström
fcd1cf4e1b
Kernel: Include DeviceManagement
as a part of aarch64
2022-09-12 00:56:44 +01:00
Andreas Kling
11eee67b85
Kernel: Make self-contained locking smart pointers their own classes
...
Until now, our kernel has reimplemented a number of AK classes to
provide automatic internal locking:
- RefPtr
- NonnullRefPtr
- WeakPtr
- Weakable
This patch renames the Kernel classes so that they can coexist with
the original AK classes:
- RefPtr => LockRefPtr
- NonnullRefPtr => NonnullLockRefPtr
- WeakPtr => LockWeakPtr
- Weakable => LockWeakable
The goal here is to eventually get rid of the Lock* classes in favor of
using external locking.
2022-08-20 17:20:43 +02:00
Filiph Sandström
99ae4fa161
Kernel: Move TrapFrame into its own header on aarch64
2022-08-14 09:44:48 +01:00
Filiph Sandström
c14047034b
Kernel: Remove leftover reference to prekernel on aarch64
...
This commit essentially just renames `init_prekernel_page_tables` to
`init_page_tables`.
2022-08-10 15:20:56 -04:00
Timon Kruiper
1072d523e2
Kernel: Initialize and use interrupts in the aarch64 Kernel
...
Now that everything is in place, we can actually use interrupts in the
aarch64 Kernel build. :^)
2022-06-02 13:14:12 +01:00
Timon Kruiper
63ee2781fb
Kernel: Put Raspberry Pi devices into RPi namespace
...
This makes it clear in the code that these drivers are specific for the
Raspberry Pi devices.
2022-06-02 13:14:12 +01:00
Timon Kruiper
1461a7601d
Kernel: Report value of ESR_EL1 when exception happens on aarch64
2022-05-21 20:23:32 +01:00
Timon Kruiper
18cad73b01
Kernel: Put code in the aarch64 init.cpp file into the Kernel namespace
2022-05-12 23:14:05 +02:00
Timon Kruiper
9282e0db16
Kernel: Move __assertion_failed to aarch64/Panic.cpp
...
This is for an upcoming change to add the Kernel namespace to the
init.cpp file.
2022-05-12 23:14:05 +02:00
Timon Kruiper
1f3977b303
Kernel: Remove Prekernel namespace in the aarch64 Kernel
...
Now that we merged all the Prekernel files into the Kernel files, we can
get rid of the Prekernel namespace as well.
2022-05-12 23:14:05 +02:00
Timon Kruiper
e88cd338f1
Kernel: Move Prekernel{CPU, Exceptions}.cpp out of Prekernel directory
...
This lets us delete the Prekernel.h file, and gets us closer to deleting
the Prekernel from the aarch64 Kernel.
2022-05-12 23:14:05 +02:00
Timon Kruiper
e7c5fd978b
Kernel: Move Prekernel assembly utils to aarch64/ASM_wrapper.h
...
By moving these functions to the ASM_wrapper.h file, we can get rid of
another Prekernel file.
2022-05-12 23:14:05 +02:00
Timon Kruiper
e80d8d697c
Kernel: Replace Prekernel::halt with Processor::halt in aarch64 build
...
This allows us to get rid of one more Prekernel file.
2022-05-12 23:14:05 +02:00
Timon Kruiper
c515e1341a
Kernel: Add initial implementation of Processor in aarch64
...
Instead of storing the current Processor into a core local register, we
currently just store it into a global, since we don't support SMP for
aarch64 anyway. This simplifies the initial implementation.
2022-05-09 21:12:56 +02:00
Timon Kruiper
ed4bfaed12
Kernel: Call the constructors in the aarch64 init function
...
Now that we have separated the kmalloc.cpp constructors into a separate
library, we can actually call the constructors in the init function.
2022-05-09 21:12:56 +02:00
Timon Kruiper
2cf36a1ca2
Kernel: Panic when an assertion is failed in aarch64 Kernel
...
This in turn makes sure that we get a nice backtrace when an assertion
failed, or when a VERIFY_NOT_REACHED() is hit.
2022-05-03 21:53:36 +02:00
Timon Kruiper
e7cf591ec0
Kernel: Load the kernel symbol table for the aarch64 Kernel
...
Since kmalloc() now works, we can actually load the kernel symbol table!
This in turn allows us to call dump_backtrace(), and actually get a
useful backtrace in the aarch64 Kernel.
2022-05-03 21:53:36 +02:00
Timon Kruiper
b464321618
Kernel: Add kmalloc_init() to the init function of the aarch64 Kernel
...
With the previous commits, we are now able to call kmalloc() :^)
2022-05-03 21:53:36 +02:00
Timon Kruiper
83265b4cb2
Kernel: Replace calls to UART::print_str() with dbgln()
...
Since we can now use dbgln() in the aarch64 Kernel, lets use it! :^)
2022-05-03 00:59:35 +02:00
Tiaan Louw
678555af97
Kernel: Adjust includes after file reorganization
2022-04-08 15:06:33 +01:00
James Mintram
463910df98
Kernel: Print out assertion info in __assertion_failed on aarch64
2022-04-04 22:25:33 +01:00
Idan Horowitz
086969277e
Everywhere: Run clang-format
2022-04-01 21:24:45 +01:00
Jakub V. Flasar
6d2c298b66
Kernel: Move aarch64 Prekernel into Kernel
...
As there is no need for a Prekernel on aarch64, the Prekernel code was
moved into Kernel itself. The functionality remains the same.
SERENITY_KERNEL_AND_INITRD in run.sh specifies a kernel and an inital
ramdisk to be used by the emulator. This is needed because aarch64
does not need a Prekernel and the other ones do.
2022-03-12 14:54:12 -08:00