From 8af8000bcfa547f6a00a1d3811de3620800c7a39 Mon Sep 17 00:00:00 2001 From: Tyler McGurrin Date: Wed, 4 Jun 2025 07:00:28 -0400 Subject: [PATCH] The Great Refactoring :D --- README.md | 5 +- build_scripts/genISR.sh | 6 +- src/kernel/Makefile | 2 +- src/kernel/arch/i686/basicfunc.asm | 6 +- src/kernel/arch/i686/basicfunc.h | 2 +- src/kernel/arch/i686/gdt.asm | 6 +- src/kernel/arch/i686/gdt.c | 6 +- src/kernel/arch/i686/gdt.h | 6 +- src/kernel/arch/i686/gen_isr.c | 1026 ++++++++++++++-------------- src/kernel/arch/i686/idt.asm | 6 +- src/kernel/arch/i686/idt.c | 12 +- src/kernel/arch/i686/idt.h | 8 +- src/kernel/arch/i686/io.asm | 20 +- src/kernel/arch/i686/io.c | 4 +- src/kernel/arch/i686/io.h | 12 +- src/kernel/arch/i686/irq.c | 14 +- src/kernel/arch/i686/irq.h | 4 +- src/kernel/arch/i686/isr.asm | 12 +- src/kernel/arch/i686/isr.c | 18 +- src/kernel/arch/i686/isr.h | 4 +- src/kernel/arch/i686/pic.c | 86 +-- src/kernel/arch/i686/pic.h | 14 +- src/kernel/dri/cmos.c | 4 +- src/kernel/dri/disk/floppy.c | 78 ++- src/kernel/dri/disk/floppy.h | 109 +-- src/kernel/dri/serial.c | 30 +- src/kernel/hal/hal.c | 8 +- src/kernel/hal/isrs.h | 0 src/kernel/main.c | 16 +- src/kernel/stdio.c | 8 +- src/libs/version.h | 2 +- 31 files changed, 770 insertions(+), 764 deletions(-) delete mode 100644 src/kernel/hal/isrs.h diff --git a/README.md b/README.md index 3105816..0c53e79 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Designed to run from just one 1.44MB floppy disk, ATA support coming soon! (TM) Good luck figuring out the spagetti code i write... (sorry not sorry ;D) -Designed for older computers such as a Pentium (i586) Class Machine. I would recomend atleast a Pentium 2 Class or higher system however. +Designed for older computers such as a Pentium (i586) Class Machine. I would recomend atleast a Pentium 2 Class System or higher however. ## Features A funtioning Bootloader and half working kernel. @@ -33,9 +33,10 @@ If you wanted to write it to a floppy disk you can use `write.sh` tho be careful Testing is mostly done with QEMU These days, but I do sometimes pull out my Dell Latitude D610 to test on (for anyone wondering its completely maxed out. [2GB of ram Pentium M @ 2.23GHz]) ## Thanks! -Nanobyte and the OSDEV wiki for providing resources for me to be able to make this. +Resources I've Used Throughout the Project - Nanobyte's Youtube Channel: https://www.youtube.com/@nanobyte-dev - OSDEV Wiki: https://wiki.osdev.org/Expanded_Main_Page +- BrokenThorn: http://www.brokenthorn.com And thanks to some of my favorite bands for some nice ass music! - King Gizzard and The Lizzard Wizzard diff --git a/build_scripts/genISR.sh b/build_scripts/genISR.sh index 9959582..97faa70 100755 --- a/build_scripts/genISR.sh +++ b/build_scripts/genISR.sh @@ -22,15 +22,15 @@ echo "#include \"gdt.h\"" >> $ISRS_GEN_C echo "" >> $ISRS_GEN_C for i in $(seq 0 255); do - echo "void __attribute((cdecl)) i686_ISR${i}();" >> $ISRS_GEN_C + echo "void __attribute((cdecl)) ISR${i}();" >> $ISRS_GEN_C done echo "" >> $ISRS_GEN_C -echo "void i686_ISR_InitializeGates()" >> $ISRS_GEN_C +echo "void ISR_InitializeGates()" >> $ISRS_GEN_C echo "{" >> $ISRS_GEN_C for i in $(seq 0 255); do - echo " i686_IDT_SetGate(${i}, i686_ISR${i}, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT);" >> $ISRS_GEN_C + echo " IDT_SetGate(${i}, ISR${i}, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT);" >> $ISRS_GEN_C done diff --git a/src/kernel/Makefile b/src/kernel/Makefile index 83d42dd..7b4c5ab 100644 --- a/src/kernel/Makefile +++ b/src/kernel/Makefile @@ -55,7 +55,7 @@ $(BUILD_DIR)/kernel/asm/%.obj: %.asm $(HEADERS_ASM) @echo "--> Compiled: " $< arch/i686/gen_isr.c arch/i686/gen_isr.inc: - @$(SOURCE_DIR)/build_tools/generate_isrs.sh $@ + @$(SOURCE_DIR)/build_scripts/genISR.sh $@ @echo "--> Compiled: ISR Gen Files" clean: diff --git a/src/kernel/arch/i686/basicfunc.asm b/src/kernel/arch/i686/basicfunc.asm index 62d4f40..74ad2ef 100644 --- a/src/kernel/arch/i686/basicfunc.asm +++ b/src/kernel/arch/i686/basicfunc.asm @@ -5,12 +5,12 @@ ;/////////////////////; [bits 32] -global i686_reboot -i686_reboot: +global Reboot +Reboot: XOR AL, AL IN AL, 0x64 TEST AL, 0x02 - JNZ i686_reboot + JNZ Reboot MOV AL, 0xFC OUT 0x64, AL diff --git a/src/kernel/arch/i686/basicfunc.h b/src/kernel/arch/i686/basicfunc.h index c517d99..5de607a 100644 --- a/src/kernel/arch/i686/basicfunc.h +++ b/src/kernel/arch/i686/basicfunc.h @@ -5,4 +5,4 @@ \*----------------*/ #pragma once -void __attribute__((cdecl)) i686_reboot(); +void __attribute__((cdecl)) Reboot(); diff --git a/src/kernel/arch/i686/gdt.asm b/src/kernel/arch/i686/gdt.asm index 015acf7..380d9b2 100644 --- a/src/kernel/arch/i686/gdt.asm +++ b/src/kernel/arch/i686/gdt.asm @@ -5,9 +5,9 @@ ;/////////////////////; [bits 32] -; void __attribute__((cdecl)) i686_GDT_Load(GDTDescriptor* descriptor, uint16_t codeSegment, uint16_t dataSegment); -global i686_GDT_Load -i686_GDT_Load: +; void __attribute__((cdecl)) GDT_Load(GDTDescriptor* descriptor, uint16_t codeSegment, uint16_t dataSegment); +global GDT_Load +GDT_Load: ; make new call frame push ebp ; save old call frame mov ebp, esp ; initialize new call frame diff --git a/src/kernel/arch/i686/gdt.c b/src/kernel/arch/i686/gdt.c index de7cb75..cf72c6e 100644 --- a/src/kernel/arch/i686/gdt.c +++ b/src/kernel/arch/i686/gdt.c @@ -85,8 +85,8 @@ GDTEntry g_GDT[] = { GDTDescriptor g_GDTDescriptor = { sizeof(g_GDT) - 1, g_GDT}; -void __attribute__((cdecl)) i686_GDT_Load(GDTDescriptor* descriptor, uint16_t codeSegment, uint16_t dataSegment); +void __attribute__((cdecl)) GDT_Load(GDTDescriptor* descriptor, uint16_t codeSegment, uint16_t dataSegment); -void i686_GDT_Initialize() { - i686_GDT_Load(&g_GDTDescriptor, i686_GDT_CODE_SEGMENT, i686_GDT_DATA_SEGMENT); +void GDT_Initialize() { + GDT_Load(&g_GDTDescriptor, GDT_CODE_SEGMENT, GDT_DATA_SEGMENT); } \ No newline at end of file diff --git a/src/kernel/arch/i686/gdt.h b/src/kernel/arch/i686/gdt.h index 592e621..50366cf 100644 --- a/src/kernel/arch/i686/gdt.h +++ b/src/kernel/arch/i686/gdt.h @@ -5,7 +5,7 @@ \*----------------*/ #pragma once -#define i686_GDT_CODE_SEGMENT 0x8 -#define i686_GDT_DATA_SEGMENT 0x10 +#define GDT_CODE_SEGMENT 0x8 +#define GDT_DATA_SEGMENT 0x10 -void i686_GDT_Initialize(); \ No newline at end of file +void GDT_Initialize(); \ No newline at end of file diff --git a/src/kernel/arch/i686/gen_isr.c b/src/kernel/arch/i686/gen_isr.c index e7d8f0e..dc1a065 100644 --- a/src/kernel/arch/i686/gen_isr.c +++ b/src/kernel/arch/i686/gen_isr.c @@ -2,519 +2,519 @@ #include "idt.h" #include "gdt.h" -void __attribute((cdecl)) i686_ISR0(); -void __attribute((cdecl)) i686_ISR1(); -void __attribute((cdecl)) i686_ISR2(); -void __attribute((cdecl)) i686_ISR3(); -void __attribute((cdecl)) i686_ISR4(); -void __attribute((cdecl)) i686_ISR5(); -void __attribute((cdecl)) i686_ISR6(); -void __attribute((cdecl)) i686_ISR7(); -void __attribute((cdecl)) i686_ISR8(); -void __attribute((cdecl)) i686_ISR9(); -void __attribute((cdecl)) i686_ISR10(); -void __attribute((cdecl)) i686_ISR11(); -void __attribute((cdecl)) i686_ISR12(); -void __attribute((cdecl)) i686_ISR13(); -void __attribute((cdecl)) i686_ISR14(); -void __attribute((cdecl)) i686_ISR15(); -void __attribute((cdecl)) i686_ISR16(); -void __attribute((cdecl)) i686_ISR17(); -void __attribute((cdecl)) i686_ISR18(); -void __attribute((cdecl)) i686_ISR19(); -void __attribute((cdecl)) i686_ISR20(); -void __attribute((cdecl)) i686_ISR21(); -void __attribute((cdecl)) i686_ISR22(); -void __attribute((cdecl)) i686_ISR23(); -void __attribute((cdecl)) i686_ISR24(); -void __attribute((cdecl)) i686_ISR25(); -void __attribute((cdecl)) i686_ISR26(); -void __attribute((cdecl)) i686_ISR27(); -void __attribute((cdecl)) i686_ISR28(); -void __attribute((cdecl)) i686_ISR29(); -void __attribute((cdecl)) i686_ISR30(); -void __attribute((cdecl)) i686_ISR31(); -void __attribute((cdecl)) i686_ISR32(); -void __attribute((cdecl)) i686_ISR33(); -void __attribute((cdecl)) i686_ISR34(); -void __attribute((cdecl)) i686_ISR35(); -void __attribute((cdecl)) i686_ISR36(); -void __attribute((cdecl)) i686_ISR37(); -void __attribute((cdecl)) i686_ISR38(); -void __attribute((cdecl)) i686_ISR39(); -void __attribute((cdecl)) i686_ISR40(); -void __attribute((cdecl)) i686_ISR41(); -void __attribute((cdecl)) i686_ISR42(); -void __attribute((cdecl)) i686_ISR43(); -void __attribute((cdecl)) i686_ISR44(); -void __attribute((cdecl)) i686_ISR45(); -void __attribute((cdecl)) i686_ISR46(); -void __attribute((cdecl)) i686_ISR47(); -void __attribute((cdecl)) i686_ISR48(); -void __attribute((cdecl)) i686_ISR49(); -void __attribute((cdecl)) i686_ISR50(); -void __attribute((cdecl)) i686_ISR51(); -void __attribute((cdecl)) i686_ISR52(); -void __attribute((cdecl)) i686_ISR53(); -void __attribute((cdecl)) i686_ISR54(); -void __attribute((cdecl)) i686_ISR55(); -void __attribute((cdecl)) i686_ISR56(); -void __attribute((cdecl)) i686_ISR57(); -void __attribute((cdecl)) i686_ISR58(); -void __attribute((cdecl)) i686_ISR59(); -void __attribute((cdecl)) i686_ISR60(); -void __attribute((cdecl)) i686_ISR61(); -void __attribute((cdecl)) i686_ISR62(); -void __attribute((cdecl)) i686_ISR63(); -void __attribute((cdecl)) i686_ISR64(); -void __attribute((cdecl)) i686_ISR65(); -void __attribute((cdecl)) i686_ISR66(); -void __attribute((cdecl)) i686_ISR67(); -void __attribute((cdecl)) i686_ISR68(); -void __attribute((cdecl)) i686_ISR69(); -void __attribute((cdecl)) i686_ISR70(); -void __attribute((cdecl)) i686_ISR71(); -void __attribute((cdecl)) i686_ISR72(); -void __attribute((cdecl)) i686_ISR73(); -void __attribute((cdecl)) i686_ISR74(); -void __attribute((cdecl)) i686_ISR75(); -void __attribute((cdecl)) i686_ISR76(); -void __attribute((cdecl)) i686_ISR77(); -void __attribute((cdecl)) i686_ISR78(); -void __attribute((cdecl)) i686_ISR79(); -void __attribute((cdecl)) i686_ISR80(); -void __attribute((cdecl)) i686_ISR81(); -void __attribute((cdecl)) i686_ISR82(); -void __attribute((cdecl)) i686_ISR83(); -void __attribute((cdecl)) i686_ISR84(); -void __attribute((cdecl)) i686_ISR85(); -void __attribute((cdecl)) i686_ISR86(); -void __attribute((cdecl)) i686_ISR87(); -void __attribute((cdecl)) i686_ISR88(); -void __attribute((cdecl)) i686_ISR89(); -void __attribute((cdecl)) i686_ISR90(); -void __attribute((cdecl)) i686_ISR91(); -void __attribute((cdecl)) i686_ISR92(); -void __attribute((cdecl)) i686_ISR93(); -void __attribute((cdecl)) i686_ISR94(); -void __attribute((cdecl)) i686_ISR95(); -void __attribute((cdecl)) i686_ISR96(); -void __attribute((cdecl)) i686_ISR97(); -void __attribute((cdecl)) i686_ISR98(); -void __attribute((cdecl)) i686_ISR99(); -void __attribute((cdecl)) i686_ISR100(); -void __attribute((cdecl)) i686_ISR101(); -void __attribute((cdecl)) i686_ISR102(); -void __attribute((cdecl)) i686_ISR103(); -void __attribute((cdecl)) i686_ISR104(); -void __attribute((cdecl)) i686_ISR105(); -void __attribute((cdecl)) i686_ISR106(); -void __attribute((cdecl)) i686_ISR107(); -void __attribute((cdecl)) i686_ISR108(); -void __attribute((cdecl)) i686_ISR109(); -void __attribute((cdecl)) i686_ISR110(); -void __attribute((cdecl)) i686_ISR111(); -void __attribute((cdecl)) i686_ISR112(); -void __attribute((cdecl)) i686_ISR113(); -void __attribute((cdecl)) i686_ISR114(); -void __attribute((cdecl)) i686_ISR115(); -void __attribute((cdecl)) i686_ISR116(); -void __attribute((cdecl)) i686_ISR117(); -void __attribute((cdecl)) i686_ISR118(); -void __attribute((cdecl)) i686_ISR119(); -void __attribute((cdecl)) i686_ISR120(); -void __attribute((cdecl)) i686_ISR121(); -void __attribute((cdecl)) i686_ISR122(); -void __attribute((cdecl)) i686_ISR123(); -void __attribute((cdecl)) i686_ISR124(); -void __attribute((cdecl)) i686_ISR125(); -void __attribute((cdecl)) i686_ISR126(); -void __attribute((cdecl)) i686_ISR127(); -void __attribute((cdecl)) i686_ISR128(); -void __attribute((cdecl)) i686_ISR129(); -void __attribute((cdecl)) i686_ISR130(); -void __attribute((cdecl)) i686_ISR131(); -void __attribute((cdecl)) i686_ISR132(); -void __attribute((cdecl)) i686_ISR133(); -void __attribute((cdecl)) i686_ISR134(); -void __attribute((cdecl)) i686_ISR135(); -void __attribute((cdecl)) i686_ISR136(); -void __attribute((cdecl)) i686_ISR137(); -void __attribute((cdecl)) i686_ISR138(); -void __attribute((cdecl)) i686_ISR139(); -void __attribute((cdecl)) i686_ISR140(); -void __attribute((cdecl)) i686_ISR141(); -void __attribute((cdecl)) i686_ISR142(); -void __attribute((cdecl)) i686_ISR143(); -void __attribute((cdecl)) i686_ISR144(); -void __attribute((cdecl)) i686_ISR145(); -void __attribute((cdecl)) i686_ISR146(); -void __attribute((cdecl)) i686_ISR147(); -void __attribute((cdecl)) i686_ISR148(); -void __attribute((cdecl)) i686_ISR149(); -void __attribute((cdecl)) i686_ISR150(); -void __attribute((cdecl)) i686_ISR151(); -void __attribute((cdecl)) i686_ISR152(); -void __attribute((cdecl)) i686_ISR153(); -void __attribute((cdecl)) i686_ISR154(); -void __attribute((cdecl)) i686_ISR155(); -void __attribute((cdecl)) i686_ISR156(); -void __attribute((cdecl)) i686_ISR157(); -void __attribute((cdecl)) i686_ISR158(); -void __attribute((cdecl)) i686_ISR159(); -void __attribute((cdecl)) i686_ISR160(); -void __attribute((cdecl)) i686_ISR161(); -void __attribute((cdecl)) i686_ISR162(); -void __attribute((cdecl)) i686_ISR163(); -void __attribute((cdecl)) i686_ISR164(); -void __attribute((cdecl)) i686_ISR165(); -void __attribute((cdecl)) i686_ISR166(); -void __attribute((cdecl)) i686_ISR167(); -void __attribute((cdecl)) i686_ISR168(); -void __attribute((cdecl)) i686_ISR169(); -void __attribute((cdecl)) i686_ISR170(); -void __attribute((cdecl)) i686_ISR171(); -void __attribute((cdecl)) i686_ISR172(); -void __attribute((cdecl)) i686_ISR173(); -void __attribute((cdecl)) i686_ISR174(); -void __attribute((cdecl)) i686_ISR175(); -void __attribute((cdecl)) i686_ISR176(); -void __attribute((cdecl)) i686_ISR177(); -void __attribute((cdecl)) i686_ISR178(); -void __attribute((cdecl)) i686_ISR179(); -void __attribute((cdecl)) i686_ISR180(); -void __attribute((cdecl)) i686_ISR181(); -void __attribute((cdecl)) i686_ISR182(); -void __attribute((cdecl)) i686_ISR183(); -void __attribute((cdecl)) i686_ISR184(); -void __attribute((cdecl)) i686_ISR185(); -void __attribute((cdecl)) i686_ISR186(); -void __attribute((cdecl)) i686_ISR187(); -void __attribute((cdecl)) i686_ISR188(); -void __attribute((cdecl)) i686_ISR189(); -void __attribute((cdecl)) i686_ISR190(); -void __attribute((cdecl)) i686_ISR191(); -void __attribute((cdecl)) i686_ISR192(); -void __attribute((cdecl)) i686_ISR193(); -void __attribute((cdecl)) i686_ISR194(); -void __attribute((cdecl)) i686_ISR195(); -void __attribute((cdecl)) i686_ISR196(); -void __attribute((cdecl)) i686_ISR197(); -void __attribute((cdecl)) i686_ISR198(); -void __attribute((cdecl)) i686_ISR199(); -void __attribute((cdecl)) i686_ISR200(); -void __attribute((cdecl)) i686_ISR201(); -void __attribute((cdecl)) i686_ISR202(); -void __attribute((cdecl)) i686_ISR203(); -void __attribute((cdecl)) i686_ISR204(); -void __attribute((cdecl)) i686_ISR205(); -void __attribute((cdecl)) i686_ISR206(); -void __attribute((cdecl)) i686_ISR207(); -void __attribute((cdecl)) i686_ISR208(); -void __attribute((cdecl)) i686_ISR209(); -void __attribute((cdecl)) i686_ISR210(); -void __attribute((cdecl)) i686_ISR211(); -void __attribute((cdecl)) i686_ISR212(); -void __attribute((cdecl)) i686_ISR213(); -void __attribute((cdecl)) i686_ISR214(); -void __attribute((cdecl)) i686_ISR215(); -void __attribute((cdecl)) i686_ISR216(); -void __attribute((cdecl)) i686_ISR217(); -void __attribute((cdecl)) i686_ISR218(); -void __attribute((cdecl)) i686_ISR219(); -void __attribute((cdecl)) i686_ISR220(); -void __attribute((cdecl)) i686_ISR221(); -void __attribute((cdecl)) i686_ISR222(); -void __attribute((cdecl)) i686_ISR223(); -void __attribute((cdecl)) i686_ISR224(); -void __attribute((cdecl)) i686_ISR225(); -void __attribute((cdecl)) i686_ISR226(); -void __attribute((cdecl)) i686_ISR227(); -void __attribute((cdecl)) i686_ISR228(); -void __attribute((cdecl)) i686_ISR229(); -void __attribute((cdecl)) i686_ISR230(); -void __attribute((cdecl)) i686_ISR231(); -void __attribute((cdecl)) i686_ISR232(); -void __attribute((cdecl)) i686_ISR233(); -void __attribute((cdecl)) i686_ISR234(); -void __attribute((cdecl)) i686_ISR235(); -void __attribute((cdecl)) i686_ISR236(); -void __attribute((cdecl)) i686_ISR237(); -void __attribute((cdecl)) i686_ISR238(); -void __attribute((cdecl)) i686_ISR239(); -void __attribute((cdecl)) i686_ISR240(); -void __attribute((cdecl)) i686_ISR241(); -void __attribute((cdecl)) i686_ISR242(); -void __attribute((cdecl)) i686_ISR243(); -void __attribute((cdecl)) i686_ISR244(); -void __attribute((cdecl)) i686_ISR245(); -void __attribute((cdecl)) i686_ISR246(); -void __attribute((cdecl)) i686_ISR247(); -void __attribute((cdecl)) i686_ISR248(); -void __attribute((cdecl)) i686_ISR249(); -void __attribute((cdecl)) i686_ISR250(); -void __attribute((cdecl)) i686_ISR251(); -void __attribute((cdecl)) i686_ISR252(); -void __attribute((cdecl)) i686_ISR253(); -void __attribute((cdecl)) i686_ISR254(); -void __attribute((cdecl)) i686_ISR255(); +void __attribute((cdecl)) ISR0(); +void __attribute((cdecl)) ISR1(); +void __attribute((cdecl)) ISR2(); +void __attribute((cdecl)) ISR3(); +void __attribute((cdecl)) ISR4(); +void __attribute((cdecl)) ISR5(); +void __attribute((cdecl)) ISR6(); +void __attribute((cdecl)) ISR7(); +void __attribute((cdecl)) ISR8(); +void __attribute((cdecl)) ISR9(); +void __attribute((cdecl)) ISR10(); +void __attribute((cdecl)) ISR11(); +void __attribute((cdecl)) ISR12(); +void __attribute((cdecl)) ISR13(); +void __attribute((cdecl)) ISR14(); +void __attribute((cdecl)) ISR15(); +void __attribute((cdecl)) ISR16(); +void __attribute((cdecl)) ISR17(); +void __attribute((cdecl)) ISR18(); +void __attribute((cdecl)) ISR19(); +void __attribute((cdecl)) ISR20(); +void __attribute((cdecl)) ISR21(); +void __attribute((cdecl)) ISR22(); +void __attribute((cdecl)) ISR23(); +void __attribute((cdecl)) ISR24(); +void __attribute((cdecl)) ISR25(); +void __attribute((cdecl)) ISR26(); +void __attribute((cdecl)) ISR27(); +void __attribute((cdecl)) ISR28(); +void __attribute((cdecl)) ISR29(); +void __attribute((cdecl)) ISR30(); +void __attribute((cdecl)) ISR31(); +void __attribute((cdecl)) ISR32(); +void __attribute((cdecl)) ISR33(); +void __attribute((cdecl)) ISR34(); +void __attribute((cdecl)) ISR35(); +void __attribute((cdecl)) ISR36(); +void __attribute((cdecl)) ISR37(); +void __attribute((cdecl)) ISR38(); +void __attribute((cdecl)) ISR39(); +void __attribute((cdecl)) ISR40(); +void __attribute((cdecl)) ISR41(); +void __attribute((cdecl)) ISR42(); +void __attribute((cdecl)) ISR43(); +void __attribute((cdecl)) ISR44(); +void __attribute((cdecl)) ISR45(); +void __attribute((cdecl)) ISR46(); +void __attribute((cdecl)) ISR47(); +void __attribute((cdecl)) ISR48(); +void __attribute((cdecl)) ISR49(); +void __attribute((cdecl)) ISR50(); +void __attribute((cdecl)) ISR51(); +void __attribute((cdecl)) ISR52(); +void __attribute((cdecl)) ISR53(); +void __attribute((cdecl)) ISR54(); +void __attribute((cdecl)) ISR55(); +void __attribute((cdecl)) ISR56(); +void __attribute((cdecl)) ISR57(); +void __attribute((cdecl)) ISR58(); +void __attribute((cdecl)) ISR59(); +void __attribute((cdecl)) ISR60(); +void __attribute((cdecl)) ISR61(); +void __attribute((cdecl)) ISR62(); +void __attribute((cdecl)) ISR63(); +void __attribute((cdecl)) ISR64(); +void __attribute((cdecl)) ISR65(); +void __attribute((cdecl)) ISR66(); +void __attribute((cdecl)) ISR67(); +void __attribute((cdecl)) ISR68(); +void __attribute((cdecl)) ISR69(); +void __attribute((cdecl)) ISR70(); +void __attribute((cdecl)) ISR71(); +void __attribute((cdecl)) ISR72(); +void __attribute((cdecl)) ISR73(); +void __attribute((cdecl)) ISR74(); +void __attribute((cdecl)) ISR75(); +void __attribute((cdecl)) ISR76(); +void __attribute((cdecl)) ISR77(); +void __attribute((cdecl)) ISR78(); +void __attribute((cdecl)) ISR79(); +void __attribute((cdecl)) ISR80(); +void __attribute((cdecl)) ISR81(); +void __attribute((cdecl)) ISR82(); +void __attribute((cdecl)) ISR83(); +void __attribute((cdecl)) ISR84(); +void __attribute((cdecl)) ISR85(); +void __attribute((cdecl)) ISR86(); +void __attribute((cdecl)) ISR87(); +void __attribute((cdecl)) ISR88(); +void __attribute((cdecl)) ISR89(); +void __attribute((cdecl)) ISR90(); +void __attribute((cdecl)) ISR91(); +void __attribute((cdecl)) ISR92(); +void __attribute((cdecl)) ISR93(); +void __attribute((cdecl)) ISR94(); +void __attribute((cdecl)) ISR95(); +void __attribute((cdecl)) ISR96(); +void __attribute((cdecl)) ISR97(); +void __attribute((cdecl)) ISR98(); +void __attribute((cdecl)) ISR99(); +void __attribute((cdecl)) ISR100(); +void __attribute((cdecl)) ISR101(); +void __attribute((cdecl)) ISR102(); +void __attribute((cdecl)) ISR103(); +void __attribute((cdecl)) ISR104(); +void __attribute((cdecl)) ISR105(); +void __attribute((cdecl)) ISR106(); +void __attribute((cdecl)) ISR107(); +void __attribute((cdecl)) ISR108(); +void __attribute((cdecl)) ISR109(); +void __attribute((cdecl)) ISR110(); +void __attribute((cdecl)) ISR111(); +void __attribute((cdecl)) ISR112(); +void __attribute((cdecl)) ISR113(); +void __attribute((cdecl)) ISR114(); +void __attribute((cdecl)) ISR115(); +void __attribute((cdecl)) ISR116(); +void __attribute((cdecl)) ISR117(); +void __attribute((cdecl)) ISR118(); +void __attribute((cdecl)) ISR119(); +void __attribute((cdecl)) ISR120(); +void __attribute((cdecl)) ISR121(); +void __attribute((cdecl)) ISR122(); +void __attribute((cdecl)) ISR123(); +void __attribute((cdecl)) ISR124(); +void __attribute((cdecl)) ISR125(); +void __attribute((cdecl)) ISR126(); +void __attribute((cdecl)) ISR127(); +void __attribute((cdecl)) ISR128(); +void __attribute((cdecl)) ISR129(); +void __attribute((cdecl)) ISR130(); +void __attribute((cdecl)) ISR131(); +void __attribute((cdecl)) ISR132(); +void __attribute((cdecl)) ISR133(); +void __attribute((cdecl)) ISR134(); +void __attribute((cdecl)) ISR135(); +void __attribute((cdecl)) ISR136(); +void __attribute((cdecl)) ISR137(); +void __attribute((cdecl)) ISR138(); +void __attribute((cdecl)) ISR139(); +void __attribute((cdecl)) ISR140(); +void __attribute((cdecl)) ISR141(); +void __attribute((cdecl)) ISR142(); +void __attribute((cdecl)) ISR143(); +void __attribute((cdecl)) ISR144(); +void __attribute((cdecl)) ISR145(); +void __attribute((cdecl)) ISR146(); +void __attribute((cdecl)) ISR147(); +void __attribute((cdecl)) ISR148(); +void __attribute((cdecl)) ISR149(); +void __attribute((cdecl)) ISR150(); +void __attribute((cdecl)) ISR151(); +void __attribute((cdecl)) ISR152(); +void __attribute((cdecl)) ISR153(); +void __attribute((cdecl)) ISR154(); +void __attribute((cdecl)) ISR155(); +void __attribute((cdecl)) ISR156(); +void __attribute((cdecl)) ISR157(); +void __attribute((cdecl)) ISR158(); +void __attribute((cdecl)) ISR159(); +void __attribute((cdecl)) ISR160(); +void __attribute((cdecl)) ISR161(); +void __attribute((cdecl)) ISR162(); +void __attribute((cdecl)) ISR163(); +void __attribute((cdecl)) ISR164(); +void __attribute((cdecl)) ISR165(); +void __attribute((cdecl)) ISR166(); +void __attribute((cdecl)) ISR167(); +void __attribute((cdecl)) ISR168(); +void __attribute((cdecl)) ISR169(); +void __attribute((cdecl)) ISR170(); +void __attribute((cdecl)) ISR171(); +void __attribute((cdecl)) ISR172(); +void __attribute((cdecl)) ISR173(); +void __attribute((cdecl)) ISR174(); +void __attribute((cdecl)) ISR175(); +void __attribute((cdecl)) ISR176(); +void __attribute((cdecl)) ISR177(); +void __attribute((cdecl)) ISR178(); +void __attribute((cdecl)) ISR179(); +void __attribute((cdecl)) ISR180(); +void __attribute((cdecl)) ISR181(); +void __attribute((cdecl)) ISR182(); +void __attribute((cdecl)) ISR183(); +void __attribute((cdecl)) ISR184(); +void __attribute((cdecl)) ISR185(); +void __attribute((cdecl)) ISR186(); +void __attribute((cdecl)) ISR187(); +void __attribute((cdecl)) ISR188(); +void __attribute((cdecl)) ISR189(); +void __attribute((cdecl)) ISR190(); +void __attribute((cdecl)) ISR191(); +void __attribute((cdecl)) ISR192(); +void __attribute((cdecl)) ISR193(); +void __attribute((cdecl)) ISR194(); +void __attribute((cdecl)) ISR195(); +void __attribute((cdecl)) ISR196(); +void __attribute((cdecl)) ISR197(); +void __attribute((cdecl)) ISR198(); +void __attribute((cdecl)) ISR199(); +void __attribute((cdecl)) ISR200(); +void __attribute((cdecl)) ISR201(); +void __attribute((cdecl)) ISR202(); +void __attribute((cdecl)) ISR203(); +void __attribute((cdecl)) ISR204(); +void __attribute((cdecl)) ISR205(); +void __attribute((cdecl)) ISR206(); +void __attribute((cdecl)) ISR207(); +void __attribute((cdecl)) ISR208(); +void __attribute((cdecl)) ISR209(); +void __attribute((cdecl)) ISR210(); +void __attribute((cdecl)) ISR211(); +void __attribute((cdecl)) ISR212(); +void __attribute((cdecl)) ISR213(); +void __attribute((cdecl)) ISR214(); +void __attribute((cdecl)) ISR215(); +void __attribute((cdecl)) ISR216(); +void __attribute((cdecl)) ISR217(); +void __attribute((cdecl)) ISR218(); +void __attribute((cdecl)) ISR219(); +void __attribute((cdecl)) ISR220(); +void __attribute((cdecl)) ISR221(); +void __attribute((cdecl)) ISR222(); +void __attribute((cdecl)) ISR223(); +void __attribute((cdecl)) ISR224(); +void __attribute((cdecl)) ISR225(); +void __attribute((cdecl)) ISR226(); +void __attribute((cdecl)) ISR227(); +void __attribute((cdecl)) ISR228(); +void __attribute((cdecl)) ISR229(); +void __attribute((cdecl)) ISR230(); +void __attribute((cdecl)) ISR231(); +void __attribute((cdecl)) ISR232(); +void __attribute((cdecl)) ISR233(); +void __attribute((cdecl)) ISR234(); +void __attribute((cdecl)) ISR235(); +void __attribute((cdecl)) ISR236(); +void __attribute((cdecl)) ISR237(); +void __attribute((cdecl)) ISR238(); +void __attribute((cdecl)) ISR239(); +void __attribute((cdecl)) ISR240(); +void __attribute((cdecl)) ISR241(); +void __attribute((cdecl)) ISR242(); +void __attribute((cdecl)) ISR243(); +void __attribute((cdecl)) ISR244(); +void __attribute((cdecl)) ISR245(); +void __attribute((cdecl)) ISR246(); +void __attribute((cdecl)) ISR247(); +void __attribute((cdecl)) ISR248(); +void __attribute((cdecl)) ISR249(); +void __attribute((cdecl)) ISR250(); +void __attribute((cdecl)) ISR251(); +void __attribute((cdecl)) ISR252(); +void __attribute((cdecl)) ISR253(); +void __attribute((cdecl)) ISR254(); +void __attribute((cdecl)) ISR255(); -void i686_ISR_InitializeGates() +void ISR_InitializeGates() { - i686_IDT_SetGate(0, i686_ISR0, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(1, i686_ISR1, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(2, i686_ISR2, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(3, i686_ISR3, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(4, i686_ISR4, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(5, i686_ISR5, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(6, i686_ISR6, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(7, i686_ISR7, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(8, i686_ISR8, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(9, i686_ISR9, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(10, i686_ISR10, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(11, i686_ISR11, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(12, i686_ISR12, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(13, i686_ISR13, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(14, i686_ISR14, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(15, i686_ISR15, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(16, i686_ISR16, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(17, i686_ISR17, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(18, i686_ISR18, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(19, i686_ISR19, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(20, i686_ISR20, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(21, i686_ISR21, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(22, i686_ISR22, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(23, i686_ISR23, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(24, i686_ISR24, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(25, i686_ISR25, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(26, i686_ISR26, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(27, i686_ISR27, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(28, i686_ISR28, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(29, i686_ISR29, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(30, i686_ISR30, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(31, i686_ISR31, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(32, i686_ISR32, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(33, i686_ISR33, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(34, i686_ISR34, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(35, i686_ISR35, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(36, i686_ISR36, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(37, i686_ISR37, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(38, i686_ISR38, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(39, i686_ISR39, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(40, i686_ISR40, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(41, i686_ISR41, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(42, i686_ISR42, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(43, i686_ISR43, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(44, i686_ISR44, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(45, i686_ISR45, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(46, i686_ISR46, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(47, i686_ISR47, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(48, i686_ISR48, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(49, i686_ISR49, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(50, i686_ISR50, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(51, i686_ISR51, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(52, i686_ISR52, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(53, i686_ISR53, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(54, i686_ISR54, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(55, i686_ISR55, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(56, i686_ISR56, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(57, i686_ISR57, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(58, i686_ISR58, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(59, i686_ISR59, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(60, i686_ISR60, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(61, i686_ISR61, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(62, i686_ISR62, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(63, i686_ISR63, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(64, i686_ISR64, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(65, i686_ISR65, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(66, i686_ISR66, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(67, i686_ISR67, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(68, i686_ISR68, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(69, i686_ISR69, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(70, i686_ISR70, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(71, i686_ISR71, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(72, i686_ISR72, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(73, i686_ISR73, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(74, i686_ISR74, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(75, i686_ISR75, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(76, i686_ISR76, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(77, i686_ISR77, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(78, i686_ISR78, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(79, i686_ISR79, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(80, i686_ISR80, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(81, i686_ISR81, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(82, i686_ISR82, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(83, i686_ISR83, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(84, i686_ISR84, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(85, i686_ISR85, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(86, i686_ISR86, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(87, i686_ISR87, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(88, i686_ISR88, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(89, i686_ISR89, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(90, i686_ISR90, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(91, i686_ISR91, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(92, i686_ISR92, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(93, i686_ISR93, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(94, i686_ISR94, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(95, i686_ISR95, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(96, i686_ISR96, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(97, i686_ISR97, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(98, i686_ISR98, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(99, i686_ISR99, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(100, i686_ISR100, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(101, i686_ISR101, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(102, i686_ISR102, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(103, i686_ISR103, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(104, i686_ISR104, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(105, i686_ISR105, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(106, i686_ISR106, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(107, i686_ISR107, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(108, i686_ISR108, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(109, i686_ISR109, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(110, i686_ISR110, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(111, i686_ISR111, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(112, i686_ISR112, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(113, i686_ISR113, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(114, i686_ISR114, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(115, i686_ISR115, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(116, i686_ISR116, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(117, i686_ISR117, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(118, i686_ISR118, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(119, i686_ISR119, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(120, i686_ISR120, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(121, i686_ISR121, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(122, i686_ISR122, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(123, i686_ISR123, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(124, i686_ISR124, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(125, i686_ISR125, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(126, i686_ISR126, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(127, i686_ISR127, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(128, i686_ISR128, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(129, i686_ISR129, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(130, i686_ISR130, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(131, i686_ISR131, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(132, i686_ISR132, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(133, i686_ISR133, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(134, i686_ISR134, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(135, i686_ISR135, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(136, i686_ISR136, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(137, i686_ISR137, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(138, i686_ISR138, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(139, i686_ISR139, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(140, i686_ISR140, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(141, i686_ISR141, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(142, i686_ISR142, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(143, i686_ISR143, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(144, i686_ISR144, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(145, i686_ISR145, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(146, i686_ISR146, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(147, i686_ISR147, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(148, i686_ISR148, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(149, i686_ISR149, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(150, i686_ISR150, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(151, i686_ISR151, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(152, i686_ISR152, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(153, i686_ISR153, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(154, i686_ISR154, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(155, i686_ISR155, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(156, i686_ISR156, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(157, i686_ISR157, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(158, i686_ISR158, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(159, i686_ISR159, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(160, i686_ISR160, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(161, i686_ISR161, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(162, i686_ISR162, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(163, i686_ISR163, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(164, i686_ISR164, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(165, i686_ISR165, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(166, i686_ISR166, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(167, i686_ISR167, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(168, i686_ISR168, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(169, i686_ISR169, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(170, i686_ISR170, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(171, i686_ISR171, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(172, i686_ISR172, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(173, i686_ISR173, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(174, i686_ISR174, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(175, i686_ISR175, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(176, i686_ISR176, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(177, i686_ISR177, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(178, i686_ISR178, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(179, i686_ISR179, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(180, i686_ISR180, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(181, i686_ISR181, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(182, i686_ISR182, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(183, i686_ISR183, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(184, i686_ISR184, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(185, i686_ISR185, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(186, i686_ISR186, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(187, i686_ISR187, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(188, i686_ISR188, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(189, i686_ISR189, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(190, i686_ISR190, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(191, i686_ISR191, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(192, i686_ISR192, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(193, i686_ISR193, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(194, i686_ISR194, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(195, i686_ISR195, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(196, i686_ISR196, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(197, i686_ISR197, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(198, i686_ISR198, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(199, i686_ISR199, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(200, i686_ISR200, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(201, i686_ISR201, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(202, i686_ISR202, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(203, i686_ISR203, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(204, i686_ISR204, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(205, i686_ISR205, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(206, i686_ISR206, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(207, i686_ISR207, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(208, i686_ISR208, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(209, i686_ISR209, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(210, i686_ISR210, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(211, i686_ISR211, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(212, i686_ISR212, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(213, i686_ISR213, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(214, i686_ISR214, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(215, i686_ISR215, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(216, i686_ISR216, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(217, i686_ISR217, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(218, i686_ISR218, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(219, i686_ISR219, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(220, i686_ISR220, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(221, i686_ISR221, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(222, i686_ISR222, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(223, i686_ISR223, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(224, i686_ISR224, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(225, i686_ISR225, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(226, i686_ISR226, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(227, i686_ISR227, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(228, i686_ISR228, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(229, i686_ISR229, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(230, i686_ISR230, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(231, i686_ISR231, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(232, i686_ISR232, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(233, i686_ISR233, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(234, i686_ISR234, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(235, i686_ISR235, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(236, i686_ISR236, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(237, i686_ISR237, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(238, i686_ISR238, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(239, i686_ISR239, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(240, i686_ISR240, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(241, i686_ISR241, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(242, i686_ISR242, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(243, i686_ISR243, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(244, i686_ISR244, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(245, i686_ISR245, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(246, i686_ISR246, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(247, i686_ISR247, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(248, i686_ISR248, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(249, i686_ISR249, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(250, i686_ISR250, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(251, i686_ISR251, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(252, i686_ISR252, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(253, i686_ISR253, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(254, i686_ISR254, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); - i686_IDT_SetGate(255, i686_ISR255, i686_GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(0, ISR0, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(1, ISR1, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(2, ISR2, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(3, ISR3, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(4, ISR4, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(5, ISR5, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(6, ISR6, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(7, ISR7, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(8, ISR8, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(9, ISR9, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(10, ISR10, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(11, ISR11, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(12, ISR12, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(13, ISR13, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(14, ISR14, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(15, ISR15, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(16, ISR16, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(17, ISR17, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(18, ISR18, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(19, ISR19, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(20, ISR20, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(21, ISR21, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(22, ISR22, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(23, ISR23, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(24, ISR24, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(25, ISR25, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(26, ISR26, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(27, ISR27, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(28, ISR28, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(29, ISR29, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(30, ISR30, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(31, ISR31, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(32, ISR32, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(33, ISR33, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(34, ISR34, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(35, ISR35, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(36, ISR36, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(37, ISR37, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(38, ISR38, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(39, ISR39, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(40, ISR40, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(41, ISR41, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(42, ISR42, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(43, ISR43, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(44, ISR44, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(45, ISR45, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(46, ISR46, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(47, ISR47, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(48, ISR48, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(49, ISR49, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(50, ISR50, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(51, ISR51, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(52, ISR52, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(53, ISR53, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(54, ISR54, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(55, ISR55, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(56, ISR56, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(57, ISR57, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(58, ISR58, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(59, ISR59, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(60, ISR60, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(61, ISR61, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(62, ISR62, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(63, ISR63, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(64, ISR64, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(65, ISR65, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(66, ISR66, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(67, ISR67, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(68, ISR68, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(69, ISR69, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(70, ISR70, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(71, ISR71, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(72, ISR72, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(73, ISR73, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(74, ISR74, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(75, ISR75, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(76, ISR76, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(77, ISR77, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(78, ISR78, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(79, ISR79, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(80, ISR80, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(81, ISR81, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(82, ISR82, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(83, ISR83, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(84, ISR84, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(85, ISR85, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(86, ISR86, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(87, ISR87, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(88, ISR88, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(89, ISR89, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(90, ISR90, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(91, ISR91, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(92, ISR92, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(93, ISR93, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(94, ISR94, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(95, ISR95, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(96, ISR96, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(97, ISR97, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(98, ISR98, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(99, ISR99, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(100, ISR100, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(101, ISR101, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(102, ISR102, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(103, ISR103, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(104, ISR104, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(105, ISR105, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(106, ISR106, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(107, ISR107, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(108, ISR108, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(109, ISR109, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(110, ISR110, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(111, ISR111, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(112, ISR112, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(113, ISR113, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(114, ISR114, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(115, ISR115, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(116, ISR116, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(117, ISR117, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(118, ISR118, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(119, ISR119, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(120, ISR120, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(121, ISR121, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(122, ISR122, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(123, ISR123, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(124, ISR124, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(125, ISR125, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(126, ISR126, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(127, ISR127, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(128, ISR128, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(129, ISR129, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(130, ISR130, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(131, ISR131, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(132, ISR132, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(133, ISR133, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(134, ISR134, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(135, ISR135, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(136, ISR136, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(137, ISR137, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(138, ISR138, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(139, ISR139, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(140, ISR140, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(141, ISR141, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(142, ISR142, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(143, ISR143, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(144, ISR144, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(145, ISR145, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(146, ISR146, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(147, ISR147, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(148, ISR148, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(149, ISR149, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(150, ISR150, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(151, ISR151, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(152, ISR152, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(153, ISR153, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(154, ISR154, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(155, ISR155, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(156, ISR156, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(157, ISR157, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(158, ISR158, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(159, ISR159, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(160, ISR160, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(161, ISR161, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(162, ISR162, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(163, ISR163, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(164, ISR164, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(165, ISR165, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(166, ISR166, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(167, ISR167, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(168, ISR168, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(169, ISR169, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(170, ISR170, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(171, ISR171, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(172, ISR172, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(173, ISR173, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(174, ISR174, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(175, ISR175, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(176, ISR176, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(177, ISR177, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(178, ISR178, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(179, ISR179, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(180, ISR180, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(181, ISR181, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(182, ISR182, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(183, ISR183, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(184, ISR184, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(185, ISR185, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(186, ISR186, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(187, ISR187, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(188, ISR188, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(189, ISR189, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(190, ISR190, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(191, ISR191, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(192, ISR192, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(193, ISR193, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(194, ISR194, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(195, ISR195, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(196, ISR196, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(197, ISR197, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(198, ISR198, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(199, ISR199, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(200, ISR200, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(201, ISR201, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(202, ISR202, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(203, ISR203, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(204, ISR204, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(205, ISR205, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(206, ISR206, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(207, ISR207, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(208, ISR208, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(209, ISR209, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(210, ISR210, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(211, ISR211, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(212, ISR212, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(213, ISR213, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(214, ISR214, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(215, ISR215, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(216, ISR216, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(217, ISR217, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(218, ISR218, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(219, ISR219, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(220, ISR220, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(221, ISR221, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(222, ISR222, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(223, ISR223, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(224, ISR224, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(225, ISR225, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(226, ISR226, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(227, ISR227, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(228, ISR228, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(229, ISR229, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(230, ISR230, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(231, ISR231, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(232, ISR232, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(233, ISR233, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(234, ISR234, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(235, ISR235, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(236, ISR236, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(237, ISR237, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(238, ISR238, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(239, ISR239, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(240, ISR240, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(241, ISR241, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(242, ISR242, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(243, ISR243, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(244, ISR244, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(245, ISR245, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(246, ISR246, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(247, ISR247, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(248, ISR248, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(249, ISR249, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(250, ISR250, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(251, ISR251, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(252, ISR252, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(253, ISR253, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(254, ISR254, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); + IDT_SetGate(255, ISR255, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); } diff --git a/src/kernel/arch/i686/idt.asm b/src/kernel/arch/i686/idt.asm index 3e1dbdb..73ba493 100644 --- a/src/kernel/arch/i686/idt.asm +++ b/src/kernel/arch/i686/idt.asm @@ -5,9 +5,9 @@ ;/////////////////////; [bits 32] -; void __attribute__((cdecl)) i686_IDT_Load(IDTDescriptor* idtDescriptor); -global i686_IDT_Load -i686_IDT_Load: +; void __attribute__((cdecl)) IDT_Load(IDTDescriptor* idtDescriptor); +global IDT_Load +IDT_Load: ; make new call frame push ebp ; save old call frame diff --git a/src/kernel/arch/i686/idt.c b/src/kernel/arch/i686/idt.c index 15acb65..985ad00 100644 --- a/src/kernel/arch/i686/idt.c +++ b/src/kernel/arch/i686/idt.c @@ -26,9 +26,9 @@ IDTEntry g_IDT[256]; IDTDescriptor g_IDTDescriptor = {sizeof(g_IDT) -1, g_IDT}; -void __attribute__((cdecl)) i686_IDT_Load(IDTDescriptor* idtDescriptor); +void __attribute__((cdecl)) IDT_Load(IDTDescriptor* idtDescriptor); -void i686_IDT_SetGate(int interupt, void* base, uint16_t segmentDescriptor, uint8_t flags) { +void IDT_SetGate(int interupt, void* base, uint16_t segmentDescriptor, uint8_t flags) { g_IDT[interupt].BaseLow = ((uint32_t)base) & 0xFFFF; g_IDT[interupt].SegmentSelector = segmentDescriptor; g_IDT[interupt].Reserved = 0; @@ -36,15 +36,15 @@ void i686_IDT_SetGate(int interupt, void* base, uint16_t segmentDescriptor, uint g_IDT[interupt].BaseHigh = ((uint32_t)base >> 16) & 0xFFFF; } -void i686_IDT_EnableGate(int interupt) { +void IDT_EnableGate(int interupt) { FLAG_SET(g_IDT[interupt].Flags, IDT_FLAG_PRESENT); } -void i686_IDT_DisableGate(int interupt) { +void IDT_DisableGate(int interupt) { FLAG_UNSET(g_IDT[interupt].Flags, IDT_FLAG_PRESENT); } -void i686_IDT_Initialize() { - i686_IDT_Load(&g_IDTDescriptor); +void IDT_Initialize() { + IDT_Load(&g_IDTDescriptor); } diff --git a/src/kernel/arch/i686/idt.h b/src/kernel/arch/i686/idt.h index 29ad673..66c2b91 100644 --- a/src/kernel/arch/i686/idt.h +++ b/src/kernel/arch/i686/idt.h @@ -7,10 +7,10 @@ #include -void i686_IDT_Initialize(); -void i686_IDT_DisableGate(int interupt); -void i686_IDT_EnableGate(int interupt); -void i686_IDT_SetGate(int interupt, void* base, uint16_t segmentDescriptor, uint8_t flags); +void IDT_Initialize(); +void IDT_DisableGate(int interupt); +void IDT_EnableGate(int interupt); +void IDT_SetGate(int interupt, void* base, uint16_t segmentDescriptor, uint8_t flags); typedef enum { IDT_FLAG_GATE_TASK = 0x5, diff --git a/src/kernel/arch/i686/io.asm b/src/kernel/arch/i686/io.asm index 27f6bfc..002ebbe 100644 --- a/src/kernel/arch/i686/io.asm +++ b/src/kernel/arch/i686/io.asm @@ -4,33 +4,33 @@ ;Tyler McGurrin ; ;/////////////////////; -global i686_outb -i686_outb: +global outb +outb: [bits 32] mov dx, [esp + 4] mov al, [esp + 8] out dx, al ret -global i686_inb -i686_inb: +global inb +inb: [bits 32] mov dx, [esp + 4] xor eax, eax in al, dx ret -global i686_panic -i686_panic: +global kernel_panic +kernel_panic: cli hlt -global i686_EnableInterrupts -i686_EnableInterrupts: +global EnableInterrupts +EnableInterrupts: sti ret -global i686_DisableInterrupts -i686_DisableInterrupts: +global DisableInterrupts +DisableInterrupts: cli ret diff --git a/src/kernel/arch/i686/io.c b/src/kernel/arch/i686/io.c index e76d949..47f89e2 100644 --- a/src/kernel/arch/i686/io.c +++ b/src/kernel/arch/i686/io.c @@ -7,7 +7,7 @@ #define UNUSED_PORT 0x80 -void i686_iowait() +void iowait() { - i686_outb(UNUSED_PORT, 0); + outb(UNUSED_PORT, 0); } \ No newline at end of file diff --git a/src/kernel/arch/i686/io.h b/src/kernel/arch/i686/io.h index db5cb49..0b5a9bb 100644 --- a/src/kernel/arch/i686/io.h +++ b/src/kernel/arch/i686/io.h @@ -7,10 +7,10 @@ #include #include -void __attribute__((cdecl)) i686_outb(uint16_t port, uint8_t value); -uint8_t __attribute__((cdecl)) i686_inb(uint16_t port); -uint8_t __attribute__((cdecl)) i686_EnableInterrupts(); -uint8_t __attribute__((cdecl)) i686_DisableInterrupts(); +void __attribute__((cdecl)) outb(uint16_t port, uint8_t value); +uint8_t __attribute__((cdecl)) inb(uint16_t port); +uint8_t __attribute__((cdecl)) EnableInterrupts(); +uint8_t __attribute__((cdecl)) DisableInterrupts(); -void i686_iowait(); -void __attribute__((cdecl)) i686_panic(); +void iowait(); +void __attribute__((cdecl)) kernel_panic(); diff --git a/src/kernel/arch/i686/irq.c b/src/kernel/arch/i686/irq.c index 41a7cea..30246a4 100644 --- a/src/kernel/arch/i686/irq.c +++ b/src/kernel/arch/i686/irq.c @@ -13,7 +13,7 @@ IRQHandler g_IRQHandlers[16]; -void i686_IRQ_Handler(Registers* regs) +void IRQ_Handler(Registers* regs) { int irq = regs->interrupt - PIC_REMAP_OFFSET; @@ -27,22 +27,22 @@ void i686_IRQ_Handler(Registers* regs) printf("Unhandled IRQ %d...\n", irq); } - i686_PIC_SendEndOfInterrupt(irq); + PIC_SendEndOfInterrupt(irq); } -void i686_IRQ_Initialize() +void IRQ_Initialize() { - i686_PIC_Configure(PIC_REMAP_OFFSET, PIC_REMAP_OFFSET + 8); + PIC_Configure(PIC_REMAP_OFFSET, PIC_REMAP_OFFSET + 8); // register ISR handlers for each of the 16 IRQ lines for (int i = 0; i < 16; i++) - i686_ISR_RegisterHandler(PIC_REMAP_OFFSET + i, i686_IRQ_Handler); + ISR_RegisterHandler(PIC_REMAP_OFFSET + i, IRQ_Handler); // enable interrupts - i686_EnableInterrupts(); + EnableInterrupts(); } -void i686_IRQ_RegisterHandler(int irq, IRQHandler handler) +void IRQ_RegisterHandler(int irq, IRQHandler handler) { g_IRQHandlers[irq] = handler; } \ No newline at end of file diff --git a/src/kernel/arch/i686/irq.h b/src/kernel/arch/i686/irq.h index ac473da..0adf465 100644 --- a/src/kernel/arch/i686/irq.h +++ b/src/kernel/arch/i686/irq.h @@ -8,5 +8,5 @@ typedef void (*IRQHandler)(Registers* regs); -void i686_IRQ_Initialize(); -void i686_IRQ_RegisterHandler(int irq, IRQHandler handler); \ No newline at end of file +void IRQ_Initialize(); +void IRQ_RegisterHandler(int irq, IRQHandler handler); \ No newline at end of file diff --git a/src/kernel/arch/i686/isr.asm b/src/kernel/arch/i686/isr.asm index 3fd1da6..9d6585c 100644 --- a/src/kernel/arch/i686/isr.asm +++ b/src/kernel/arch/i686/isr.asm @@ -5,14 +5,14 @@ ;/////////////////////; [bits 32] -extern i686_ISR_Handler +extern ISR_Handler ; cpu pushes to the stack: ss, esp, eflags, cs, eip %macro ISR_NOERRORCODE 1 -global i686_ISR%1: -i686_ISR%1: +global ISR%1: +ISR%1: push 0 ; push dummy error code push %1 ; push interrupt number jmp isr_common @@ -20,8 +20,8 @@ i686_ISR%1: %endmacro %macro ISR_ERRORCODE 1 -global i686_ISR%1: -i686_ISR%1: +global ISR%1: +ISR%1: ; cpu pushes an error code to the stack push %1 ; push interrupt number jmp isr_common @@ -44,7 +44,7 @@ isr_common: mov gs, ax push esp ; pass pointer to stack to C, so we can access all the pushed information - call i686_ISR_Handler + call ISR_Handler add esp, 4 pop eax ; restore old segment diff --git a/src/kernel/arch/i686/isr.c b/src/kernel/arch/i686/isr.c index dfd6f88..ab7064f 100644 --- a/src/kernel/arch/i686/isr.c +++ b/src/kernel/arch/i686/isr.c @@ -47,17 +47,17 @@ static const char* const g_Exceptions[] = { "" }; -void i686_ISR_InitializeGates(); +void ISR_InitializeGates(); -void i686_ISR_Initialize() { - i686_ISR_InitializeGates(); +void ISR_Initialize() { + ISR_InitializeGates(); for (int i = 0; i < 256; i++) - i686_IDT_EnableGate(i); + IDT_EnableGate(i); - // i686_IDT_DisableGate(50); + // IDT_DisableGate(50); } -void __attribute__((cdecl)) i686_ISR_Handler(Registers* regs) { +void __attribute__((cdecl)) ISR_Handler(Registers* regs) { if (g_ISRHandlers[regs->interrupt] != NULL) g_ISRHandlers[regs->interrupt](regs); @@ -69,12 +69,12 @@ void __attribute__((cdecl)) i686_ISR_Handler(Registers* regs) { printf(" ESP=%x EBP=%x EIP=%x EFLAGS=%x CS=%x DS=%x SS=%x\n", regs->esp, regs->ebp, regs->eip, regs->eflags, regs->cs, regs->ds, regs->ss); printf(" INTERRUPT=%x ERRORCODE=%x\n", regs->interrupt, regs->error); printf("KERNEL PANIC!\n"); - i686_panic(); + kernel_panic(); } } -void i686_ISR_RegisterHandler(int interrupt, ISRHandler handler) +void ISR_RegisterHandler(int interrupt, ISRHandler handler) { g_ISRHandlers[interrupt] = handler; - i686_IDT_EnableGate(interrupt); + IDT_EnableGate(interrupt); } \ No newline at end of file diff --git a/src/kernel/arch/i686/isr.h b/src/kernel/arch/i686/isr.h index 9c52b63..7474d67 100644 --- a/src/kernel/arch/i686/isr.h +++ b/src/kernel/arch/i686/isr.h @@ -18,5 +18,5 @@ typedef struct typedef void (*ISRHandler)(Registers* regs); -void i686_ISR_Initialize(); -void i686_ISR_RegisterHandler(int interrupt, ISRHandler handler); \ No newline at end of file +void ISR_Initialize(); +void ISR_RegisterHandler(int interrupt, ISRHandler handler); \ No newline at end of file diff --git a/src/kernel/arch/i686/pic.c b/src/kernel/arch/i686/pic.c index d6f16b6..26f1156 100644 --- a/src/kernel/arch/i686/pic.c +++ b/src/kernel/arch/i686/pic.c @@ -34,40 +34,40 @@ enum { PIC_CMD_READ_ISR = 0x0B } PIC_CMD; -void i686_PIC_Configure(uint8_t offsetPic1, uint8_t offsetPic2) +void PIC_Configure(uint8_t offsetPic1, uint8_t offsetPic2) { // init control word 1 - i686_outb(PIC1_COMMAND_PORT, PIC_ICW1_ICW4 | PIC_ICW1_INITITALIZE); - i686_iowait(); - i686_outb(PIC2_COMMAND_PORT, PIC_ICW1_ICW4 | PIC_ICW1_INITITALIZE); - i686_iowait(); + outb(PIC1_COMMAND_PORT, PIC_ICW1_ICW4 | PIC_ICW1_INITITALIZE); + iowait(); + outb(PIC2_COMMAND_PORT, PIC_ICW1_ICW4 | PIC_ICW1_INITITALIZE); + iowait(); // init control word 2 - i686_outb(PIC1_DATA_PORT, offsetPic1); - i686_iowait(); - i686_outb(PIC2_DATA_PORT, offsetPic2); - i686_iowait(); + outb(PIC1_DATA_PORT, offsetPic1); + iowait(); + outb(PIC2_DATA_PORT, offsetPic2); + iowait(); // init control word 3 - i686_outb(PIC1_DATA_PORT, PIC_ICW4_BUFFER_MASTER); // tell PIC 1 it has slave at IRQ 2 - i686_iowait(); - i686_outb(PIC2_DATA_PORT, PIC_ICW4_BUFFER_SLAVE); // tell PIC 2 its cascade ID - i686_iowait(); + outb(PIC1_DATA_PORT, PIC_ICW4_BUFFER_MASTER); // tell PIC 1 it has slave at IRQ 2 + iowait(); + outb(PIC2_DATA_PORT, PIC_ICW4_BUFFER_SLAVE); // tell PIC 2 its cascade ID + iowait(); // init control word 4 - i686_outb(PIC1_DATA_PORT, PIC_ICW4_8086); - i686_iowait(); - i686_outb(PIC2_DATA_PORT, PIC_ICW4_8086); - i686_iowait(); + outb(PIC1_DATA_PORT, PIC_ICW4_8086); + iowait(); + outb(PIC2_DATA_PORT, PIC_ICW4_8086); + iowait(); // clear data registers - i686_outb(PIC1_DATA_PORT, 0); - i686_iowait(); - i686_outb(PIC2_DATA_PORT, 0); - i686_iowait(); + outb(PIC1_DATA_PORT, 0); + iowait(); + outb(PIC2_DATA_PORT, 0); + iowait(); } -void i686_PIC_Mask(int irq) +void PIC_Mask(int irq) { uint8_t port; @@ -80,11 +80,11 @@ void i686_PIC_Mask(int irq) irq -=8; port = PIC2_DATA_PORT; } - uint8_t mask = i686_inb(port); - i686_outb(port, mask | (1 << irq)); + uint8_t mask = inb(port); + outb(port, mask | (1 << irq)); } -void i686_PIC_Unmask(int irq) +void PIC_Unmask(int irq) { uint8_t port; @@ -97,35 +97,35 @@ void i686_PIC_Unmask(int irq) irq -=8; port = PIC2_DATA_PORT; } - uint8_t mask = i686_inb(port); - i686_outb(port, mask & ~(1 << irq)); + uint8_t mask = inb(port); + outb(port, mask & ~(1 << irq)); } -void i686_PIC_Disable() +void PIC_Disable() { - i686_outb(PIC1_DATA_PORT, 0xFF); - i686_iowait(); - i686_outb(PIC2_DATA_PORT, 0xFF); - i686_iowait(); + outb(PIC1_DATA_PORT, 0xFF); + iowait(); + outb(PIC2_DATA_PORT, 0xFF); + iowait(); } -void i686_PIC_SendEndOfInterrupt(int irq) +void PIC_SendEndOfInterrupt(int irq) { if (irq >= 8) - i686_outb(PIC2_COMMAND_PORT, PIC_CMD_END_OF_INTERRUPT); - i686_outb(PIC1_COMMAND_PORT, PIC_CMD_END_OF_INTERRUPT); + outb(PIC2_COMMAND_PORT, PIC_CMD_END_OF_INTERRUPT); + outb(PIC1_COMMAND_PORT, PIC_CMD_END_OF_INTERRUPT); } -uint16_t i686_PIC_ReadIRQRequestRegister() +uint16_t PIC_ReadIRQRequestRegister() { - i686_outb(PIC1_COMMAND_PORT, PIC_CMD_READ_IRR); - i686_outb(PIC2_COMMAND_PORT, PIC_CMD_READ_IRR); - return i686_inb(PIC2_COMMAND_PORT) | (i686_inb(PIC2_COMMAND_PORT) << 8); + outb(PIC1_COMMAND_PORT, PIC_CMD_READ_IRR); + outb(PIC2_COMMAND_PORT, PIC_CMD_READ_IRR); + return inb(PIC2_COMMAND_PORT) | (inb(PIC2_COMMAND_PORT) << 8); } -uint16_t i686_PIC_ReadInServiceRegister() +uint16_t PIC_ReadInServiceRegister() { - i686_outb(PIC1_COMMAND_PORT, PIC_CMD_READ_ISR); - i686_outb(PIC2_COMMAND_PORT, PIC_CMD_READ_ISR); - return i686_inb(PIC2_COMMAND_PORT) | (i686_inb(PIC2_COMMAND_PORT) << 8); + outb(PIC1_COMMAND_PORT, PIC_CMD_READ_ISR); + outb(PIC2_COMMAND_PORT, PIC_CMD_READ_ISR); + return inb(PIC2_COMMAND_PORT) | (inb(PIC2_COMMAND_PORT) << 8); } \ No newline at end of file diff --git a/src/kernel/arch/i686/pic.h b/src/kernel/arch/i686/pic.h index 70d287f..7ec604c 100644 --- a/src/kernel/arch/i686/pic.h +++ b/src/kernel/arch/i686/pic.h @@ -6,10 +6,10 @@ #pragma once #include -void i686_PIC_Configure(uint8_t offsetPic1, uint8_t offsetPic2); -void i686_PIC_SendEndOfInterrupt(int irq); -void i686_PIC_Disable(); -void i686_PIC_Mask(int irq); -void i686_PIC_Unmask(int irq); -uint16_t i686_PIC_ReadIRQRequestRegister(); -uint16_t i686_PIC_ReadInServiceRegister(); \ No newline at end of file +void PIC_Configure(uint8_t offsetPic1, uint8_t offsetPic2); +void PIC_SendEndOfInterrupt(int irq); +void PIC_Disable(); +void PIC_Mask(int irq); +void PIC_Unmask(int irq); +uint16_t PIC_ReadIRQRequestRegister(); +uint16_t PIC_ReadInServiceRegister(); \ No newline at end of file diff --git a/src/kernel/dri/cmos.c b/src/kernel/dri/cmos.c index 509cf06..aa434b8 100644 --- a/src/kernel/dri/cmos.c +++ b/src/kernel/dri/cmos.c @@ -22,8 +22,8 @@ void CMOS_RTC_Handler() uint8_t Read_CMOS(uint8_t Register) { uint8_t data; - i686_outb(0x70, Register); - data = i686_inb(CMOS_DATAPORT); + outb(0x70, Register); + data = inb(CMOS_DATAPORT); return data; } diff --git a/src/kernel/dri/disk/floppy.c b/src/kernel/dri/disk/floppy.c index 259a7ed..964160b 100644 --- a/src/kernel/dri/disk/floppy.c +++ b/src/kernel/dri/disk/floppy.c @@ -13,29 +13,85 @@ extern uint16_t DEBUG_COM_PORT; -volatile unsigned char FloppyIRQRecived = false; +volatile int FloppyIRQRecived = 0; + +// Honestly dont care that most of this is hard-coded, im just done with this shit void Floppy_Handler() { - FloppyIRQRecived = true; + // IRQ Handler + FloppyIRQRecived = 1; Serial_Printf(DEBUG_COM_PORT, "Recived IRQ From Floppy Drive.\n"); } -void Floppy_Drive_Init(uint8_t drive) +void Floppy_IRQ_Wait() { - uint8_t Buffer; - if (drive == 1) Buffer = FLOPPY_DOR_DSEL1 && FLOPPY_DOR_DSEL1 && FLOPPY_DOR_RESET && FLOPPY_DOR_MOTA && 0 && 0 && 0; - if (drive == 2) Buffer = FLOPPY_DOR_DSEL1 && FLOPPY_DOR_DSEL1 && FLOPPY_DOR_RESET && 0 && FLOPPY_DOR_MOTB && 0 && 0; - i686_outb(FLOPPY_DIGITAL_OUTPUT_REGISTER, Buffer); - Serial_Printf(DEBUG_COM_PORT, "Started Floppy Drive: %u\n", drive); + // Waits until IRQ is recived + while(FloppyIRQRecived == 0); + FloppyIRQRecived = 0; } -void Floppy_Send_Command(uint8_t command) +// init DMA to use phys addr 1k-64k +void Floppy_Init_DMA() { - i686_outb(FLOPPY_DATA_FIFO, command); - Serial_Printf(DEBUG_COM_PORT, "Floppy Command Sent: %u\n", command); + outb(0x0a, 0x06); //mask dma channel 2 + outb(0xd8, 0xff); //reset master flip-flop + outb(0x04, 0); //address=0x1000 + outb(0x04, 0x10); + outb(0xd8, 0xff); //reset master flip-flop + outb(0x05, 0xff); //count to 0x23ff (number of bytes in a 3.5" floppy disk track) + outb(0x05, 0x23); + outb(0x80, 0); //external page register = 0 + outb(0x0a, 0x02); //unmask dma channel 2 +} + +// Prep the DMA for read transfer +void Floppy_DMA_Read() +{ + outb(0x0a, 0x06); //mask dma channel 2 + outb(0x0b, 0x56); //single transfer, address increment, autoinit, read, channel 2 + outb(0x0a, 0x02); //unmask dma channel 2 +} + +// Prep DMA for write transfer +void Floppy_DMA_Write() +{ + outb(0x0a, 0x06); //mask dma channel 2 + outb(0x0b, 0x5a); //single transfer, address increment, autoinit, write, channel 2 + outb(0x0a, 0x02); //unmask dma channel 2 } +void Floppy_Write_DOR(uint8_t command ) +{ + // Write the DOR + outb(FLOPPY_DOR, command); + Serial_Printf(DEBUG_COM_PORT, "Wrote %u To Floppy DOR.\n", command); +} + +uint8_t Floppy_Read_Status() +{ + // Returns MSR (simple innit? + return inb(FLOPPY_MSR); +} + +int Floppy_Check_Busy() +{ + // Explains Itself. + if (Floppy_Read_Status() & FLOPPY_MSR_MASK_BUSY) + return 1; + else + return 0; +} + +void Floppy_Send_Command (uint8_t command) +{ + // Wait for DOR then send command + for(int i = 0; i < 500; i++) + if(Floppy_Read_Status() & FLOPPY_MSR_MASK_DATAREG) + return outb(FLOPPY_FIFO, command); +} + +// LBA2CHS Lives Forever! Might move it later on tho void Floppy_LBA2CHS(FLOPPY_DISK* disk, uint32_t lba, uint16_t* cylinderOut, uint16_t* sectorOut, uint16_t* headOut) { // sector = (LBA % sectors per track + 1) *sectorOut = lba % disk->sectors +1; diff --git a/src/kernel/dri/disk/floppy.h b/src/kernel/dri/disk/floppy.h index e32d35f..4bfc3e2 100644 --- a/src/kernel/dri/disk/floppy.h +++ b/src/kernel/dri/disk/floppy.h @@ -18,86 +18,39 @@ void Floppy_Handler(); void Floppy_Drive_Init(uint8_t drive); +/* When i Said i was Rewriting this POS i meant it */ - -/* DOR Command Table -Mnemonic bit number value meaning/usage - MOTD 7 0x80 Set to turn drive 3's motor ON - MOTC 6 0x40 Set to turn drive 2's motor ON - MOTB 5 0x20 Set to turn drive 1's motor ON - MOTA 4 0x10 Set to turn drive 0's motor ON - IRQ 3 8 Set to enable IRQs and DMA - RESET 2 4 Clear = enter reset mode, Set = normal operation - DSEL1 and 0 0, 1 3 "Select" drive number for next access -*/ -enum FloppyDORBitflags -{ - FLOPPY_DOR_MOTD = 0x80, - FLOPPY_DOR_MOTC = 0x40, - FLOPPY_DOR_MOTB = 0x20, - FLOPPY_DOR_MOTA = 0x10, - FLOPPY_DOR_IRQ = 0x08, - FLOPPY_DOR_RESET = 0x04, - FLOPPY_DOR_DSEL1 = 0x01 -}; -/* MSR Commands -Mnemonic Bit Value - RQM 7 0x80 - DIO 6 0x40 - NDMA 5 0x20 - CB 4 0x10 - ACTD 3 8 - ACTC 2 4 - ACTB 1 2 - ACTA 0 1 -*/ -enum FloppyMSRBitflags -{ - FLOPPY_MSR_RQM = 0x80, // Set if it's OK (or mandatory) to exchange bytes with the FIFO IO port - FLOPPY_MSR_DIO = 0x40, // Set if FIFO IO port expects an IN opcode - FLOPPY_MSR_NDMA = 0x20, // Set in Execution phase of PIO mode read/write commands only. - FLOPPY_MSR_CB = 0x10, // Command Busy: set when command byte received, cleared at end of Result phase - FLOPPY_MSR_ACTD = 0x08, // Drive 3 is seeking - FLOPPY_MSR_ACTC = 0x04, // Drive 2 is seeking - FLOPPY_MSR_ACTB = 0x02, // Drive 1 is seeking - FLOPPY_MSR_ACTA = 0x01, // Drive 0 is seeking +enum FLOPPY_IO { + + FLOPPY_DOR = 0x3f2, + FLOPPY_MSR = 0x3f4, + FLOPPY_FIFO = 0x3f5, //data register + FLOPPY_CTRL = 0x3f7 }; -// Bottom 2 Bits of DSR match CCR -enum FloppyRegisters -{ - FLOPPY_STATUS_REGISTER_A = 0x3F0, // read-only - FLOPPY_STATUS_REGISTER_B = 0x3F1, // read-only - FLOPPY_DIGITAL_OUTPUT_REGISTER = 0x3F2, - FLOPPY_TAPE_DRIVE_REGISTER = 0x3F3, // Basically Useless, unless for some reason you have a tape drive - FLOPPY_MAIN_STATUS_REGISTER = 0x3F4, // read-only - FLOPPY_DATARATE_SELECT_REGISTER = 0x3F4, // write-only - FLOPPY_DATA_FIFO = 0x3F5, - FLOPPY_DIGITAL_INPUT_REGISTER = 0x3F7, // read-only - FLOPPY_CONFIGURATION_CONTROL_REGISTER = 0x3F7 // write-only +enum FLOPPY_DOR_MASK { + + FLOPPY_DOR_MASK_DRIVE0 = 0, //00000000 = here for completeness sake + FLOPPY_DOR_MASK_DRIVE1 = 1, //00000001 + FLOPPY_DOR_MASK_DRIVE2 = 2, //00000010 + FLOPPY_DOR_MASK_DRIVE3 = 3, //00000011 + FLOPPY_DOR_MASK_RESET = 4, //00000100 + FLOPPY_DOR_MASK_DMA = 8, //00001000 + FLOPPY_DOR_MASK_DRIVE0_MOTOR = 16, //00010000 + FLOPPY_DOR_MASK_DRIVE1_MOTOR = 32, //00100000 + FLOPPY_DOR_MASK_DRIVE2_MOTOR = 64, //01000000 + FLOPPY_DOR_MASK_DRIVE3_MOTOR = 128 //10000000 +}; + +enum FLOPPY_MSR_MASK { + + FLOPPY_MSR_MASK_DRIVE1_POS_MODE = 1, //00000001 + FLOPPY_MSR_MASK_DRIVE2_POS_MODE = 2, //00000010 + FLOPPY_MSR_MASK_DRIVE3_POS_MODE = 4, //00000100 + FLOPPY_MSR_MASK_DRIVE4_POS_MODE = 8, //00001000 + FLOPPY_MSR_MASK_BUSY = 16, //00010000 + FLOPPY_MSR_MASK_DMA = 32, //00100000 + FLOPPY_MSR_MASK_DATAIO = 64, //01000000 + FLOPPY_MSR_MASK_DATAREG = 128 //10000000 }; -enum FloppyCommands -{ - FLOPPY_READ_TRACK = 2, // generates IRQ6 - FLOPPY_SPECIFY = 3, // * set drive parameters - FLOPPY_SENSE_DRIVE_STATUS = 4, - FLOPPY_WRITE_DATA = 5, // * write to the disk - FLOPPY_READ_DATA = 6, // * read from the disk - FLOPPY_RECALIBRATE = 7, // * seek to cylinder 0 - FLOPPY_SENSE_INTERRUPT = 8, // * ack IRQ6, get status of last command - FLOPPY_WRITE_DELETED_DATA = 9, - FLOPPY_READ_ID = 10, // generates IRQ6 - FLOPPY_READ_DELETED_DATA = 12, - FLOPPY_FORMAT_TRACK = 13, // * - FLOPPY_DUMPREG = 14, - FLOPPY_SEEK = 15, // * seek both heads to cylinder X - FLOPPY_VERSION = 16, // * used during initialization, once - FLOPPY_SCAN_EQUAL = 17, - FLOPPY_PERPENDICULAR_MODE = 18, // * used during initialization, once, maybe - FLOPPY_CONFIGURE = 19, // * set controller parameters - FLOPPY_LOCK = 20, // * protect controller params from a reset - FLOPPY_VERIFY = 22, - FLOPPY_SCAN_LOW_OR_EQUAL = 25, - FLOPPY_SCAN_HIGH_OR_EQUAL = 29 -}; \ No newline at end of file diff --git a/src/kernel/dri/serial.c b/src/kernel/dri/serial.c index 438a890..4b592c2 100644 --- a/src/kernel/dri/serial.c +++ b/src/kernel/dri/serial.c @@ -43,49 +43,49 @@ int Init_Serial(uint16_t COM_Port, int Baud) { uint8_t Divisor = 115200 / Baud; - i686_outb(COM_Port + 1, 0x00); // Disable all interrupts - i686_outb(COM_Port + 3, Divisor); // Enable DLAB (set baud rate divisor) - i686_outb(COM_Port + 0, 0x03); // Set divisor to 3 (lo byte) 38400 baud - i686_outb(COM_Port + 1, 0x00); // (hi byte) - i686_outb(COM_Port + 3, 0x03); // 8 bits, no parity, one stop bit - i686_outb(COM_Port + 2, 0xC7); // Enable FIFO, clear them, with 14-byte threshold - i686_outb(COM_Port + 4, 0x0B); // IRQs enabled, RTS/DSR set - i686_outb(COM_Port + 4, 0x1E); // Set in loopback mode, test the serial chip - i686_outb(COM_Port + 0, 0xAE); // Test serial chip (send byte 0xAE and check if serial returns same byte) + outb(COM_Port + 1, 0x00); // Disable all interrupts + outb(COM_Port + 3, Divisor); // Enable DLAB (set baud rate divisor) + outb(COM_Port + 0, 0x03); // Set divisor to 3 (lo byte) 38400 baud + outb(COM_Port + 1, 0x00); // (hi byte) + outb(COM_Port + 3, 0x03); // 8 bits, no parity, one stop bit + outb(COM_Port + 2, 0xC7); // Enable FIFO, clear them, with 14-byte threshold + outb(COM_Port + 4, 0x0B); // IRQs enabled, RTS/DSR set + outb(COM_Port + 4, 0x1E); // Set in loopback mode, test the serial chip + outb(COM_Port + 0, 0xAE); // Test serial chip (send byte 0xAE and check if serial returns same byte) // Check if serial is faulty (i.e: not same byte as sent) - if(i686_inb(COM_Port + 0) != 0xAE) { + if(inb(COM_Port + 0) != 0xAE) { return 1; } // If serial is not faulty set it in normal operation mode // (not-loopback with IRQs enabled and OUT#1 and OUT#2 bits enabled) - i686_outb(COM_Port + 4, 0x0F); + outb(COM_Port + 4, 0x0F); return 0; } int Serial_Received(uint16_t COM_Port) { - return i686_inb(COM_Port + 5) & 1; + return inb(COM_Port + 5) & 1; } char Read_Serial(uint16_t COM_Port) { while (Serial_Received(COM_Port) == 0); - return i686_inb(COM_Port); + return inb(COM_Port); } int Serial_Transmit_Empty(uint16_t COM_Port) { - return i686_inb(COM_Port + 5) & 0x20; + return inb(COM_Port + 5) & 0x20; } void Write_Serial(uint16_t COM_Port, char a) { while (Serial_Transmit_Empty(COM_Port) == 0); - i686_outb(COM_Port,a); + outb(COM_Port,a); } // We do the funny... extern const char g_HexChars[]; diff --git a/src/kernel/hal/hal.c b/src/kernel/hal/hal.c index 149ddd0..142ac31 100644 --- a/src/kernel/hal/hal.c +++ b/src/kernel/hal/hal.c @@ -13,19 +13,19 @@ void HAL_Initialize() { // init GDT printf("> Initializing GDT..."); - i686_GDT_Initialize(); + GDT_Initialize(); printf("Done!\n"); // init IDT printf("> Initializing IDT..."); - i686_IDT_Initialize(); + IDT_Initialize(); printf("Done!\n"); // init ISR printf("> Initializing ISR..."); - i686_ISR_Initialize(); + ISR_Initialize(); printf("Done!\n"); // init IRQ printf("> Initializing IRQ Handling..."); - i686_IRQ_Initialize(); + IRQ_Initialize(); printf("Done!\n"); } \ No newline at end of file diff --git a/src/kernel/hal/isrs.h b/src/kernel/hal/isrs.h deleted file mode 100644 index e69de29..0000000 diff --git a/src/kernel/main.c b/src/kernel/main.c index 1ee791a..d413b32 100644 --- a/src/kernel/main.c +++ b/src/kernel/main.c @@ -42,7 +42,7 @@ void timer(Registers* regs) int keyboard_scancode; void keyboard() { - keyboard_scancode = i686_inb(PS2_KEYBOARD_PORT); + keyboard_scancode = inb(PS2_KEYBOARD_PORT); // Debug Message, need to make a serial output thingy :) Serial_Printf(DEBUG_COM_PORT, "Keycode = %d Port = %d\n", keyboard_scancode, PS2_KEYBOARD_PORT); } @@ -61,23 +61,21 @@ void __attribute__((section(".entry"))) start(BootParams* bootParams) { movecursorpos(19, 8); printf("Done!\n\n\n\n\n"); Init_Serial(DEBUG_COM_PORT, 9600); - i686_IRQ_RegisterHandler(0, timer); - i686_IRQ_RegisterHandler(8, CMOS_RTC_Handler); - i686_IRQ_RegisterHandler(4, COM1_Serial_Handler); + IRQ_RegisterHandler(0, timer); + IRQ_RegisterHandler(8, CMOS_RTC_Handler); + IRQ_RegisterHandler(4, COM1_Serial_Handler); // Begin Loading Basic Drivers printf("Load Keyboard Driver..."); - i686_IRQ_RegisterHandler(1, keyboard); + IRQ_RegisterHandler(1, keyboard); printf("Done!\n"); printf("Load Basic Storage Drivers..."); - i686_IRQ_RegisterHandler(6, Floppy_Handler); + IRQ_RegisterHandler(6, Floppy_Handler); printf("Done!\n"); masterFDDType = Master_FDD_Detect(); slaveFDDType = Slave_FDD_Detect(); - Floppy_Drive_Init(1); Print_Storage_Types(masterFDDType, slaveFDDType); - // printf("Kernel Params: %s\n", bootParams->KernelParams); @@ -91,8 +89,6 @@ void __attribute__((section(".entry"))) start(BootParams* bootParams) { bootParams->Memory.Regions[i].Begin, bootParams->Memory.Regions[i].Length, bootParams->Memory.Regions[i].Type); } - - end: for (;;); } diff --git a/src/kernel/stdio.c b/src/kernel/stdio.c index 535046d..838aba6 100644 --- a/src/kernel/stdio.c +++ b/src/kernel/stdio.c @@ -51,10 +51,10 @@ void setcursor(int x, int y) { int pos = y * SCREEN_WIDTH + x; - i686_outb(0x3D4, 0x0F); - i686_outb(0x3D5, (uint8_t)(pos & 0xFF)); - i686_outb(0x3D4, 0x0E); - i686_outb(0x3D5, (uint8_t)((pos >> 8) & 0xFF)); + outb(0x3D4, 0x0F); + outb(0x3D5, (uint8_t)(pos & 0xFF)); + outb(0x3D4, 0x0E); + outb(0x3D5, (uint8_t)((pos >> 8) & 0xFF)); } void clrscr() diff --git a/src/libs/version.h b/src/libs/version.h index 6aa36ff..265b173 100644 --- a/src/libs/version.h +++ b/src/libs/version.h @@ -6,5 +6,5 @@ #pragma once #define LOGO " _ _____ _ __________________\n / | / / | / | / / _/_ __/ ____/\n / |/ / /| | / |/ // / / / / __/ \n / /| / ___ |/ /| // / / / / /___ \n/_/ |_/_/ |_/_/ |_/___/ /_/ /_____/ \n" -#define VERSION "RD-00025" +#define VERSION "RD-00027" #define BOOTLOGO " _ ______ ____ ____ ______\n / | / / __ )/ __ \\/ __ /_ __/\n / |/ / __ / / / / / / // / \n / /| / /_/ / /_/ / /_/ // / \n/_/ |_/_____/\\____/\\____//_/ \n"