BarryServer : Git

All the code for all my projects
// BarryServer : Git / Orion / blob / d41a53cbc7d055b1c00cf0a339dbed6925f4f02c / proc / proc.h

// Related

Orion

Barry Importing existing Orion kernel d41a53c (2 years, 4 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