Newer
Older
honey-os / src / kernel / interrupts / interrupts.h
#ifndef INTERRUPTS_PRIVATE_H
#define INTERRUPTS_PRIVATE_H

#include <stdint.h>

typedef struct InterruptDescriptor32 {
    uint16_t offsetLow;
    uint16_t segment;
    uint8_t reserved;
    uint8_t type;
    uint16_t offsetHigh;
} __attribute__((packed)) IdtEntry;

typedef struct {
    uint16_t limit;
    uint32_t base;
} __attribute__((packed)) InterruptTablePointer;

typedef struct {
    uint16_t limit;
    uint16_t baseLow;
    uint8_t baseMid;
    uint8_t access;
    uint8_t granularity;
    uint8_t baseHigh;
} __attribute__((packed)) GDTEntry;

typedef struct {
    uint32_t previous;
    uint32_t esp0;
    uint32_t ss0;
    uint32_t esp1;
    uint32_t ss1;
    uint32_t esp2;
    uint32_t ss2;
    uint32_t cr3;
    uint32_t eip;
    uint32_t eflags;
    uint32_t eax;
    uint32_t ecx;
    uint32_t edx;
    uint32_t ebx;
    uint32_t esp;
    uint32_t ebp;
    uint32_t esi;
    uint32_t edi;
    uint32_t es;
    uint32_t cs;
    uint32_t ss;
    uint32_t ds;
    uint32_t fs;
    uint32_t gs;
    uint32_t ldt;
    uint16_t trap;
    uint16_t iomap;
} __attribute__((packed)) TSS;

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

#define defineExtern(i) extern void *idtHandler##i;

TIMES(defineExtern)

#endif