diff options
| author | Aleksa Vučković <aleksav013@gmail.com> | 2022-01-31 11:16:38 +0100 |
|---|---|---|
| committer | Aleksa Vučković <aleksav013@gmail.com> | 2022-01-31 14:03:24 +0100 |
| commit | 03035c98b4ba3297b837e96080e78e0aac1e86db (patch) | |
| tree | 55b5f69f83bc8b77ec229062f702c0a4f960e87f /include/04.idt | |
| parent | 11e780fd0f7bed3594de9a7170fadc88c4d48be8 (diff) | |
Promene
Diffstat (limited to 'include/04.idt')
| -rw-r--r-- | include/04.idt/deo1 | 3 | ||||
| -rw-r--r-- | include/04.idt/deo10 | 4 | ||||
| -rw-r--r-- | include/04.idt/deo11 | 14 | ||||
| -rw-r--r-- | include/04.idt/deo12 | 37 | ||||
| -rw-r--r-- | include/04.idt/deo13 | 2 | ||||
| -rw-r--r-- | include/04.idt/deo14 | 2 | ||||
| -rw-r--r-- | include/04.idt/deo7 | 2 | ||||
| -rw-r--r-- | include/04.idt/deo8 | 2 | ||||
| -rw-r--r-- | include/04.idt/deo9 | 8 | ||||
| -rw-r--r-- | include/04.idt/idt.c | 108 | ||||
| -rw-r--r-- | include/04.idt/idt.h | 37 | ||||
| -rw-r--r-- | include/04.idt/idt1.h | 2 | ||||
| -rw-r--r-- | include/04.idt/idt2.h | 1 | ||||
| -rw-r--r-- | include/04.idt/idt3.h (renamed from include/04.idt/deo2) | 0 | ||||
| -rw-r--r-- | include/04.idt/idt4.h (renamed from include/04.idt/deo3) | 0 | ||||
| -rw-r--r-- | include/04.idt/idt5.h (renamed from include/04.idt/deo4) | 0 | ||||
| -rw-r--r-- | include/04.idt/idt6.h (renamed from include/04.idt/deo5) | 0 | ||||
| -rw-r--r-- | include/04.idt/idt7.h (renamed from include/04.idt/deo6) | 0 | ||||
| -rw-r--r-- | include/04.idt/idt8.h | 5 | ||||
| -rw-r--r-- | include/04.idt/idt9.h | 1 |
20 files changed, 46 insertions, 182 deletions
diff --git a/include/04.idt/deo1 b/include/04.idt/deo1 deleted file mode 100644 index 7c174c9..0000000 --- a/include/04.idt/deo1 +++ /dev/null @@ -1,3 +0,0 @@ -#include<types.h> -#include<irq.h> -#include<asm.h> diff --git a/include/04.idt/deo10 b/include/04.idt/deo10 deleted file mode 100644 index 409dd15..0000000 --- a/include/04.idt/deo10 +++ /dev/null @@ -1,4 +0,0 @@ -void add_idt_entry(size_t num,uint32_t offset) -{ - init_idt_entry(num,offset,KERNEL_CODE,INTERRUPT_GATE_32); -} diff --git a/include/04.idt/deo11 b/include/04.idt/deo11 deleted file mode 100644 index 055e22a..0000000 --- a/include/04.idt/deo11 +++ /dev/null @@ -1,14 +0,0 @@ -void init_pic() -{ - ioport_out(PIC1_COMMAND_PORT, 0x11); - ioport_out(PIC2_COMMAND_PORT, 0x11); - ioport_out(PIC1_DATA_PORT, 0x20); - ioport_out(PIC2_DATA_PORT, 0x28); - ioport_out(PIC1_DATA_PORT, 0x04); - ioport_out(PIC2_DATA_PORT, 0x02); - ioport_out(PIC1_DATA_PORT, 0x01); - ioport_out(PIC2_DATA_PORT, 0x01); - ioport_out(PIC1_DATA_PORT, 0xff); - ioport_out(PIC2_DATA_PORT, 0xff); - ioport_out(PIC1_DATA_PORT, 0xFC); -} diff --git a/include/04.idt/deo12 b/include/04.idt/deo12 deleted file mode 100644 index ea57b35..0000000 --- a/include/04.idt/deo12 +++ /dev/null @@ -1,37 +0,0 @@ -void init_idt_table() -{ - init_pic(); - add_idt_entry(0,(uint32_t)irq0); - add_idt_entry(1,(uint32_t)irq1); - add_idt_entry(2,(uint32_t)irq2); - add_idt_entry(3,(uint32_t)irq3); - add_idt_entry(4,(uint32_t)irq4); - add_idt_entry(5,(uint32_t)irq5); - add_idt_entry(6,(uint32_t)irq6); - add_idt_entry(7,(uint32_t)irq7); - add_idt_entry(8,(uint32_t)irq8); - add_idt_entry(9,(uint32_t)irq9); - add_idt_entry(10,(uint32_t)irq10); - add_idt_entry(11,(uint32_t)irq11); - add_idt_entry(12,(uint32_t)irq12); - add_idt_entry(13,(uint32_t)irq13); - add_idt_entry(14,(uint32_t)irq14); - add_idt_entry(15,(uint32_t)irq15); - add_idt_entry(16,(uint32_t)irq16); - add_idt_entry(17,(uint32_t)irq17); - add_idt_entry(18,(uint32_t)irq18); - add_idt_entry(19,(uint32_t)irq19); - add_idt_entry(20,(uint32_t)irq20); - add_idt_entry(21,(uint32_t)irq21); - add_idt_entry(22,(uint32_t)irq22); - add_idt_entry(23,(uint32_t)irq23); - add_idt_entry(24,(uint32_t)irq24); - add_idt_entry(25,(uint32_t)irq25); - add_idt_entry(26,(uint32_t)irq26); - add_idt_entry(27,(uint32_t)irq27); - add_idt_entry(28,(uint32_t)irq28); - add_idt_entry(29,(uint32_t)irq29); - add_idt_entry(30,(uint32_t)irq30); - add_idt_entry(31,(uint32_t)irq31); - add_idt_entry(32,(uint32_t)timer_irq); - add_idt_entry(33,(uint32_t)keyboard_irq); diff --git a/include/04.idt/deo13 b/include/04.idt/deo13 deleted file mode 100644 index 427144b..0000000 --- a/include/04.idt/deo13 +++ /dev/null @@ -1,2 +0,0 @@ - idtp.size=sizeof(struct idt_entry)*256-1; - idtp.offset=(uint32_t)&idt; diff --git a/include/04.idt/deo14 b/include/04.idt/deo14 deleted file mode 100644 index 8442fdc..0000000 --- a/include/04.idt/deo14 +++ /dev/null @@ -1,2 +0,0 @@ - load_idt(&idtp); -} diff --git a/include/04.idt/deo7 b/include/04.idt/deo7 deleted file mode 100644 index ffa0e82..0000000 --- a/include/04.idt/deo7 +++ /dev/null @@ -1,2 +0,0 @@ -extern void load_idt(struct idt_pointer *idtp); -extern void keyboard_irq(); diff --git a/include/04.idt/deo8 b/include/04.idt/deo8 deleted file mode 100644 index 28b2298..0000000 --- a/include/04.idt/deo8 +++ /dev/null @@ -1,2 +0,0 @@ -struct idt_entry idt[256]; -struct idt_pointer idtp; diff --git a/include/04.idt/deo9 b/include/04.idt/deo9 deleted file mode 100644 index d11c19e..0000000 --- a/include/04.idt/deo9 +++ /dev/null @@ -1,8 +0,0 @@ -void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t type_attr) -{ - idt[num].offset1=(offset & 0xffff); - idt[num].selector=selector; - idt[num].zero=0; - idt[num].type_attr=type_attr; - idt[num].offset2=(offset & 0xffff0000)>>16; -} diff --git a/include/04.idt/idt.c b/include/04.idt/idt.c deleted file mode 100644 index 843c9da..0000000 --- a/include/04.idt/idt.c +++ /dev/null @@ -1,108 +0,0 @@ -#include<types.h> -#include<irq.h> -#include<asm.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)); - - -extern void load_idt(struct idt_pointer *idtp); -extern void keyboard_irq(); - -struct idt_entry idt[256]; -struct idt_pointer idtp; - -void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t type_attr) -{ - idt[num].offset1=(offset & 0xffff); - idt[num].selector=selector; - idt[num].zero=0; - idt[num].type_attr=type_attr; - idt[num].offset2=(offset & 0xffff0000)>>16; -} - -void add_idt_entry(size_t num,uint32_t offset) -{ - init_idt_entry(num,offset,KERNEL_CODE,INTERRUPT_GATE_32); -} - -void init_pic() -{ - ioport_out(PIC1_COMMAND_PORT, 0x11); - ioport_out(PIC2_COMMAND_PORT, 0x11); - ioport_out(PIC1_DATA_PORT, 0x20); - ioport_out(PIC2_DATA_PORT, 0x28); - ioport_out(PIC1_DATA_PORT, 0x04); - ioport_out(PIC2_DATA_PORT, 0x02); - ioport_out(PIC1_DATA_PORT, 0x01); - ioport_out(PIC2_DATA_PORT, 0x01); - ioport_out(PIC1_DATA_PORT, 0xff); - ioport_out(PIC2_DATA_PORT, 0xff); - ioport_out(PIC1_DATA_PORT, 0xFC); -} - -void init_idt_table() -{ - init_pic(); - add_idt_entry(0,(uint32_t)irq0); - add_idt_entry(1,(uint32_t)irq1); - add_idt_entry(2,(uint32_t)irq2); - add_idt_entry(3,(uint32_t)irq3); - add_idt_entry(4,(uint32_t)irq4); - add_idt_entry(5,(uint32_t)irq5); - add_idt_entry(6,(uint32_t)irq6); - add_idt_entry(7,(uint32_t)irq7); - add_idt_entry(8,(uint32_t)irq8); - add_idt_entry(9,(uint32_t)irq9); - add_idt_entry(10,(uint32_t)irq10); - add_idt_entry(11,(uint32_t)irq11); - add_idt_entry(12,(uint32_t)irq12); - add_idt_entry(13,(uint32_t)irq13); - add_idt_entry(14,(uint32_t)irq14); - add_idt_entry(15,(uint32_t)irq15); - add_idt_entry(16,(uint32_t)irq16); - add_idt_entry(17,(uint32_t)irq17); - add_idt_entry(18,(uint32_t)irq18); - add_idt_entry(19,(uint32_t)irq19); - add_idt_entry(20,(uint32_t)irq20); - add_idt_entry(21,(uint32_t)irq21); - add_idt_entry(22,(uint32_t)irq22); - add_idt_entry(23,(uint32_t)irq23); - add_idt_entry(24,(uint32_t)irq24); - add_idt_entry(25,(uint32_t)irq25); - add_idt_entry(26,(uint32_t)irq26); - add_idt_entry(27,(uint32_t)irq27); - add_idt_entry(28,(uint32_t)irq28); - add_idt_entry(29,(uint32_t)irq29); - add_idt_entry(30,(uint32_t)irq30); - add_idt_entry(31,(uint32_t)irq31); - add_idt_entry(32,(uint32_t)timer_irq); - add_idt_entry(33,(uint32_t)keyboard_irq); - - idtp.size=sizeof(struct idt_entry)*256-1; - idtp.offset=(uint32_t)&idt; - - load_idt(&idtp); -} diff --git a/include/04.idt/idt.h b/include/04.idt/idt.h new file mode 100644 index 0000000..cbae940 --- /dev/null +++ b/include/04.idt/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 diff --git a/include/04.idt/idt1.h b/include/04.idt/idt1.h new file mode 100644 index 0000000..46876e9 --- /dev/null +++ b/include/04.idt/idt1.h @@ -0,0 +1,2 @@ +#ifndef SOURCE_IDT_H +#define SOURCE_IDT_H diff --git a/include/04.idt/idt2.h b/include/04.idt/idt2.h new file mode 100644 index 0000000..c45e28b --- /dev/null +++ b/include/04.idt/idt2.h @@ -0,0 +1 @@ +#include<types.h> diff --git a/include/04.idt/deo2 b/include/04.idt/idt3.h index afb8506..afb8506 100644 --- a/include/04.idt/deo2 +++ b/include/04.idt/idt3.h diff --git a/include/04.idt/deo3 b/include/04.idt/idt4.h index c564d8a..c564d8a 100644 --- a/include/04.idt/deo3 +++ b/include/04.idt/idt4.h diff --git a/include/04.idt/deo4 b/include/04.idt/idt5.h index ca70fa7..ca70fa7 100644 --- a/include/04.idt/deo4 +++ b/include/04.idt/idt5.h diff --git a/include/04.idt/deo5 b/include/04.idt/idt6.h index dcab25c..dcab25c 100644 --- a/include/04.idt/deo5 +++ b/include/04.idt/idt6.h diff --git a/include/04.idt/deo6 b/include/04.idt/idt7.h index fe1bff5..fe1bff5 100644 --- a/include/04.idt/deo6 +++ b/include/04.idt/idt7.h diff --git a/include/04.idt/idt8.h b/include/04.idt/idt8.h new file mode 100644 index 0000000..046ac06 --- /dev/null +++ b/include/04.idt/idt8.h @@ -0,0 +1,5 @@ +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); diff --git a/include/04.idt/idt9.h b/include/04.idt/idt9.h new file mode 100644 index 0000000..69331c3 --- /dev/null +++ b/include/04.idt/idt9.h @@ -0,0 +1 @@ +#endif |
