#pragma once #include #include #define INT_CALL 0xC #define INT_INT 0xE #define INT_TRAP 0xF extern void vector0(); extern void vector1(); extern void vector2(); extern void vector3(); extern void vector4(); extern void vector5(); extern void vector6(); extern void vector7(); extern void vector8(); extern void vector9(); extern void vector10(); extern void vector11(); extern void vector12(); extern void vector13(); extern void vector14(); extern void vector15(); extern void vector16(); extern void vector17(); extern void vector18(); extern void vector19(); extern void vector20(); extern void vector21(); extern void vector22(); extern void vector23(); extern void vector24(); extern void vector25(); extern void vector26(); extern void vector27(); extern void vector28(); extern void vector29(); extern void vector30(); extern void vector31(); extern void vector32(); extern void vector33(); extern void vector34(); extern void vector35(); extern void vector36(); extern void vector37(); extern void vector38(); extern void vector39(); extern void vector40(); extern void vector41(); extern void vector42(); extern void vector43(); extern void vector44(); extern void vector45(); extern void vector46(); extern void vector47(); extern void vector48(); extern void vector49(); extern void vector50(); extern void vector51(); extern void vector52(); extern void vector53(); extern void vector54(); extern void vector55(); extern void vector56(); extern void vector57(); extern void vector58(); extern void vector59(); extern void vector60(); extern void vector61(); extern void vector62(); extern void vector63(); extern void vector64(); extern void vector65(); extern void vector66(); extern void vector67(); extern void vector68(); extern void vector69(); extern void vector70(); extern void vector71(); extern void vector72(); extern void vector73(); extern void vector74(); extern void vector75(); extern void vector76(); extern void vector77(); extern void vector78(); extern void vector79(); extern void vector80(); extern void vector81(); extern void vector82(); extern void vector83(); extern void vector84(); extern void vector85(); extern void vector86(); extern void vector87(); extern void vector88(); extern void vector89(); extern void vector90(); extern void vector91(); extern void vector92(); extern void vector93(); extern void vector94(); extern void vector95(); extern void vector96(); extern void vector97(); extern void vector98(); extern void vector99(); extern void vector100(); extern void vector101(); extern void vector102(); extern void vector103(); extern void vector104(); extern void vector105(); extern void vector106(); extern void vector107(); extern void vector108(); extern void vector109(); extern void vector110(); extern void vector111(); extern void vector112(); extern void vector113(); extern void vector114(); extern void vector115(); extern void vector116(); extern void vector117(); extern void vector118(); extern void vector119(); extern void vector120(); extern void vector121(); extern void vector122(); extern void vector123(); extern void vector124(); extern void vector125(); extern void vector126(); extern void vector127(); extern void vector128(); extern void vector129(); extern void vector130(); extern void vector131(); extern void vector132(); extern void vector133(); extern void vector134(); extern void vector135(); extern void vector136(); extern void vector137(); extern void vector138(); extern void vector139(); extern void vector140(); extern void vector141(); extern void vector142(); extern void vector143(); extern void vector144(); extern void vector145(); extern void vector146(); extern void vector147(); extern void vector148(); extern void vector149(); extern void vector150(); extern void vector151(); extern void vector152(); extern void vector153(); extern void vector154(); extern void vector155(); extern void vector156(); extern void vector157(); extern void vector158(); extern void vector159(); extern void vector160(); extern void vector161(); extern void vector162(); extern void vector163(); extern void vector164(); extern void vector165(); extern void vector166(); extern void vector167(); extern void vector168(); extern void vector169(); extern void vector170(); extern void vector171(); extern void vector172(); extern void vector173(); extern void vector174(); extern void vector175(); extern void vector176(); extern void vector177(); extern void vector178(); extern void vector179(); extern void vector180(); extern void vector181(); extern void vector182(); extern void vector183(); extern void vector184(); extern void vector185(); extern void vector186(); extern void vector187(); extern void vector188(); extern void vector189(); extern void vector190(); extern void vector191(); extern void vector192(); extern void vector193(); extern void vector194(); extern void vector195(); extern void vector196(); extern void vector197(); extern void vector198(); extern void vector199(); extern void vector200(); extern void vector201(); extern void vector202(); extern void vector203(); extern void vector204(); extern void vector205(); extern void vector206(); extern void vector207(); extern void vector208(); extern void vector209(); extern void vector210(); extern void vector211(); extern void vector212(); extern void vector213(); extern void vector214(); extern void vector215(); extern void vector216(); extern void vector217(); extern void vector218(); extern void vector219(); extern void vector220(); extern void vector221(); extern void vector222(); extern void vector223(); extern void vector224(); extern void vector225(); extern void vector226(); extern void vector227(); extern void vector228(); extern void vector229(); extern void vector230(); extern void vector231(); extern void vector232(); extern void vector233(); extern void vector234(); extern void vector235(); extern void vector236(); extern void vector237(); extern void vector238(); extern void vector239(); extern void vector240(); extern void vector241(); extern void vector242(); extern void vector243(); extern void vector244(); extern void vector245(); extern void vector246(); extern void vector247(); extern void vector248(); extern void vector249(); extern void vector250(); extern void vector251(); extern void vector252(); extern void vector253(); extern void vector254(); extern void vector255(); typedef struct __attribute__((packed)) { uint16_t size; uint64_t ptr; } idt_load; typedef struct __attribute__((packed)) { uint64_t target_offset; uint16_t target_selector; uint8_t ist; // 3 bits uint8_t type; // 4 bits uint8_t dpl; bool p; } gate; void init_idt(); void make_call_gate(gate* g, uint64_t* rg); void make_int_gate(gate* g, uint64_t* rg);