Liav A
7c0540a229
Everywhere: Move global Kernel pattern code to Kernel/Library directory
...
This has KString, KBuffer, DoubleBuffer, KBufferBuilder, IOWindow,
UserOrKernelBuffer and ScopedCritical classes being moved to the
Kernel/Library subdirectory.
Also, move the panic and assertions handling code to that directory.
2023-06-04 21:32:34 +02:00
Timon Kruiper
65ed5419ae
Kernel/aarch64: Dump registers when unknown exception occurs
...
This is useful when debugging baremetal issues.
2023-05-15 17:16:06 -06:00
Pankaj Raghav
91da264a4c
Kernel: Add reserve_interrupt_handlers API
...
MSI(x) interrupts need to reserve IRQs so that it can be programmed by
the device. Add an API to reserve contiguous ranges of interrupt
handlers so that it can used by PCI devices that use MSI(x) mechanism.
This API needs to be implemented by aarch64 architecture.
2023-05-07 21:16:41 +02:00
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