#ifndef _NUCLEUS_CPU_H #define _NUCLEUS_CPU_H #include /* Structure for an Interrupt Frame */ struct InterruptFrame { uint32_t eip, cs, eflags; }; typedef void (*exc_handler_t)(struct InterruptFrame *, uint32_t); typedef void (*int_handler_t)(struct InterruptFrame *); extern uintptr_t lapicPtr, ioapicPtr; #define LAPIC(off) (*((uint32_t *) ((uint32_t) lapicPtr + (off)))) #define IOAPIC(off) (*((uint32_t *) ((uint32_t) ioapicPtr + (off)))) extern uint8_t lapicNums[]; #define CPUID lapicNums[(uint8_t) (LAPIC(0x20) >> 24)] #define MAX_CPUS 2 void register_exception(int num, exc_handler_t addr); void register_interrupt(int num, int_handler_t addr); #endif