StuBS
ioapic.cc File Reference
#include "ioapic.h"
#include "machine/apic.h"
#include "machine/core.h"
#include "debug/assert.h"
Include dependency graph for ioapic.cc:

Namespaces

namespace  IOAPIC
 Abstraction of the I/O APIC that is used for management of external interrupts.
 

Functions

static Register IOAPIC::read (Index reg)
 
static void IOAPIC::write (Index reg, Register value)
 
static RedirectionTableEntry IOAPIC::getRedirectionTableEntry (uint8_t slot)
 
static void IOAPIC::setRedirectionTableEntry (uint8_t slot, RedirectionTableEntry rt)
 
static void IOAPIC::setID (uint8_t id)
 
void IOAPIC::init ()
 Initializes the I/O APIC.
 
void IOAPIC::config (uint8_t slot, Core::Interrupt::Vector vector, TriggerMode trigger_mode=TriggerMode::EDGE, Polarity polarity=Polarity::HIGH)
 Creates a mapping between an interrupt vector and an external interrupt.
 
void IOAPIC::allow (uint8_t slot)
 Enables the redirection of particular external interrupts to the CPU(s).
 
void IOAPIC::forbid (uint8_t slot)
 Selectively masks external interrupts by slot number.
 
bool IOAPIC::status (uint8_t slot)
 Check whether an external interrupt source is masked.
 

Constants

volatile IndexIOAPIC::IOREGSEL_REG = reinterpret_cast<volatile Index*>(0xfec00000)
 IOAPIC registers memory mapped into the CPU's address space.
 
volatile RegisterIOAPIC::IOWIN_REG = reinterpret_cast<volatile Register*>(0xfec00010)
 IOAPIC registers memory mapped into the CPU's address space.
 
const Index IOAPIC::IOAPICID_IDX = 0x00
 
const Index IOAPIC::IOREDTBL_IDX = 0x10
 
const uint8_t IOAPIC::slot_max = 24