summaryrefslogtreecommitdiffstats
path: root/arch/x86/idt/Idt.h
diff options
context:
space:
mode:
authorAlexey Gavrilov <rebovas@yahoo.com>2024-04-10 12:58:20 +0700
committerAlexey Gavrilov <rebovas@yahoo.com>2024-04-10 12:58:20 +0700
commit515a11b818e4140845f69bb26a19d270a9e42178 (patch)
treefd22e0d8d56a6498fb67ffcd99da0a45b97ab5f3 /arch/x86/idt/Idt.h
parent9ad5b9b6a1f8d641ac13f7c004afd6ea9bff50ee (diff)
MSR + IDT + test ISRs
Diffstat (limited to 'arch/x86/idt/Idt.h')
-rw-r--r--arch/x86/idt/Idt.h10
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;