Orion
Barry Importing existing Orion kernel d41a53c (3 years, 3 months ago)
#ifndef KERNEL_PROC_H
#define KERNEL_PROC_H
#include <stdint.h>
/* Structure pushed on interrupt */
typedef struct InterruptFrame {
uint32_t ds, fs, gs;
uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax;
uint32_t intNo, errCode;
uint32_t eip, cs, eflags, useresp, ss;
} InterruptFrame;
extern uint8_t numCores;
extern uint32_t lapicPtr, ioapicPtr;
extern uint8_t lapicNums[];
#define LAPIC(off) (*((uint32_t *) ((uint32_t) lapicPtr + (off))))
#define IOAPIC(off) (*((uint32_t *) ((uint32_t) ioapicPtr + (off))))
#define CPUID lapicNums[(uint8_t) (LAPIC(0x20) >> 24)]
#define MAX_CPUS 2
void init_pic(void);
void init_multicore(void *ebda);
void init_idt(void);
void init_gdt(void);
void cpu_load_idt(void);
void cpu_load_gdt(void);
void register_exception(int num, void (*handler)(InterruptFrame *));
void register_interrupt(int num, void (*handler)(InterruptFrame *));
#endif