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.

CCS/SYSBIOS: C2000 VCU reentrancy fix in SYS/BIOS

Part Number: SYSBIOS

Tool/software: Code Composer Studio

SYS/BIOS release contains fix for issue SYSBIOS-1199 on C2000.

However, on a 28377 CPU, I believe instructions for saving/restoring VCU context are not compiled in the dispatcher code.

In Hwi_disp_asm.s28:

dispatchRet    .macro      ; epilog of dispatcher where we return

        ; After dispatchC is called, restore C context
        pop     @sp

    .if (.TMS320C2800_FPU64 == 1)
    .if (.TMS320C2800_VCRC == 1)
    .if (ti_sysbios_family_c28_Hwi_regsVCRC__D)
        ; Restore VCRC registers
        vmov32  VCRCSIZE, *--sp
        vmov32  VCRCPOLY, *--sp
        vmov32  VSTATUS, *--sp
        vmov32  VCRC, *--sp
        ; Restore FPU64-only registers
        mov32   r3l, *--sp
        mov32   r2l, *--sp
        mov32   r1l, *--sp
        mov32   r0l, *--sp
    .if (.TMS320C2800_FPU32 == 1)
        ; Restore FPU32 registers (also applies for FPU64)
        mov32   r3h, *--sp
        mov32   r2h, *--sp
        mov32   r1h, *--sp
        mov32   r0h, *--sp
        mov32   stf, *--sp

Looks like VCU context save is nested inside FPU64 conditional?

28377 CPU does not have FPU64, but does have a VCU.

Should these conditionals be at the same level?

  • I agree that this doesn't seem correct--this seems like it would only be applicable to the F2838x which has both FPU64 and VCRC. I think in addition to putting the conditionals at the same level, there should be a condition for VCU0 and VCU2 (which you have on your F2837x device) which only have VSTATUS and VCRC.

    I'll file a bug report.