should be a working build, uhh i add uhm ISR? sorta, not done dont care

This commit is contained in:
Tyler McGurrin 2024-12-19 10:14:32 -05:00
parent 46da32cfcc
commit 8a2cb7168f
11 changed files with 986 additions and 13 deletions

View File

@ -18,6 +18,9 @@ export TARGET_LINKFLAGS =
export TARGET_LIBS =
export BUILD_DIR = $(abspath build)
export SOURCE_DIR = $(abspath .)
# i hate making make files...
BINUTILS_VERSION = 2.43.1
BINUTILS_URL = https://ftp.gnu.org/gnu/binutils/binutils-$(BINUTILS_VERSION).tar.gz

50
build_scripts/genISR.sh Executable file
View File

@ -0,0 +1,50 @@
#!/bin/bash
# exit on err
set -e
if [ $# -le 1 ]; then
echo "Usage: genISR.sh <ISRgen.c> <ISRgen.inc>"
exit 1
fi
# varibles
ISRS_GEN_C=$1
ISRS_GEN_ASM=$2
ISRS_WITH_ERROR_CODE="8 10 11 12 13 14 17 21 29 30"
# Gen C File
# Later(TM), scratch that... NOW
echo "// THIS FILE IS AUTOGENERATED VIA genISR.sh, because im pacient but not THAT pacient good lord its 500 lines of pure hell also like i have no braincells left..." > $ISRS_GEN_C
echo "#include \"idt.h\"" >> $ISRS_GEN_C
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
done
echo "" >> $ISRS_GEN_C
echo "void i686_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
done
echo "}" >> $ISRS_GEN_C
# die die die die die die die die die go my braincells
# Generate ASM
echo "; THIS FILE IS AUTOGENERATED VIA genISR.sh i could've done this once myself but shell script is my fren" > $ISRS_GEN_ASM
for i in $(seq 0 255); do
if echo "$ISRS_WITH_ERROR_CODE" | grep -q "\b${i}\b"; then
echo "ISR_ERRORCODE ${i}" >> $ISRS_GEN_ASM
else
echo "ISR_NOERRORCODE ${i}" >> $ISRS_GEN_ASM
fi
echo "I Have No Braincells^10, its 4:30 in the morning... anyways your files were made..."
done

View File

@ -3,11 +3,35 @@ TARGET_CFLAGS += -ffreestanding -nostdlib -I.
TARGET_LIBS += -lgcc
TARGET_LINKFLAGS += -T linker.ld -nostdlib
SOURCES_C=$(shell find . -type f -name "*.c")
SOURCES_ASM=$(shell find . -type f -name "*.asm")
HEADERS_C = $(wildcard *.h) \
$(wildcard */*.h) \
$(wildcard */*/*.h) \
$(wildcard */*/*/*.h)
SOURCES_C = $(wildcard *.c) \
$(wildcard */*.c) \
$(wildcard */*/*.c) \
$(wildcard */*/*/*.c) \
arch/i686/gen_isr.c
OBJECTS_C = $(patsubst %.c, $(BUILD_DIR)/kernel/c/%.obj, $(SOURCES_C))
HEADERS_ASM = $(wildcard *.inc) \
$(wildcard */*.inc) \
$(wildcard */*/*.inc) \
$(wildcard */*/*/*.inc) \
arch/i686/gen_isr.inc
SOURCES_ASM = $(wildcard *.asm) \
$(wildcard */*.asm) \
$(wildcard */*/*.asm) \
$(wildcard */*/*/*.asm)
OBJECTS_ASM = $(patsubst %.asm, $(BUILD_DIR)/kernel/asm/%.obj, $(SOURCES_ASM))
# i love rejanking this cuz yes (its 4am fuck off)
.PHONY: all kernel clean always
all: kernel
@ -18,15 +42,19 @@ $(BUILD_DIR)/kernel.bin: $(OBJECTS_ASM) $(OBJECTS_C)
@$(TARGET_LD) $(TARGET_LINKFLAGS) -Wl,-Map=$(BUILD_DIR)/kernel.map -o $@ $^ $(TARGET_LIBS)
@echo "--> Created: kernel.bin"
$(BUILD_DIR)/kernel/c/%.obj: %.c
$(BUILD_DIR)/kernel/c/%.obj: %.c $(HEADERS_C)
@mkdir -p $(@D)
@$(TARGET_CC) $(TARGET_CFLAGS) -c -o $@ $<
@echo "--> Compiled: " $<
$(BUILD_DIR)/kernel/asm/%.obj: %.asm
$(BUILD_DIR)/kernel/asm/%.obj: %.asm $(HEADERS_ASM)
@mkdir -p $(@D)
@$(TARGET_ASM) $(TARGET_ASMFLAGS) -o $@ $<
@echo "--> Compiled: " $<
arch/i686/gen_isr.c arch/i686/gen_isr.inc:
@$(SOURCE_DIR)/build_tools/generate_isrs.sh $@
@echo "--> Compiled: ISR Gen Files"
clean:
rm -f $(BUILD_DIR)/kernel.bin

View File

@ -0,0 +1,520 @@
// THIS FILE IS AUTOGENERATED VIA genISR.sh, because im pacient but not THAT pacient good lord its 500 lines of pure hell also like i have no braincells left...
#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 i686_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);
}

View File

@ -0,0 +1,257 @@
; THIS FILE IS AUTOGENERATED VIA genISR.sh i could've done this once myself but shell script is my fren
ISR_NOERRORCODE 0
ISR_NOERRORCODE 1
ISR_NOERRORCODE 2
ISR_NOERRORCODE 3
ISR_NOERRORCODE 4
ISR_NOERRORCODE 5
ISR_NOERRORCODE 6
ISR_NOERRORCODE 7
ISR_ERRORCODE 8
ISR_NOERRORCODE 9
ISR_ERRORCODE 10
ISR_ERRORCODE 11
ISR_ERRORCODE 12
ISR_ERRORCODE 13
ISR_ERRORCODE 14
ISR_NOERRORCODE 15
ISR_NOERRORCODE 16
ISR_ERRORCODE 17
ISR_NOERRORCODE 18
ISR_NOERRORCODE 19
ISR_NOERRORCODE 20
ISR_ERRORCODE 21
ISR_NOERRORCODE 22
ISR_NOERRORCODE 23
ISR_NOERRORCODE 24
ISR_NOERRORCODE 25
ISR_NOERRORCODE 26
ISR_NOERRORCODE 27
ISR_NOERRORCODE 28
ISR_ERRORCODE 29
ISR_ERRORCODE 30
ISR_NOERRORCODE 31
ISR_NOERRORCODE 32
ISR_NOERRORCODE 33
ISR_NOERRORCODE 34
ISR_NOERRORCODE 35
ISR_NOERRORCODE 36
ISR_NOERRORCODE 37
ISR_NOERRORCODE 38
ISR_NOERRORCODE 39
ISR_NOERRORCODE 40
ISR_NOERRORCODE 41
ISR_NOERRORCODE 42
ISR_NOERRORCODE 43
ISR_NOERRORCODE 44
ISR_NOERRORCODE 45
ISR_NOERRORCODE 46
ISR_NOERRORCODE 47
ISR_NOERRORCODE 48
ISR_NOERRORCODE 49
ISR_NOERRORCODE 50
ISR_NOERRORCODE 51
ISR_NOERRORCODE 52
ISR_NOERRORCODE 53
ISR_NOERRORCODE 54
ISR_NOERRORCODE 55
ISR_NOERRORCODE 56
ISR_NOERRORCODE 57
ISR_NOERRORCODE 58
ISR_NOERRORCODE 59
ISR_NOERRORCODE 60
ISR_NOERRORCODE 61
ISR_NOERRORCODE 62
ISR_NOERRORCODE 63
ISR_NOERRORCODE 64
ISR_NOERRORCODE 65
ISR_NOERRORCODE 66
ISR_NOERRORCODE 67
ISR_NOERRORCODE 68
ISR_NOERRORCODE 69
ISR_NOERRORCODE 70
ISR_NOERRORCODE 71
ISR_NOERRORCODE 72
ISR_NOERRORCODE 73
ISR_NOERRORCODE 74
ISR_NOERRORCODE 75
ISR_NOERRORCODE 76
ISR_NOERRORCODE 77
ISR_NOERRORCODE 78
ISR_NOERRORCODE 79
ISR_NOERRORCODE 80
ISR_NOERRORCODE 81
ISR_NOERRORCODE 82
ISR_NOERRORCODE 83
ISR_NOERRORCODE 84
ISR_NOERRORCODE 85
ISR_NOERRORCODE 86
ISR_NOERRORCODE 87
ISR_NOERRORCODE 88
ISR_NOERRORCODE 89
ISR_NOERRORCODE 90
ISR_NOERRORCODE 91
ISR_NOERRORCODE 92
ISR_NOERRORCODE 93
ISR_NOERRORCODE 94
ISR_NOERRORCODE 95
ISR_NOERRORCODE 96
ISR_NOERRORCODE 97
ISR_NOERRORCODE 98
ISR_NOERRORCODE 99
ISR_NOERRORCODE 100
ISR_NOERRORCODE 101
ISR_NOERRORCODE 102
ISR_NOERRORCODE 103
ISR_NOERRORCODE 104
ISR_NOERRORCODE 105
ISR_NOERRORCODE 106
ISR_NOERRORCODE 107
ISR_NOERRORCODE 108
ISR_NOERRORCODE 109
ISR_NOERRORCODE 110
ISR_NOERRORCODE 111
ISR_NOERRORCODE 112
ISR_NOERRORCODE 113
ISR_NOERRORCODE 114
ISR_NOERRORCODE 115
ISR_NOERRORCODE 116
ISR_NOERRORCODE 117
ISR_NOERRORCODE 118
ISR_NOERRORCODE 119
ISR_NOERRORCODE 120
ISR_NOERRORCODE 121
ISR_NOERRORCODE 122
ISR_NOERRORCODE 123
ISR_NOERRORCODE 124
ISR_NOERRORCODE 125
ISR_NOERRORCODE 126
ISR_NOERRORCODE 127
ISR_NOERRORCODE 128
ISR_NOERRORCODE 129
ISR_NOERRORCODE 130
ISR_NOERRORCODE 131
ISR_NOERRORCODE 132
ISR_NOERRORCODE 133
ISR_NOERRORCODE 134
ISR_NOERRORCODE 135
ISR_NOERRORCODE 136
ISR_NOERRORCODE 137
ISR_NOERRORCODE 138
ISR_NOERRORCODE 139
ISR_NOERRORCODE 140
ISR_NOERRORCODE 141
ISR_NOERRORCODE 142
ISR_NOERRORCODE 143
ISR_NOERRORCODE 144
ISR_NOERRORCODE 145
ISR_NOERRORCODE 146
ISR_NOERRORCODE 147
ISR_NOERRORCODE 148
ISR_NOERRORCODE 149
ISR_NOERRORCODE 150
ISR_NOERRORCODE 151
ISR_NOERRORCODE 152
ISR_NOERRORCODE 153
ISR_NOERRORCODE 154
ISR_NOERRORCODE 155
ISR_NOERRORCODE 156
ISR_NOERRORCODE 157
ISR_NOERRORCODE 158
ISR_NOERRORCODE 159
ISR_NOERRORCODE 160
ISR_NOERRORCODE 161
ISR_NOERRORCODE 162
ISR_NOERRORCODE 163
ISR_NOERRORCODE 164
ISR_NOERRORCODE 165
ISR_NOERRORCODE 166
ISR_NOERRORCODE 167
ISR_NOERRORCODE 168
ISR_NOERRORCODE 169
ISR_NOERRORCODE 170
ISR_NOERRORCODE 171
ISR_NOERRORCODE 172
ISR_NOERRORCODE 173
ISR_NOERRORCODE 174
ISR_NOERRORCODE 175
ISR_NOERRORCODE 176
ISR_NOERRORCODE 177
ISR_NOERRORCODE 178
ISR_NOERRORCODE 179
ISR_NOERRORCODE 180
ISR_NOERRORCODE 181
ISR_NOERRORCODE 182
ISR_NOERRORCODE 183
ISR_NOERRORCODE 184
ISR_NOERRORCODE 185
ISR_NOERRORCODE 186
ISR_NOERRORCODE 187
ISR_NOERRORCODE 188
ISR_NOERRORCODE 189
ISR_NOERRORCODE 190
ISR_NOERRORCODE 191
ISR_NOERRORCODE 192
ISR_NOERRORCODE 193
ISR_NOERRORCODE 194
ISR_NOERRORCODE 195
ISR_NOERRORCODE 196
ISR_NOERRORCODE 197
ISR_NOERRORCODE 198
ISR_NOERRORCODE 199
ISR_NOERRORCODE 200
ISR_NOERRORCODE 201
ISR_NOERRORCODE 202
ISR_NOERRORCODE 203
ISR_NOERRORCODE 204
ISR_NOERRORCODE 205
ISR_NOERRORCODE 206
ISR_NOERRORCODE 207
ISR_NOERRORCODE 208
ISR_NOERRORCODE 209
ISR_NOERRORCODE 210
ISR_NOERRORCODE 211
ISR_NOERRORCODE 212
ISR_NOERRORCODE 213
ISR_NOERRORCODE 214
ISR_NOERRORCODE 215
ISR_NOERRORCODE 216
ISR_NOERRORCODE 217
ISR_NOERRORCODE 218
ISR_NOERRORCODE 219
ISR_NOERRORCODE 220
ISR_NOERRORCODE 221
ISR_NOERRORCODE 222
ISR_NOERRORCODE 223
ISR_NOERRORCODE 224
ISR_NOERRORCODE 225
ISR_NOERRORCODE 226
ISR_NOERRORCODE 227
ISR_NOERRORCODE 228
ISR_NOERRORCODE 229
ISR_NOERRORCODE 230
ISR_NOERRORCODE 231
ISR_NOERRORCODE 232
ISR_NOERRORCODE 233
ISR_NOERRORCODE 234
ISR_NOERRORCODE 235
ISR_NOERRORCODE 236
ISR_NOERRORCODE 237
ISR_NOERRORCODE 238
ISR_NOERRORCODE 239
ISR_NOERRORCODE 240
ISR_NOERRORCODE 241
ISR_NOERRORCODE 242
ISR_NOERRORCODE 243
ISR_NOERRORCODE 244
ISR_NOERRORCODE 245
ISR_NOERRORCODE 246
ISR_NOERRORCODE 247
ISR_NOERRORCODE 248
ISR_NOERRORCODE 249
ISR_NOERRORCODE 250
ISR_NOERRORCODE 251
ISR_NOERRORCODE 252
ISR_NOERRORCODE 253
ISR_NOERRORCODE 254
ISR_NOERRORCODE 255

View File

@ -8,15 +8,14 @@
; void __attribute__((cdecl)) i686_IDT_Load(IDTDescriptor* idtDescriptor);
global i686_IDT_Load
i686_IDT_Load:
; make new call frame
push ebp ; save old call frame
mov ebp, esp ; initialize new call frame
; load IDT
; load idt
mov eax, [ebp + 8]
lgdt [eax]
lidt [eax]
; restore old call frame
mov esp, ebp

View File

@ -0,0 +1,58 @@
;/////////////////////;
;Nanite OS ;
;COPYRIGHT (C) 2024 ;
;Tyler McGurrin ;
;/////////////////////;
[bits 32]
extern i686_ISR_Handler
; cpu pushes to the stack: ss, esp, eflags, cs, eip
%macro ISR_NOERRORCODE 1
global i686_ISR%1:
i686_ISR%1:
push 0 ; push dummy error code
push %1 ; push interrupt number
jmp isr_common
%endmacro
%macro ISR_ERRORCODE 1
global i686_ISR%1:
i686_ISR%1:
; cpu pushes an error code to the stack
push %1 ; push interrupt number
jmp isr_common
%endmacro
%include "arch/i686/gen_isr.inc"
isr_common:
pusha ; pushes in order: eax, ecx, edx, ebx, esp, ebp, esi, edi
xor eax, eax ; push ds
mov ax, ds
push eax
mov ax, 0x10 ; use kernel data segment
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
push esp ; pass pointer to stack to C, so we can access all the pushed information
call i686_ISR_Handler
add esp, 4
pop eax ; restore old segment
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
popa ; pop what we pushed with pusha
add esp, 8 ; remove error code and interrupt number
iret ; will pop: cs, eip, eflags, ss, esp

View File

@ -0,0 +1,22 @@
/*----------------*\
|Nanite OS |
|Copyright (C) 2024|
|Tyler McGurrin |
\*----------------*/
#include "isr.h"
#include "idt.h"
#include "gdt.h"
#include "io.h"
#include <stdio.h>
void i686_ISR_InitializeGates();
void i686_ISR_Initialize() {
i686_ISR_InitializeGates();
for (int i = 0; i < 256; i++)
i686_IDT_EnableGate(i);
}
void __attribute__((cdecl)) i686_ISR_Handler(Registers* regs) {
printf("Interrupt %d\n", regs->interrupt);
}

View File

@ -0,0 +1,21 @@
/*----------------*\
|Nanite OS |
|Copyright (C) 2024|
|Tyler McGurrin |
\*----------------*/
#pragma once
#include <stdint.h>
typedef struct
{
// in the reverse order they are pushed:
uint32_t ds; // data segment pushed by us
uint32_t edi, esi, ebp, useless, ebx, edx, ecx, eax; // pusha
uint32_t interrupt, error; // we push interrupt, error is pushed automatically (or our dummy)
uint32_t eip, cs, eflags, esp, ss; // pushed automatically by CPU
} __attribute__((packed)) Registers;
typedef void (*ISRHandler)(Registers* regs);
void i686_ISR_Initialize();

View File

@ -6,13 +6,21 @@
#include "hal.h"
#include <arch/i686/gdt.h>
#include <arch/i686/idt.h>
#include <arch/i686/isr.h>
#include <stdio.h>
void HAL_Initialize() {
// init GDT
printf("> Initializing GDT...");
i686_GDT_Initialize();
printf("Done!\n");
// init IDT
printf("> Initializing IDT...");
i686_IDT_Initialize();
printf("Done!\n");
// init ISR
printf("> Initializing ISR...");
i686_ISR_Initialize();
printf("Done!\n");
}

View File

@ -25,7 +25,14 @@ extern uint8_t __end;
int halx, haly = 0;
HAL_Initialize();
movecursorpos(19, 8);
printf("Done!\n\n\n");
printf("Done!\n\n\n\n");
printf("Testing Interrupts...\n");
__asm("int $0x2");
printf("Testing Interrupts...\n");
__asm("int $0x3");
printf("Testing Interrupts...\n");
__asm("int $0x4");