12 lines
567 B
C++
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
|
|
}
|