Previous - Up - Next

SIM_instruction_is_sync()

NAME
SIM_instruction_is_sync — check for sync instruction

SYNOPSIS
int
SIM_instruction_is_sync(instruction_id_t ii);

DESCRIPTION
Some instructions need to synchronize the pipeline and cannot run out of order. This function checks if the instruction identified by ii needs to synchronize the CPU. Such instructions need to be executed non-speculatively. The reason for this limitation is that synchronizing instructions may update CPU state that cannot be restored.

There are currently two types of synchronizing instructions, category 1 and category 2. An instruction in category 1 can only be executed if all previous instructions in the tree has been executed (reached the Sim_Phase_Executed) non-speculatively. An instruction in category 2 has to be alone in the instruction tree to be able to execute.

Note that this is a Simics limitation and not an architectural limitation. The instructions that can execute out of order may change in future.

EXCEPTIONS
Index Thrown if ii is illegal.
RETURN VALUE
1 for category 1, 2 for category 2, and 0 for non-synchronous.

Previous - Up - Next