Timon Kruiper
f8e4eecbfb
Kernel: Replace calls to Prekernel::panic() with PANIC macro on aarch64
2022-05-03 21:53:36 +02:00
Timon Kruiper
e81e1fa9c8
Kernel: Implement __panic() for the aarch64 Kernel
...
Now that dump_backtrace() works, we can actually print a helpful
backtrace when the Kernel panics.
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
3b4d2d9b51
Kernel: Remove VERIFY_NOT_REACHED in {current, idle}_thread for aarch64
...
These functions are called by kmalloc, and since there is no support for
threading in the aarch64 build yet, we can simply remove the
VERIFY_NOT_REACHED().
2022-05-03 21:53:36 +02:00
Timon Kruiper
8e0bd63b0c
Kernel: Add bare-minimum implementation for aarch64 Spinlock
2022-05-03 21:53:36 +02:00
Timon Kruiper
9abcb6700c
Kernel: Move Arch/x86/Spinlock.h and add stubs for aarch64
...
The code in Spinlock.h has no architectural specific logic, thus can be
moved to the Arch directory. This contains no functional change.
Also add the Spinlock.cpp file for aarch64 which contains stubs for the
lock and unlock functions.
2022-05-03 21:53:36 +02:00
Timon Kruiper
0d6d4508df
Kernel: Add the .ksyms section to the aarch64 Kernel binary
...
Previously the embedmap.sh script generated a warning, since there was
no section defined where the actual kernel.map could be stored. This is
necesarry for generating kernel backtraces.
2022-05-03 21:53:36 +02:00
Timon Kruiper
9f76b16124
Kernel: Implement safe_memcpy for the aarch64 build
...
The implementation just calls the regular memcpy, and is not safe yet.
This can be done later.
2022-05-03 21:53:36 +02:00
Timon Kruiper
feba7bc8a8
Kernel: Move Kernel/Arch/x86/SafeMem.h to Kernel/Arch/SafeMem.h
...
The file does not contain any specific architectural code, thus it can
be moved to the Kernel/Arch directory.
2022-05-03 21:53:36 +02:00
Timon Kruiper
267febae55
Kernel: Add KSyms.cpp to the aarch64 build
...
This is the first step in making dump_backtrace() work.
2022-05-03 21:53:36 +02:00
Timon Kruiper
15f32379bb
Kernel: Remove UART::{print_num, print_hex} since they are unused
2022-05-03 00:59:35 +02:00
Timon Kruiper
47a58c51c6
Kernel: Modify UART::print_str() to also take into account the length
...
Previously in the aarch64 Kernel, this would cause dbgln() to actually
print more characters of the next string in memory, because strings in
the Kernel are not zero terminated by default. Prevent this by using the
passed in length of the string.
2022-05-03 00:59:35 +02:00
Timon Kruiper
4a2dcea685
Kernel: Remove aarch64/Utils.{cpp, h} since they are not used anymore
2022-05-03 00:59:35 +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
Timon Kruiper
b046c82f75
Kernel: Let Processor::is_initialized() of aarch64 return false
...
When calling dbgln(), the formatting code in AK/Format.h calls
Processor::is_initialized() to determine whether to add some text about
the current processor to the debug output. Instead of crashing, we just
return false, such that we can use dbgln() etc in the aarch64 Kernel.
2022-05-03 00:59:35 +02:00
Timon Kruiper
b9944ca905
Kernel: Add aarch64 version of kprintf.cpp
...
This allows us to use the AK formatting functions in the aarch64 Kernel.
Also add FIXME to make sure that this file will be removed when the
proper abstractions are in place in the normal Kernel/kprintf.cpp.
2022-05-03 00:59:35 +02:00
Linus Groh
cd3e337487
Kernel: Strip null terminators from all CPUID strings, not just brand
...
I've noticed that the KVM hypervisor vendor ID string contained null
terminators in the serialized JSON string in /proc/cpuinfo - let's avoid
that, and err on the side of caution and strip them from all strings
built from CPUID register values. They may not be fixed width after all.
2022-04-26 20:20:44 +02:00
Linus Groh
62185452f0
Kernel: Query OS-enabled CPUID features again at the end of cpu_setup()
...
For OSPKE this is a no-op as we don't enable PKU yet, but the state of
the OSXSAVE flag might have changed if we enabled XSAVE.
2022-04-08 18:53:42 +01:00
Linus Groh
87aabb5ef7
Kernel: Rename OSPKU CPUID feature flag to OSPKE
...
Unlike "XSAVE enabled by OS" being indicated by the OSXSAVE flag, in
this case it's "PKU enabled by OS" being indicated by the OSPKE flag.
2022-04-08 18:53:42 +01:00
Tiaan Louw
678555af97
Kernel: Adjust includes after file reorganization
2022-04-08 15:06:33 +01:00
James Mintram
d94c7fa417
Kernel: Improve the aarch64 kernel source files disk layout
2022-04-06 08:56:20 +01:00
James Mintram
df9a833d7a
Kernel: Add VERIFY_NOT_REACHED to aarch64 PageDirectory.cpp
2022-04-04 14:35:54 -07:00
James Mintram
283d8e8f51
Kernel: Add VERIFY_NOT_REACHED to aarch64 locking functions
2022-04-04 14:35:54 -07:00
James Mintram
e98ea8a977
Kernel: Add VERIFY_NOT_REACHED to the aarch64 handle_crash function
2022-04-04 14:35:54 -07:00
James Mintram
d014c0501d
Kernel: Remove unused dummy function from dummy.cpp
2022-04-04 14:35:54 -07:00
James Mintram
bd7acd4b90
Kernel: Add VERIFY_NOT_REACHED to stub functions in aarch64 dummy.cpp
2022-04-04 14:35:54 -07:00
James Mintram
92a8383101
Kernel: Add VERIFY_NOT_REACHED to stub aarch64 Processor functions
2022-04-04 14:35:54 -07:00
James Mintram
463910df98
Kernel: Print out assertion info in __assertion_failed on aarch64
2022-04-04 22:25:33 +01:00
James Mintram
2b442ae44f
Kernel: Add kmalloc.cpp to aarch64
2022-04-03 23:21:04 +02:00
Linus Groh
b0f701d053
Kernel: Convert ProcessorInfo::build_brand_string() to StringBuilder
2022-04-03 23:20:33 +02:00
Linus Groh
3f9c2495e5
Kernel: Remove EBX, ECX, and EDX values from hypervisor dmesgln()
2022-04-03 23:20:33 +02:00
Linus Groh
8d96525b9d
Kernel: Move hypervisor vendor ID string to ProcessorInfo
...
This will make it possible to expose it in /proc/cpuinfo. :^)
2022-04-03 23:20:33 +02:00
Linus Groh
f6181cd47e
Kernel: Make ProcessorInfo::build_foo_string() private
2022-04-03 23:20:33 +02:00
Linus Groh
afce63fffc
Kernel: Move feature string building to ProcessorInfo
...
Other than a dmesgln(), ProcessorInfo is the only user of this function
and is already responsible for building other CPUID-related strings.
2022-04-03 23:20:33 +02:00
Linus Groh
53a95a5347
Kernel: Rename some ProcessorInfo members to match Intel manual
...
Let's use terminology from the the Intel manual to avoid confusion.
Also add `_string` suffixes to better distinguish the numeric values
from the string values.
2022-04-03 23:20:33 +02:00
Linus Groh
ebe2cf8995
Kernel: Move private ProcessorInfo members to the end
2022-04-03 23:20:33 +02:00
James Mintram
9186ed3101
Kernel: Add all memory files to aarch64 and fix resulting linker errors
2022-04-02 19:34:20 -07:00
James Mintram
d79c772c87
Kernel: Make MemoryManager compile on aarch64
2022-04-02 19:34:20 -07:00
James Mintram
6299a69253
Kernel: Make handle_crash available to aarch64
2022-04-02 19:34:20 -07:00
James Mintram
d3b6201b40
Kernel: Make PageDirectory.cpp compile on aarch64
2022-04-02 19:34:20 -07:00
James Mintram
783a44b18e
Kernel: Make PhysicalRegion.cpp compile on aarch64
2022-04-02 19:34:20 -07:00
James Mintram
627fd231d5
Kernel: Make Region.cpp compile on aarch64
2022-04-02 19:34:20 -07:00
James Mintram
a883079b29
Kernel: Add missing new/delete and kcalloc to dummy.cpp
2022-04-02 19:34:20 -07:00
James Mintram
031b0c76b5
Kernel: Re-add dummy.cpp and remove duplicate definitions
2022-04-02 19:34:20 -07:00
James Mintram
d50e237281
Kernel: Add idle_thread() to aarch64 Processor.h
2022-04-02 19:34:20 -07:00
James Mintram
026efae8a8
Kernel: Add PAGE_MASK to an aarch64 CPU header
2022-04-02 19:34:20 -07:00
Idan Horowitz
086969277e
Everywhere: Run clang-format
2022-04-01 21:24:45 +01:00
Linus Groh
1e82c2708d
Kernel: Support all AMD-defined CPUID feature flags for EAX=80000001h
...
We're now able to detect all the AMD-defined CPUID feature flags from
ECX/EDX for EAX=80000001h :^)
2022-03-27 18:54:56 +02:00
Linus Groh
96e6420d8d
Kernel: Support all Intel-defined extended CPUID feature flags for EAX=7
...
We're now able to detect all the extended CPUID feature flags from
EBX/ECX/EDX for EAX=7 :^)
2022-03-27 18:54:56 +02:00