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