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 |