diff options
| author | Alexey Gavrilov <90127298+rebovas@users.noreply.github.com> | 2024-04-10 13:12:08 +0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-10 13:12:08 +0700 |
| commit | 0a50b1758fd3da118408fd724825d0a50a9ecf17 (patch) | |
| tree | 783ed019c87c3c9624a1a13f68c7bafc4c146dfb /arch/x86/idt/Idt.h | |
| parent | 9ad5b9b6a1f8d641ac13f7c004afd6ea9bff50ee (diff) | |
| parent | 0c56a0300b7ffbab787a4c974bc164d9a2a57ad2 (diff) | |
Merge pull request #8 from rebovas/msr
Msr + interrupts implement + crude implementation of IDT filling
Diffstat (limited to 'arch/x86/idt/Idt.h')
| -rw-r--r-- | arch/x86/idt/Idt.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/x86/idt/Idt.h b/arch/x86/idt/Idt.h index c90b674..7370526 100644 --- a/arch/x86/idt/Idt.h +++ b/arch/x86/idt/Idt.h @@ -32,6 +32,9 @@ class DescInterrupt32 DescInterrupt32() = default; DescInterrupt32(const DescInterrupt32 &) = default; DescInterrupt32(uint32 offset, uint16 selector, uint8 attr); + void setOffset(uint32 offset); + void setGateType(uint8 gateType); + void setDpl(uint8 dpl); uint64 getDescriptor(); static DescInterrupt32 InterruptKernelLong(uint32 offset, uint16 selector); @@ -43,6 +46,13 @@ class DescInterrupt32 class MngIdt { private: + const static uint8 reservedIntSize = 12; + constexpr static uint8 reservedInts[reservedIntSize] = + { + 9, 15, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 + }; + // If false interrupt number isn't reserved, true - reserved + bool isIntReserved(uint8 interrupt); const static uint8 size = 255; static uint64 idt[size]; static bool isInitialize; |
