StuBS
lapic.cc File Reference
Include dependency graph for lapic.cc:

Classes

struct  LAPIC::SpuriousInterruptVectorRegister.__unnamed39__
 

Namespaces

namespace  LAPIC
 Abstracts the local APIC (which is integrated into every CPU core)
 

Enumerations

enum  LAPIC::Model {
  LAPIC::CLUSTER = 0x0 ,
  LAPIC::FLAT = 0xf
}
 
enum  LAPIC::APICSoftware {
  LAPIC::APIC_DISABLED = 0 ,
  LAPIC::APIC_ENABLED = 1
}
 APIC Software Status for Spurious Interrupt Vector. More...
 
enum  LAPIC::FocusProcessorChecking {
  LAPIC::CHECKING_ENABLED = 0 ,
  LAPIC::CHECKING_DISABLED = 1
}
 Focus Processor Checking for Spurious Interrupt Vector. More...
 
enum  LAPIC::SuppressEOIBroadcast {
  LAPIC::BROADCAST = 0 ,
  LAPIC::SUPPRESS_BROADCAST = 1
}
 Suppress End-Of-Interrupt-Broadcast for Spurious Interrupt Vector. More...
 

Functions

Register LAPIC::read (Index idx)
 Get value from APIC register.
 
void LAPIC::write (Index idx, Register value)
 Write value to APIC register.
 
uint8_t LAPIC::getID ()
 Get the ID of the current core's LAPIC.
 
uint8_t LAPIC::getLogicalID ()
 Get the Logical ID of the current core's LAPIC.
 
uint8_t LAPIC::getVersion ()
 Get version number of local APIC.
 
void LAPIC::init (uint8_t logical_id)
 Initialized the local APIC of the calling CPU core and sets the logical LAPIC ID in the LDR register.
 
void LAPIC::endOfInterrupt ()
 Signalize EOI (End of interrupt)
 

Constants

volatile uintptr_t LAPIC::base_address = 0xfee00000
 Base Address used with offset to access memory mapped registers.
 

Class Documentation

◆ LAPIC::SpuriousInterruptVectorRegister.__unnamed39__

struct LAPIC::SpuriousInterruptVectorRegister.__unnamed39__
Class Members
uint32_t spurious_vector: 8 Spurious Vector.
APICSoftware apic_software: 1 APIC Software Enable/Disable.
FocusProcessorChecking focus_processor_checking: 1 Focus Processor Checking.
uint32_t reserved_1: 2
SuppressEOIBroadcast eoi_broadcast_suppression: 1
uint32_t reserved:19