Commit 2ddf5f12 authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

lib/nicbm: add support for legacy interrupts

parent 1576ecf9
...@@ -233,6 +233,21 @@ void Runner::MsiXIssue(uint8_t vec) { ...@@ -233,6 +233,21 @@ void Runner::MsiXIssue(uint8_t vec) {
SIMBRICKS_PROTO_PCIE_D2H_OWN_HOST; SIMBRICKS_PROTO_PCIE_D2H_OWN_HOST;
} }
void Runner::IntXIssue(bool level) {
volatile union SimbricksProtoPcieD2H *msg = D2HAlloc();
#ifdef DEBUG_NICBM
printf("nicbm: set intx interrupt %u\n", level);
#endif
volatile struct SimbricksProtoPcieD2HInterrupt *intr = &msg->interrupt;
intr->vector = 0;
intr->inttype = (level ? SIMBRICKS_PROTO_PCIE_INT_LEGACY_HI
: SIMBRICKS_PROTO_PCIE_INT_LEGACY_LO);
// WMB();
intr->own_type = SIMBRICKS_PROTO_PCIE_D2H_MSG_INTERRUPT |
SIMBRICKS_PROTO_PCIE_D2H_OWN_HOST;
}
void Runner::EventSchedule(TimedEvent &evt) { void Runner::EventSchedule(TimedEvent &evt) {
events_.insert(&evt); events_.insert(&evt);
} }
......
...@@ -161,6 +161,7 @@ class Runner { ...@@ -161,6 +161,7 @@ class Runner {
void IssueDma(DMAOp &op); void IssueDma(DMAOp &op);
void MsiIssue(uint8_t vec); void MsiIssue(uint8_t vec);
void MsiXIssue(uint8_t vec); void MsiXIssue(uint8_t vec);
void IntXIssue(bool level);
void EthSend(const void *data, size_t len); void EthSend(const void *data, size_t len);
void EventSchedule(TimedEvent &evt); void EventSchedule(TimedEvent &evt);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment