forked from PoliEcho-holding-org/kern
28 lines
558 B
C
28 lines
558 B
C
#ifndef _CPU_ISR_H
|
|
#define _CPU_ISR_H
|
|
|
|
#include <stdint.h>
|
|
|
|
typedef struct {
|
|
// Pushed by OS
|
|
uint32_t esp, ebx, ecx, edx, esi, edi, ebp;
|
|
uint32_t ds, es, fs, gs, eax;
|
|
uint32_t interrupt, error;
|
|
|
|
// Pushed by CPU
|
|
uint32_t eip, cs, eflags, user_esp, user_ss;
|
|
} intFrame_t;
|
|
typedef void (*HandlerPtr)(intFrame_t* iframe);
|
|
|
|
void setupIsrs();
|
|
void registerIrq(uint8_t id, HandlerPtr handler);
|
|
int handleInterrupt(intFrame_t iframe);
|
|
|
|
// ISR Table
|
|
extern void* asm_isrRedirectTable[48];
|
|
|
|
// Int 0x80 - Syscall
|
|
extern void isr128();
|
|
|
|
#endif
|