aboutsummaryrefslogtreecommitdiff
path: root/include/10.libc/source/idt.h
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2022-01-31 11:16:38 +0100
committerAleksa Vučković <aleksav013@gmail.com>2022-01-31 14:03:24 +0100
commit03035c98b4ba3297b837e96080e78e0aac1e86db (patch)
tree55b5f69f83bc8b77ec229062f702c0a4f960e87f /include/10.libc/source/idt.h
parent11e780fd0f7bed3594de9a7170fadc88c4d48be8 (diff)
Promene
Diffstat (limited to 'include/10.libc/source/idt.h')
-rw-r--r--include/10.libc/source/idt.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/10.libc/source/idt.h b/include/10.libc/source/idt.h
new file mode 100644
index 0000000..cbae940
--- /dev/null
+++ b/include/10.libc/source/idt.h
@@ -0,0 +1,37 @@
+#ifndef SOURCE_IDT_H
+#define SOURCE_IDT_H
+
+#include<types.h>
+
+#define INTERRUPT_GATE_32 0x8E
+
+#define KERNEL_CODE 0x08
+#define KERNEL_DATA 0x10
+
+#define PIC1_COMMAND_PORT 0x20
+#define PIC1_DATA_PORT 0x21
+#define PIC2_COMMAND_PORT 0xA0
+#define PIC2_DATA_PORT 0xA1
+
+struct idt_entry
+{
+ uint16_t offset1;
+ uint16_t selector;
+ uint8_t zero;
+ uint8_t type_attr;
+ uint16_t offset2;
+} __attribute__((packed));
+
+struct idt_pointer
+{
+ uint16_t size;
+ uint32_t offset;
+} __attribute__((packed));
+
+void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t
+ type_attr);
+void add_idt_entry(size_t num,uint32_t offset);
+void init_pic(void);
+void init_idt_table(void);
+
+#endif