Daniel Bertalan
a0356a0302
Kernel/aarch64: Fix build after is_sharing_with_others
API removal
...
This commit fixes the build after the removal of
`GenericInterruptHandler::is_sharing_with_others` in 8944ca830f
.
2023-04-28 15:00:06 +02:00
Timon Kruiper
5d587ea562
Kernel/aarch64: Call handle_crash on unknown exceptions
...
This is useful for debugging, as it will now print out a userspace
backtrace, and optionally also dump the memory regions of the process.
2023-02-18 19:17:21 +01:00
Timon Kruiper
7d0917f50b
Kernel/aarch64: Remove tpidr_el0 from RegisterState
...
In the next commit, this register will be populated by directly writing
to it, instead of using the RegisterState mechanism.
2023-02-15 22:53:19 +01:00
Timon Kruiper
d5262a540c
Kernel/aarch64: Handle SVC exception by calling syscall_handler
...
The SVC (supervisor call) instruction is used in userland to do
syscalls, and this commit adds the handling of syscalls to
Interrupts.cpp.
2023-02-15 22:53:19 +01:00
Timon Kruiper
da89cd948f
Kernel/aarch64: Do not dump register state on every page fault
...
This became very spammy, and is not needed anymore since we now
correctly handle page faults.
2023-02-08 18:19:48 +00:00
Timon Kruiper
3106a72a72
Kernel/aarch64: Make register dump output a bit nicer
2023-02-08 18:19:48 +00:00
Timon Kruiper
cf5b02e3a4
Kernel/aarch64: Dump ESR_EL1 in dump_registers and remove backtracing
2023-02-08 18:19:48 +00:00
Timon Kruiper
7ba9bc6338
Kernel/aarch64: Remove static from dump_registers
...
This allows the function to be called from other translation units, in
particular this allows the CrashHandler.cpp file to be shared between
aarch64 and x86_64.
2023-02-08 18:19:48 +00:00
Timon Kruiper
7be7324287
Kernel/aarch64: Set correct ExecutionMode of PageFault
...
Adds a helper to aarch64/Registers.h to factor out the exception class
encoding.
2023-02-08 18:19:48 +00:00
Timon Kruiper
ecf45e191e
Kernel/aarch64: Handle instruction aborts
...
To detect instruction aborts, a helper to Registers.h is added, and used
in Interrupts.cpp. Additionally, the PageFault class gets a setter to
set the PageFaults m_is_instruction_fetch bool, and is also used in
Interrupts.cpp.
2023-02-08 18:19:48 +00:00
Timon Kruiper
55d756a813
Kernel/aarch64: Implement initial page fault handling
...
The shared code is moved to a common PageFault.cpp file.
2023-01-27 11:41:43 +01:00
Timon Kruiper
05659debd1
Kernel/aarch64: Move exception handler to Interrupts.cpp
...
Also dump the registers in a nicer format.
2023-01-27 11:41:43 +01:00
Jelle Raaijmakers
5f85f1abaa
Kernel: Simplify (un)registering interrupt logic
...
Lose a level of indentation and remove a superfluous `handler_slot`
check.
2023-01-20 15:22:42 +01:00
Timon Kruiper
f232133f65
Kernel/aarch64: Implement Processor::{enter,exit}_trap
...
And use them in interrupt handling.
2022-12-29 19:32:20 -07:00
Liav A
91db482ad3
Kernel: Reorganize Arch/x86 directory to Arch/x86_64 after i686 removal
...
No functional change.
2022-12-28 11:53:41 +01:00
Andreas Kling
9b3db63e14
Kernel: Rename GenericInterruptHandler "invoking count" to "call count"
2022-11-19 15:39:30 +01:00
Gunnar Beutner
dfee6f73d2
Kernel: Replace VERIFY_NOT_REACHED with TODO_AARCH64
...
This makes it easier to differentiate between cases where certain
functionality is not implemented vs. cases where a code location
should really be unreachable.
2022-10-16 17:35:37 +02:00
Timon Kruiper
3cf8d3361e
Kernel: Add support for handling interrupts on aarch64
...
There is currently some code duplication between the aarch64
implementation and the x86 one, but this initial implementation works
for now. :^)
2022-06-02 13:14:12 +01:00
Timon Kruiper
cbe1717181
Kernel: Rename idt_init() to initialize_interrupts()
...
Also move the function out of the x86/Interrupts.h file into the generic
Interrupts.h file and add a stub for aarch64.
2022-06-02 13:14:12 +01:00
Timon Kruiper
2fd5e9f729
Kernel: Add GenericInterruptHandler.cpp to aarch64 build
...
This requires us to add an Interrupts.h file in the Kernel/Arch
directory, which includes the architecture specific files.
The commit also stubs out the functions to be able to compile the
aarch64 Kernel.
2022-06-02 13:14:12 +01:00