ecall is a sync exception and once we call an ecall from another ecall it immediately jumps to the ecall.
But is there any mechanism to postpone this until the active ecall is done?
For example, we might set a pending flag for next ecall and once the first ecall returns (mret), then the second ecall could be immediately triggered.
As I see, there is a register called mip which keeps pending flags but the spec says, in machine mode we cannot set “Machine SW Interrupt Pending Flag (mip.MSIP)”
"> Only the bits corresponding to lower-privilege software interrupts (USIP, SSIP), timer interrupts (UTIP,*
STIP), and external interrupts (UEIP, SEIP) in mip are writable through this CSR address; the
remaining bits are read-only."
Is there a way to do that or should we call handle just before return the first ecall?