8 Bytes
Check if there is some data to act upon in RSV_PRGM_FLOW_MEM
PEAK cycles: 4 cycle
Pseudo code:
if !(DRAM(RSV_PRGM_FLOW_MEM + RSV_PRGM_FLOW_MEM_OFFSET))
GOTO POLLING_TASK
| POLLING_TASK | Task to jump to in case data is present |
| temp_reg | Temporary register (32 bit) |
Jump to the respective code section according to the value in RSV_PRGM_FLOW_MEM
PEAK cycles: (3 + total sections) cycle (can be reduced by dividing into odd and even sections)
Pseudo code:
GOTO SECTION(DRAM(RSV_PRGM_FLOW_MEM + RSV_PRGM_FLOW_MEM_OFFSET))
| sections | Total number of code sections |
| temp_reg | Temporary register (32 bit) |
| SECTIONn | SECTIONn symbol to jump to if the value is SECTIONn_ID |
Clear RSV_PRGM_FLOW_MEM
PEAK cycles: 4 cycle
Pseudo code:
DRAM(RSV_PRGM_FLOW_MEM + RSV_PRGM_FLOW_MEM_OFFSET) = 0| temp_reg | Temporary register (32 bit) |
Check interrupt status on INTR_BIT of register R31. This will be set by other core to indicate this core to jump to a different code section for execution.
PEAK cycles: 4 cycle
Pseudo code:
__R31(INTR_BIT) == 1| EVENT_NUM | Interrupt event number |
| INTR_BIT | Interrupt bit on R31 register where interrupt status will be available |
| sections | Total number of code sections |
| temp_reg | Temporary register (32 bit) |
| SECTIONn | SECTIONn symbol to jump to if the value is SECTIONn_ID |