1
Files
interrupt-handling-using-th…/code/lapic_sipi_example.cpp
2023-02-26 21:12:51 +01:00

12 lines
567 B
C++

void LocalApic::issueSIPI(uint8_t cpuId, uint32_t page) {
ICREntry icrEntry{};
icrEntry.vector = page;
icrEntry.deliveryMode = ICREntry::DeliveryMode::STARTUP;
icrEntry.destinationMode = ICREntry::DestinationMode::PHYSICAL;
icrEntry.level = ICREntry::Level::ASSERT;
icrEntry.triggerMode = ICREntry::TriggerMode::EDGE;
icrEntry.destinationShorthand = ICREntry::DestinationShorthand::NO;
icrEntry.destination = cpuId;
writeICR(icrEntry); // Writing the ICR issues an IPI
}