Iros
Loading...
Searching...
No Matches
idt.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/bit/prelude.h
"
4
5
namespace
iris::x86::amd64::idt
{
6
using namespace
di::bit;
7
8
// The format of the 64 bit Interrupt Descriptor Table is described
9
// in the AMD64 Programmer's Manual; Volume 2; Figure 4-24, and on
10
// the OSDEV wiki at the page:
11
// https://wiki.osdev.org/Interrupt_Descriptor_Table#Structure_on_x86-64
12
struct
TargetLow
:
BitField
<0, 16> {};
13
struct
SegmentSelector
:
BitField
<16, 16> {};
14
struct
IST
:
BitField
<32, 3> {};
15
16
// Interrupt Gates automatically disable interrupts upon entry, while Trap Gates do not.
17
// In practice, the system call vector should be made a Trap Gate, while hw IRQ handlers
18
// and CPU exception handlers should be made Interrupt Gates.
19
struct
Type
:
BitField
<40, 4> {
20
constexpr
static
u8
InterruptGate
= 0b1110;
21
constexpr
static
u8
TrapGate
= 0b1111;
22
};
23
24
struct
DPL
:
BitField
<45, 2> {};
25
struct
Present
:
BitFlag
<47> {};
26
struct
TargetMid
:
BitField
<48, 16> {};
27
struct
TargetHigh
:
BitField
<64, 32> {};
28
29
using
Entry
=
BitStruct<16, TargetLow, SegmentSelector, IST, Type, DPL, Present, TargetMid, TargetHigh>
;
30
31
void
init_idt
();
32
void
load_idt
();
33
}
di::bit::BitStruct
Definition
bit_struct.h:11
prelude.h
di::types::u8
__UINT8_TYPE__ u8
Definition
integers.h:9
iris::x86::amd64::idt
Definition
idt.cpp:6
iris::x86::amd64::idt::Entry
BitStruct< 16, TargetLow, SegmentSelector, IST, Type, DPL, Present, TargetMid, TargetHigh > Entry
Definition
idt.h:29
iris::x86::amd64::idt::load_idt
void load_idt()
Definition
idt.cpp:126
iris::x86::amd64::idt::init_idt
void init_idt()
Definition
idt.cpp:111
di::bit::BitField< 0, 16 >::BitField
constexpr BitField(Value value)
Definition
bit_field.h:28
di::bit::BitFlag< 47 >::BitFlag
constexpr BitFlag(bool value)
Definition
bit_flag.h:19
iris::x86::amd64::idt::DPL
Definition
idt.h:24
iris::x86::amd64::idt::IST
Definition
idt.h:14
iris::x86::amd64::idt::Present
Definition
idt.h:25
iris::x86::amd64::idt::SegmentSelector
Definition
idt.h:13
iris::x86::amd64::idt::TargetHigh
Definition
idt.h:27
iris::x86::amd64::idt::TargetLow
Definition
idt.h:12
iris::x86::amd64::idt::TargetMid
Definition
idt.h:26
iris::x86::amd64::idt::Type
Definition
idt.h:19
iris::x86::amd64::idt::Type::InterruptGate
static constexpr u8 InterruptGate
Definition
idt.h:20
iris::x86::amd64::idt::Type::TrapGate
static constexpr u8 TrapGate
Definition
idt.h:21
iris
include
iris
arch
x86
amd64
idt.h
Generated by
1.13.0