This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

When does ITAdvance() pseudo-function Exactly called ?

ITSTATE advances after normal execution of an IT block instruction. This is described by the ITAdvance() pseudocode
function:


// ITAdvance()
// ===========
ITAdvance()
if ITSTATE<2:0> == '000' then
ITSTATE.IT = '00000000';
else
ITSTATE.IT<4:0> = LSL(ITSTATE.IT<4:0>, 1);

Now my question Does The function ITAdvance() called only after execution of an instruction only in IT Block or after any instruction execution even if it is not in an IT Block .. (being in IT block or not is checked by the least 4 significant bits of ITSTAT register) .... I couldn't find it in the operation pseudo code of any instruction  of the ARMv7 manual

Thanks

Parents
  • Hi,

    Most of the general pseudoscode towards the end of the manual isn't related to a specific instruction but cover the operation of the processor, accessing memory, taking exceptions etc.

    ITAdvacnce()  is "called" between instructions so won't be in the operation of any particular instruction but you can see it being called in some exception behaviors, ie TakeSVCException()

    The ITSTATE needs to be updated after an instruction in the IT block completes, see A2.5.2 IT block state register, ITSTATE in the v7 Arm ARM.

    Hope that helps,

    Pete.

Reply
  • Hi,

    Most of the general pseudoscode towards the end of the manual isn't related to a specific instruction but cover the operation of the processor, accessing memory, taking exceptions etc.

    ITAdvacnce()  is "called" between instructions so won't be in the operation of any particular instruction but you can see it being called in some exception behaviors, ie TakeSVCException()

    The ITSTATE needs to be updated after an instruction in the IT block completes, see A2.5.2 IT block state register, ITSTATE in the v7 Arm ARM.

    Hope that helps,

    Pete.

Children