From 2fd5e9f7298dd86ddb30e4d75f84cb649077d4b8 Mon Sep 17 00:00:00 2001 From: Timon Kruiper Date: Wed, 11 May 2022 16:54:03 +0200 Subject: [PATCH] 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. --- Kernel/Arch/Interrupts.h | 24 +++++++++++++++++ Kernel/Arch/aarch64/Dummy.cpp | 11 ++++++++ Kernel/Arch/aarch64/Interrupts.cpp | 26 +++++++++++++++++++ Kernel/Arch/x86/Interrupts.h | 3 --- Kernel/Arch/x86/common/Interrupts.cpp | 1 + Kernel/Arch/x86/common/Processor.cpp | 2 +- Kernel/CMakeLists.txt | 3 +++ Kernel/Interrupts/GenericInterruptHandler.cpp | 2 +- Kernel/Interrupts/InterruptManagement.cpp | 2 +- 9 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 Kernel/Arch/Interrupts.h create mode 100644 Kernel/Arch/aarch64/Interrupts.cpp diff --git a/Kernel/Arch/Interrupts.h b/Kernel/Arch/Interrupts.h new file mode 100644 index 0000000000..5b41ccab77 --- /dev/null +++ b/Kernel/Arch/Interrupts.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2022, Timon Kruiper + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +#if ARCH(X86_64) || ARCH(I386) +# include +#endif + +namespace Kernel { + +class GenericInterruptHandler; + +GenericInterruptHandler& get_interrupt_handler(u8 interrupt_number); +void register_generic_interrupt_handler(u8 number, GenericInterruptHandler&); +void unregister_generic_interrupt_handler(u8 number, GenericInterruptHandler&); + +} diff --git a/Kernel/Arch/aarch64/Dummy.cpp b/Kernel/Arch/aarch64/Dummy.cpp index ec9a1b117e..1ba7b149d8 100644 --- a/Kernel/Arch/aarch64/Dummy.cpp +++ b/Kernel/Arch/aarch64/Dummy.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -136,3 +137,13 @@ void KString::operator delete(void*) extern "C" { FlatPtr kernel_mapping_base; } + +// InterruptManagement.cpp +namespace Kernel { + +u8 InterruptManagement::acquire_mapped_interrupt_number(u8) +{ + VERIFY_NOT_REACHED(); +} + +} diff --git a/Kernel/Arch/aarch64/Interrupts.cpp b/Kernel/Arch/aarch64/Interrupts.cpp new file mode 100644 index 0000000000..54b2f85839 --- /dev/null +++ b/Kernel/Arch/aarch64/Interrupts.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2022, Timon Kruiper + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +namespace Kernel { + +GenericInterruptHandler& get_interrupt_handler(u8) +{ + VERIFY_NOT_REACHED(); +} + +void register_generic_interrupt_handler(u8, GenericInterruptHandler&) +{ + VERIFY_NOT_REACHED(); +} + +void unregister_generic_interrupt_handler(u8, GenericInterruptHandler&) +{ + VERIFY_NOT_REACHED(); +} + +} diff --git a/Kernel/Arch/x86/Interrupts.h b/Kernel/Arch/x86/Interrupts.h index ef3fe2c85a..2e5ccaab03 100644 --- a/Kernel/Arch/x86/Interrupts.h +++ b/Kernel/Arch/x86/Interrupts.h @@ -42,10 +42,7 @@ extern "C" void interrupt_common_asm_entry(); void register_interrupt_handler(u8 number, void (*handler)()); void register_user_callable_interrupt_handler(u8 number, void (*handler)()); -GenericInterruptHandler& get_interrupt_handler(u8 interrupt_number); -void register_generic_interrupt_handler(u8 number, GenericInterruptHandler&); void register_disabled_interrupt_handler(u8 number, GenericInterruptHandler& handler); -void unregister_generic_interrupt_handler(u8 number, GenericInterruptHandler&); void idt_init(); diff --git a/Kernel/Arch/x86/common/Interrupts.cpp b/Kernel/Arch/x86/common/Interrupts.cpp index e09c383831..d52e0b17d8 100644 --- a/Kernel/Arch/x86/common/Interrupts.cpp +++ b/Kernel/Arch/x86/common/Interrupts.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include #include diff --git a/Kernel/Arch/x86/common/Processor.cpp b/Kernel/Arch/x86/common/Processor.cpp index a9b75cf568..7e2e2800ad 100644 --- a/Kernel/Arch/x86/common/Processor.cpp +++ b/Kernel/Arch/x86/common/Processor.cpp @@ -19,12 +19,12 @@ #include #include +#include #include #include #include #include #include -#include #include #include #include diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 56821c98c9..551ea74544 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -416,6 +416,7 @@ else() Arch/aarch64/Dummy.cpp Arch/aarch64/Exceptions.cpp Arch/aarch64/init.cpp + Arch/aarch64/Interrupts.cpp Arch/aarch64/kprintf.cpp Arch/aarch64/MainIdRegister.cpp Arch/aarch64/MMU.cpp @@ -449,6 +450,8 @@ else() Memory/SharedInodeVMObject.cpp Memory/VirtualRange.cpp Memory/VMObject.cpp + + Interrupts/GenericInterruptHandler.cpp ) # Otherwise linker errors e.g undefined reference to `__aarch64_cas8_acq_rel' diff --git a/Kernel/Interrupts/GenericInterruptHandler.cpp b/Kernel/Interrupts/GenericInterruptHandler.cpp index 6ed7dad5fe..579e9c8101 100644 --- a/Kernel/Interrupts/GenericInterruptHandler.cpp +++ b/Kernel/Interrupts/GenericInterruptHandler.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include #include diff --git a/Kernel/Interrupts/InterruptManagement.cpp b/Kernel/Interrupts/InterruptManagement.cpp index 3d2b3aecee..c7570f3f34 100644 --- a/Kernel/Interrupts/InterruptManagement.cpp +++ b/Kernel/Interrupts/InterruptManagement.cpp @@ -6,8 +6,8 @@ #include #include +#include #include -#include #include #include #include