SPRU514Y August 2001 – June 2022
All data shared between the CLA and C28x CPUs must be defined in the C28x C or C++ code, and not defined in the CLA code (that is, not in *.cla files). This is required because shared variables defined in CLA code may not be blocked properly, which may cause variable accesses on the C28x to not set the DP correctly. See Section 4.12 for information about blocking and the DP register for both COFF and EABI. The linker provides a diagnostic message if blocked data access is attempted on non-blocked data.
The following data types are supported:
Type | EABI Size (bits) | COFF Size (bits) |
---|---|---|
char | 16 | 16 |
short | 16 | 16 |
int | 32 | 32 |
long | 32 | 32 |
long long | 64 | 32 |
float | 32 | 32 |
double | 64 | 32 |
long double | 64 | 32 |
pointer | 16 | 16 |
A char/short should be limited to load/store operations.
Pointer sizes for CLA are always 16-bits. This differs from C28x, which has 32-bit pointers.
The size of an int for CLA is 32 bits instead of the 16-bit size on the C28x. To avoid ambiguity when sharing data between CLA and C28x, we strongly recommend that you use C99 type declarations that include size information (for example, int32_t and uint16_t).
When using the COFF ABI, the CLA compiler does not support 64-bit types.