Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
interrupt.h File Reference
#include <type.h>

Go to the source code of this file.

Data Structures

struct  __attribute__
 
struct  interrupt_stack_frame_t
 
struct  irq_entry_t
 
struct  interrupt_per_core_data_t
 

Macros

#define PIC1   0x20 /* IO base address for master PIC */
 
#define PIC2   0xA0 /* IO base address for slave PIC */
 
#define PIC1_COMMAND   PIC1
 
#define PIC1_DATA   (PIC1 + 1)
 
#define PIC2_COMMAND   PIC2
 
#define PIC2_DATA   (PIC2 + 1)
 
#define ICW1_ICW4   0x01 /* Indicates that ICW4 will be present */
 
#define ICW1_SINGLE   0x02 /* Single (cascade) mode */
 
#define ICW1_INTERVAL4   0x04 /* Call address interval 4 (8) */
 
#define ICW1_LEVEL   0x08 /* Level triggered (edge) mode */
 
#define ICW1_INIT   0x10 /* Initialization - required! */
 
#define ICW4_8086   0x01 /* 8086/88 (MCS-80/85) mode */
 
#define ICW4_AUTO   0x02 /* Auto (normal) EOI */
 
#define ICW4_BUF_SLAVE   0x08 /* Buffered mode/slave */
 
#define ICW4_BUF_MASTER   0x0C /* Buffered mode/master */
 
#define ICW4_SFNM   0x10 /* Special fully nested (not) */
 
#define MAX_INTERRUPTS   256
 
#define MAX_HANDLERS_PER_INTERRUPT   16
 
#define INTERRUPT_ATTR_USER   0x8E
 
#define INTERRUPT_ATTR_KERNEL   0xEE
 

Functions

void irq_register (uint8_t core, int n, void *handler, boolean_t use_default_isr, uint16_t selector, uint8_t ist, uint8_t type_attr)
 
void irq_setup (uint16_t core)
 
uint16_t irq_alloc_entry (uint8_t core)
 
 __attribute__ ((no_stack_protector)) void vxInterruptHandler(interrupt_stack_frame_t *rsp
 

Variables

fpu_state_t * fpu
 

Macro Definition Documentation

◆ ICW1_ICW4

#define ICW1_ICW4   0x01 /* Indicates that ICW4 will be present */

Definition at line 12 of file interrupt.h.

Referenced by interrupt_pic_remap().

◆ ICW1_INIT

#define ICW1_INIT   0x10 /* Initialization - required! */

Definition at line 16 of file interrupt.h.

Referenced by interrupt_pic_remap().

◆ ICW1_INTERVAL4

#define ICW1_INTERVAL4   0x04 /* Call address interval 4 (8) */

Definition at line 14 of file interrupt.h.

◆ ICW1_LEVEL

#define ICW1_LEVEL   0x08 /* Level triggered (edge) mode */

Definition at line 15 of file interrupt.h.

◆ ICW1_SINGLE

#define ICW1_SINGLE   0x02 /* Single (cascade) mode */

Definition at line 13 of file interrupt.h.

◆ ICW4_8086

#define ICW4_8086   0x01 /* 8086/88 (MCS-80/85) mode */

Definition at line 18 of file interrupt.h.

Referenced by interrupt_pic_remap().

◆ ICW4_AUTO

#define ICW4_AUTO   0x02 /* Auto (normal) EOI */

Definition at line 19 of file interrupt.h.

◆ ICW4_BUF_MASTER

#define ICW4_BUF_MASTER   0x0C /* Buffered mode/master */

Definition at line 21 of file interrupt.h.

◆ ICW4_BUF_SLAVE

#define ICW4_BUF_SLAVE   0x08 /* Buffered mode/slave */

Definition at line 20 of file interrupt.h.

◆ ICW4_SFNM

#define ICW4_SFNM   0x10 /* Special fully nested (not) */

Definition at line 22 of file interrupt.h.

◆ INTERRUPT_ATTR_KERNEL

#define INTERRUPT_ATTR_KERNEL   0xEE

Definition at line 28 of file interrupt.h.

Referenced by __attribute__(), irq_setup(), setup_timer_interrupt(), and vxStartScheduler().

◆ INTERRUPT_ATTR_USER

#define INTERRUPT_ATTR_USER   0x8E

Definition at line 27 of file interrupt.h.

◆ MAX_HANDLERS_PER_INTERRUPT

#define MAX_HANDLERS_PER_INTERRUPT   16

Definition at line 25 of file interrupt.h.

◆ MAX_INTERRUPTS

#define MAX_INTERRUPTS   256

Definition at line 24 of file interrupt.h.

Referenced by interrupt_reload(), irq_alloc_entry(), and irq_setup().

◆ PIC1

#define PIC1   0x20 /* IO base address for master PIC */

Definition at line 5 of file interrupt.h.

◆ PIC1_COMMAND

#define PIC1_COMMAND   PIC1

Definition at line 7 of file interrupt.h.

Referenced by interrupt_pic_remap().

◆ PIC1_DATA

#define PIC1_DATA   (PIC1 + 1)

Definition at line 8 of file interrupt.h.

Referenced by interrupt_pic_remap().

◆ PIC2

#define PIC2   0xA0 /* IO base address for slave PIC */

Definition at line 6 of file interrupt.h.

◆ PIC2_COMMAND

#define PIC2_COMMAND   PIC2

Definition at line 9 of file interrupt.h.

Referenced by interrupt_pic_remap().

◆ PIC2_DATA

#define PIC2_DATA   (PIC2 + 1)

Definition at line 10 of file interrupt.h.

Referenced by interrupt_pic_remap().

Function Documentation

◆ __attribute__()

__attribute__ ( (no_stack_protector) )
extern

Definition at line 42 of file gdt.c.

References __gdt_entries, base, and core.

◆ irq_alloc_entry()

uint16_t irq_alloc_entry ( uint8_t core)

Definition at line 109 of file interrupt.c.

References irq_entry_t::allocated, core, interrupt_per_core_data, and MAX_INTERRUPTS.

Referenced by __attribute__().

◆ irq_register()

void irq_register ( uint8_t core,
int n,
void * handler,
boolean_t use_default_isr,
uint16_t selector,
uint8_t ist,
uint8_t type_attr )

◆ irq_setup()

Variable Documentation

◆ fpu

fpu_state_t* fpu

Definition at line 84 of file interrupt.h.

Referenced by __attribute__().