icss_program_flow_macros.inc
DRAM Memory Used

8 Bytes

Macros
m_polling_check

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
Parameters
POLLING_TASK

Task to jump to in case data is present

temp_reg

Temporary register (32 bit)

m_jump_to_task

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))
Parameters
sections

Total number of code sections

temp_reg

Temporary register (32 bit)

SECTIONn

SECTIONn symbol to jump to if the value is SECTIONn_ID

m_clr_prgm_flow_mem

Clear RSV_PRGM_FLOW_MEM

PEAK cycles: 4 cycle

Pseudo code:

DRAM(RSV_PRGM_FLOW_MEM + RSV_PRGM_FLOW_MEM_OFFSET) = 0
Parameters
temp_reg

Temporary register (32 bit)

m_prgm_flow_jump_on_intr

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
Parameters
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