P in all of its forms (
p31_16, and so on) are all available for inline assembly essentially without any issues.
B register is used as a temporary location in expression processing. It is usually freed by the end of a C statement, allowing inline assembly.
read_match() intrinsic function.
There are a few ways:
You can pass information through static locals. The host sets these itself, during initialization.
::ETPUlocationmacro to identify the offset of the static in the function frame. Rather than assigning the value in
::ETPUstaticinitwhich comes from the eTPU_C program, simply set your own initial value.
There are two other exception types: channel interrupts and data transfer interrupts. In those devices without DMA hardware, the two are indistinguishable. Assign values 0 or 1 to
channel.CIRC, or use these macros from
// Channel control macros #define SetChannelInterrupt() (channel.CIRC = 0) #define SetDataTransferInterrupt() (channel.CIRC = 1)
The eTPU requires a value of 0x02 in the CIRC instruction field.
In C, CIRC is part of the
channel.CIRC = 0x02
Alternatively, use a macro from
#define SetGlobalException() (channel.CIRC = 2)
The simulator warns about an MDU paired with a CCS subinstruction. It calls the choice "puzzling". What's wrong?Submitted by Kirk Zurell on Thu, 2007-11-22 15:03. eTPU_C
This is effectively a "don't care" operation. The MDU flags are always preserved. The compiler uses CCS for all math operations, except where explicitly disabled by optimization.
As efficiently as possible. Bit fields are packed within 32-bit boundaries. Packed bit fields can have a dramatic impact on the amount of code generated.
This example declares two structs, one with less than 32 bits of bit fields, and one with more.
This warning can occur when #pragma memory RAM or #pragma memory LOCAL directives declare RAM that doesn't start on a 4-byte boundary. Variable declarations will try to allocate locations partly outside of declared RAM space
The compiler has optimized a local variable into a register. I'd prefer it take a memory location. How can I change this?Submitted by Kirk Zurell on Thu, 2007-11-22 14:59. eTPU_C
The compiler has correctly optimized the variable into a register because it could do so. Declare the variable as a static variable, and eTPU_C will be forced to allocate a location.
Due to implementation limitations, signed divides are not available.