This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Possible TMS470 OMAP Cortex A8 compiler bug in prolog and epilog code generation

Other Parts Discussed in Thread: OMAP3530

I am using CCSv4 for ARM C/C++ development for the OMAP3530.

CG Tool version TI v4.6.1

Device Variant Generic Cortex A8 Device

I have enable VFPv3 support.

I think there is an error in the compiler generated prolog and epilog code when pragma INTERRUPT is used

Please see code below generated by the compiler

#pragma INTERRUPT(FIQ)
void FiqHandler()
{
 HandleFiq();
}

            FiqHandler:
0x40200234:   E92D400F STMFD           R13!, {R0, R1, R2, R3, R14}
0x40200238:   ED2D0B20 FSTMDBD         R13!, {D0-D15}
0x4020023C:   ED6D0B20 FSTMDBD         R13!, {D16-D31}
0x40200240:   E24DD004 SUB             R13, R13, #4
0x40200244:   EB00000E BL              0x40200284
0x40200248:   E28DD004 ADD             R13, R13, #4
0x4020024C:   ECBD0B20 FLDMIAD         R13!, {D0-D15}
0x40200250:   ECFD0B20 FLDMIAD         R13!, {D16-D31}
0x40200254:   E8BD400F LDMFD           R13!, {R0, R1, R2, R3, R14}
0x40200258:   E25EF004 SUBS            PC, R14, #4

 

The code pushes D0-D15 first but then pops it on to D16-D31. Could someone verify if this iscorrect or if there is bug in the compiler.