AnsweredAssumed Answered

TigerSHARC TS201 Interrupt Prologue/Epilogue

Question asked by Joel.K on Nov 19, 2013
Latest reply on Nov 22, 2013 by Joel.K

For the TS201, I have a C function that I want to use as an ISR. I have used #pragma interrupt_reentrant to do this. Now I want to take the assembler code generated by the C compiler and use that via inline assembler code instead of using the C pragma.

 

I have some questions about the ISR prologue/epilogue code generated by the compiler.

 

The prologue starts as follows.

nop;  nop;  nop;  nop;;

[j27 += 0XFFFFFF80] = cjmp;;

Q [j27 + 0XC] = j27:24;;

 

1. What is the purpose of the first instruction line full of nops?

 

 

My ISR calls another function. The generated code around the call looks like this:

 

IF true, CALL IntHandlerHw;  Q [j27 + 0X4] = j27:24;  Q [k27 + 0X4] = k27:24;;

nop;  nop;;

IF true, JUMP 0x1;;

cjmp =  [j26 + 0X40];;

xr3:0 = Q [j27 + 0X48];;

xtr3:0 = r3:0;;

 

2. What is the purpose of the line of two nops?

 

3. What is the purpose of the IF true, JUMP 0x1 instruction? Actually, I have seen this often in the compiler-generated assembler code, not just in ISRs.

 

Thanks,

Joel

Outcomes