A user has a register in a bank implementing a read method through the io_memory interface. The memory operation is served by a memory link returning Sim_PE_Stall_Cpu on the first attempt. At first glance, he doesn’t see a way to propagate the stall exception upwards.
The main question:
How could he forward the stall exception to the caller of the register operation so it can retry?
More details:
Here is a piece of the read method he wants to implement:
method read() {
ex=$io_memory.operation(&mop,info);
if(ex==SIM_PE_Stall_Cpu )
**# What to do here to inform the reader about the stall?**
}
I have also attached the following file with pseudo-code to understand better what he wants to get in his DML: stall-sample.dml
Looking at the attached DML script, the customer has two devices. Here are more details about what the customer wants:
Device 1:
- To implement a read method from which it is possible to check if Sim_PE_Stall_Cpu occurs on Device 2.
Device 2:
- To implement a before_read method, including a mechanism to enable Device 1 to see the stall when Sim_PE_Stall_Cpu is gotten on Device 2.
- To implement a read method where it’s possible to get Sim_PE_Stall_Cpu from a memory link.
- To forward the stall exception to the caller of the register operation so it can retry.
I checked the content of the pci-device source files, but there is nothing to be considered useful for the use case described by the user.
I’d appreciate any suggestions on this topic.
Thanks,
-JC