| Title: ISR does not save AR0 even though it modifies it. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03144 | Compiler | V4.70 | Fix scheduled to appear in version 4.71e. |
Bug Description
BUG DESCRIPTION
===============
The following ISR does not save AR0 even though
it modifies it. This is a problem with V4.60 and
V4.70.
void *a;
typedef struct
{
int v;
}M;
typedef struct
{
M m;
} dd;
dd D[2];
/* workaround()
{
} */
void c_int01(void)
{
M t;
/* workaround(); */
D[1].m = t;
a = &D;
}
| |||
| Title: Passing -g to asm30 does not work with current Debuggers | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03255 | Compiler | V4.70 | Will fix in a future release |
Bug DescriptionWhen the -g option is used with asm30 or cl30 for assembly files, the assembler places debug information in the COFF file that makes the C3x Debugger V5.00 and the C4x Debugger V2.40 fail. | |||
| Title: opt30 does not recognize the -v32 and -v44 options | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03256 | Compiler | V4.70 | Fix scheduled to appear in version 5.00b. |
Bug DescriptionThe optimizer does not recognize the -v32 or -v44 option. This is true even when the shell, cl30, calls the optimizer, opt30. | |||
| Title: Out of memory error with Win32 and DOS/4GW versions | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03264 | Compiler | V4.70 | Fix scheduled to appear in version 5.00. |
Bug DescriptionThe shell, cl30, will give a "out of memory" error if it is called without a source file on the command line (for example: cl30 -z c30.cmd). This is only a problem with the DOS versions. | |||
| Title: Bug dereferencing a casted pointer to a float member of a struct. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03298 | Compiler | V4.70 | Will fix in a future release |
Bug Description
BUG DESCRIPTION
===============
The compiler produces incorrect code for the following C code
when the following command line is used: cl30 -sn bug.c
It does not correctly dereference a struct ptr to a float
member that is casted to a int pointer.
typedef struct
{
float f;
int i;
} A;
/* Here is the bug */
bug(A *a, int *ptr)
{
ptr[1] = *(int *)&a->f;
/* The bug goes away if -o2 is used */
}
The code produces the following:
;>>>> ptr[1] = *(int *)&a->f;
LDI *-FP(2),AR0
LDI *-FP(3),AR1
LDF *AR0,R0
STI R0,*+AR1(1)
It should produce this:
;>>>> ptr[1] = *(int *)&a->f;
LDI *-FP(2),AR0
LDI *-FP(3),AR1
LDI *AR0,R0
STI R0,*+AR1(1)
| |||
| Title: The compiler incorrectly calculates address for pointer array in loop | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03324 | Compiler | V4.70 | Fix scheduled to appear in version 5.00b. |
Bug DescriptionBUG DESCRIPTION =============== The optimizer incorrectly calculated an address while folding a loop. | |||
| Title: customer has problem compiling following code with v4.70 | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03333 | Compiler | V4.70 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The code example exhibits an error when compiling only on the PC version of the 4.70 copiler. The following command line was used to reproduce the error. cl30 -s -v30 -c -mb -d_C30 -x -o2 -on1 -mn -i. -D_C30 cut4.c | |||
| Title: Compiler generates incorrect code for assign to float point struc mem | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03360 | Compiler | V4.70 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== Compiler generates incorrect code for floating point structure member. | |||
| Title: Incorrect code generated for calls to ISR and functions; ST not popped last | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04215 | Compiler | V4.70 | Will fix in a future release |
Bug Description
Problem:
The ST Flags are Corrupted upon a function call, or ISR.
The following code Fragment is the compiler's generated assembly Return code.
was Generated by version 4.7 CL30, only when the -G option is specified.
pop ST ; Pop all the ST flags
subi 2,SP ; Modify's the ST flags.
pop AR3 ; Modify the ST flags.
reti
The Compiler should be pushing and popping ST first and last,
in order to preserve the ST Flags.
The Problem Can Exist with Function calls or ISR, on Version 4.7 and earlier when -g specified.
Problem has been fixed in version 5.0 CL30
This will only be a problem, if a compare is made before the call,
or when a IRQ is recognized, just after a Compare Instruction, and followed by a Branch
CMPI AR0,AR6 ; The ST Flags will be set accordingly.
--> IRQ jump
BNZD ; Branch is Taking, based on Corrupt Z flag
Workaround: None.
| |||
| Title: TMS320C3x User's Guide documents -gsrev6 switch | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03814 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug DescriptionThe compiler is ignoring the -gsrev option detailed on page 13-8 of the 1997 C3x user's guide. The option is not -gsrev, and the correct option -msrev is not correctly handled. See the fix info for full details. | |||
| Title: Compiler generate "decomposition error" on sample code | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03888 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug Description
Sample code:
------------------------------------------------------------------------------
typedef struct {unsigned int wolf:1;} DK;
DK *pd;
void dcv(void)
{
if (pd->wolf = 1);
}
------------------------------------------------------------------------------
This code generates an internal compiler message:
cl30 dcv.c
[dcv.c]
TMS320C3x/4x ANSI C Compiler Version 5.00
Copyright (c) 1987-1997 Texas Instruments Incorporated
"dcv.c" ==> dcv
TMS320C3x/4x ANSI C Code Generator Version 5.00
Copyright (c) 1987-1997 Texas Instruments Incorporated
"dcv.c" ==> dcv
>> "dcv.c", line 10: COMPILER ERROR: Decomposition error
| |||
| Title: Logical AND operator bug in v. 5.00, works ok in v. 4.70 | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03890 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug DescriptionThere is a design flaw in the internal method for choosing instructions, which makes the TSTB instruction look like an AND instruction rather than a compare instruction (which compares AND a,b to zero). | |||
| Title: C Compilier generates wrong Assembly code for the #line Statement | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03921 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug Description
While the parser is correctly catching most cases such as
this, the codegen will sometimes output negative .line
directives if the body of a function uses #line
pragmas to place it before the header of the function.
The example below will generate a .line -5 for the expression
in the function body.
#line 100
void fred(void)
{
#line 94
a = 2;
}
| |||
| Title: COMPILER ERROR: Unsupported constant operand for LDP | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03982 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug Description
The codegen is generating an internal error ("COMPILER ERROR")
for the sample code. An internal state has reached a
known, but unsupported, value.
| |||
| Title: optimizer generates wrong starting address for structure element | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03985 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug DescriptionThe optimizer is incorrectly calculating the offset of the element inside the inner loop. | |||
| Title: Compiler removes circular buffer references from asm (" ") statements | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04024 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug DescriptionThe codegen is stripping the circular buffer character '%' from the user assembly inserted into C source code, resulting in incorrect assembly when assembly occurs. A workaround is to specify %% instead of just % in the inline asm code. | |||
| Title: pragma DATA_SECTION generates code incorrectly for v5.0 when small mem model | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04084 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
| Title: The year , tm_year, in rts.src will print as 3 digits after year 2000 | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04151 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug DescriptionThe runtime function strftime could display the year incorrectly for a date past the year 1999. The year field will contain 3 digits such as 101, instead of 01 for the year 2001. This could occur in calls to strftime(). | |||
| Title: Compiler generates incorrect code using register passing model. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04155 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug DescriptionWhen using register passing model, the c30 V5.00 compiler will generate invalid offsets to variables in arrays. The compiler will generate code that will erroneously add an offset to itself to calculate an address which will either result in an access to an invalid memory location or unconfigured memory. | |||
| Title: Compiler allocates RS/RC/RE inside interrupt service routines | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04166 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug DescriptionCompiler is allocating incorrect registers during allocation on the C40, including RS, RC & RE during ISRs. | |||
| Title: compiler code calls MOD_I40 instead of MOD_U40 | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04219 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug DescriptionCompiler sometimes incorrectly generates a call to MOD_I40 instead of MOD_U40 when doing a modulo operation on two unsigned numbers. The problem only seems to occur when a pointer is cast to an unsigned type; the compiler works correctly for non-pointer unsigned types. | |||
| Title: Incorrect code generated for array reference using -o2 | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04227 | Compiler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug Description | |||
| Title: Compiler uses inefficient FP divide vs 4.70 | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04257 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionThe compiler is not recognizing that it is quicker to do a multiply by the reciprocal of a constant rather than calling the DIV routine. | |||
| Title: Compiler is generating illegal code. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04338 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug Description
The compiler is creating illegal code of the form
ldi *+ar1(256),Rx
when loading 40 bit long double values. (An offset of
256 is too large.)
There is no known workaround.
| |||
| Title: Compiler does not account for second word of long double when optimizing. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04378 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionIt appears the v5.0 code generator does not check that the second 32-bit float of a long double variable is greater than 256 into the local data set. Therefore it optimizes for indirect accessing, which is fine for the first 32-bit word (i.e. index 255) but is not for the second (index 256). This gives the following error: > TMS320C3x/4x COFF Assembler Version 5.00 > Copyright (c) 1987-1997 Texas Instruments Incorporated > PASS 1 > PASS 2 > ldiu *+ar1(256),r1 ; 40b float lo half > "code.asm", line 95: INDIRECT DISPLACEMENT OUT OF BOUNDS > > 1 Error, No Warnings > > Errors in source - Assembler Aborted Workarounds are to rearrange the variable declarations or to declare the problem variables as volatile. | |||
| Title: ERROR > INCOMPATIBLE ADDRESSING MODES, Only when optimizing, Compiler generates illegal code. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04400 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionThe compiler is generate illegal addressing modes for the TSTB instruction on the C3x. | |||
| Title: Delayed branch optimization when using -mp option does not work very well | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04453 | Compiler | V5.00 | Will fix in a future release |
Bug DescriptionThe delayed branch optimization option in the v5.0 compiler ( -mp) does not always work. | |||
| Title: The RS register is modified in the loop and not restored. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04467 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionCompiler is incorrectly using the RS register within a repeat block, potentially causing premature loop returns. | |||
| Title: compiler generates COMPILER ERROR : no match for ASG | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04524 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionUsing the frieee() intrinsic function for the C40 causes a COMPILER ERROR/INTERNAL ERROR | |||
| Title: Compiler Error: not match for VARADDR. Problem with the compiler when using the _inline option. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04527 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionCompiler gives the error: COMPILER ERROR: no match for VARADDR | |||
| Title: compiling with -o3 option results in an infinite loop. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04532 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionCompiling with -o3 generates infinite loops, where non-constant calls to functions have been removed to outside the loop. | |||
| Title: rptb instruction does not work for single interation of loop | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04737 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionWhen forming a RTPS loop, the compiler's code will always execute at least two times, even when the original iteration count is 1. | |||
| Title: MPY_LD (and DIV_LD) does not preserve R2 or R3 | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04834 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionMPY_LD, DIV_LD, and INV_LD do not properly preserve registers | |||
| Title: compiler generates wrong code when converting literals from float to int | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq05111 | Compiler | V5.00 | Will fix in a future release |
Bug DescriptionCompiler is rounding some floats towards zero, even when -mc flag is used. | |||
| Title: compiler listing file lists conversion information incorrectly | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq05133 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionThe message inside the asm file regarding the global configuration of the float-to-int flag at compile time is not reporting it's state correctly. | |||
| Title: DP is not updated prior to loading far call address | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq05209 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionWhen using the large memory model, the data page pointer is not loaded prior to loading a far call address. The DP is correctly loaded prior to loading a variable, but not loaded prior to loading the address of a function. | |||
| Title: optimizer incorrectly allows memcpy to use rptb/s within repeat loops | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq05227 | Compiler | V5.00 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The optimizer incorrectly allows memcpy to use rptb/rpts within repeat loops. | |||
| Title: optimizer incorrectly allows memcpy to use rptb/s within repeat loops | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq05228 | Compiler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionThe optimizer incorrectly allows memcpy to use rptb/rpts within repeat loops. Additionally, structure copies of exactly 5 words inside a loop might also cause this exact problem. | |||
| Title: Assembler gives cryptic error message for misuse of R11 in 3 operand ins | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03390 | Assembler | V4.70 | Fix scheduled to appear in version 5.00B4. |
Bug Description
BUG DESCRIPTION
===============
The assembler gives cryptic error message:
"filename", line xx: PORTS MUST BE PREDEFINED FOR THIS INSTRUCTION
when R11 is improperly used in a parallel MPYF3 || STF instruction.
i.e. mpfy3 *ar1++(1)%, r6, r11
|| stf r11, *aro++(1)
The proper error message should have been:
"filename", line xx: EXTENDED REGISTER R0 - R7 REQUIRED
| |||
| Title: Assembler Generates incorrect "P" parallel-addressing mode 01 instead of 11 for Parallel MPYF3||SUBF3 -v40 | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03993 | Assembler | V5.00 | Fix scheduled to appear in version 5.01. |
Bug DescriptionIn the V5.00 compiler, for a MPYF3||SUBF3 instruction, the assembler will incorrectly encode the operands on the SUBF3 if they take the form indirect,register,register. It seems the assembler will only encode the operands in parallel addressing mode 0x01, and will not encode parallel addressing mode 0x11. Hence, MPYF3 *AR0,R1,R1 || SUBF3 *AR1,R3,R2 will be incorrectly encoded as 0x858bc0c1. | |||
| Title: PRTS30 macros for SWW control are incorrect | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04164 | Assembler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug Description | |||
| Title: With -mf, compiler generates bad shifts | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04202 | Assembler | V5.00 | Fix scheduled to appear in version 5.02. |
Bug DescriptionWhen compiling the sample code with the -mf option, the X*4 becomes X*0 in the resulting assembly, even though the optimizer comments are correct. | |||
| Title: Assembler swaps operands for MPYF3 || ADDF3 | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04296 | Assembler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionThe assembler is encoding operands for MPYF3 || ADDF3 contrary to the form specified in the User's Guide. | |||
| Title: IDLE instuction code is produced when IDLE2 instruction is assembled | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04676 | Assembler | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionIDLE instuction code is produced when IDLE2 instruction is assembled. | |||
| Title: ADDF does not work correctly, only occurs when the DST starts as a negative number. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04759 | Assembler | V5.00 | Will fix in a future release |
Bug Description
Tools: V5.0
Silicone ID: 2.1
When an Add/Float instruction is preformed, the result is
incorrect. ADDF problem only occurs when the DST starts as a
negative number.
Example:
ADDF 20000000, -.02 results 1.9999998 x10^7
| |||
| Title: Linker core dumps when fill is used in MEMORY directive. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03254 | Linker | V4.70 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The linker core dumps when the fill directive is used. | |||
| Title: fatal error when linking debugger MemBlk saved .obj file on PC | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03988 | Linker | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionWhen any PC tools are used to link one or more object files which, together, contain no relocatable symbols, an internal error is generated which says the tool ran out of memory. There is no workaround, other than to link with another object file which contains a useless relocatable symbol. | |||
| Title: Sometimes the map and stdout do not report the .cinit section. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03247 | Hex Converter | V4.70 | Fix appears in version 5.00. |
Bug DescriptionBUG DESCRIPTION =============== Under some situations after using the -cr (RAM initialization - initialization by loader) option with the Linker, hex30 will fail to specify to stdout and the hex30 map file that the .cinit section is being placed in the hex output. | |||
| Title: Hex conversion utility reports error when using -cr option | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03354 | Hex Converter | V4.70 | Fix appears in version 5.00B1. |
Bug DescriptionBUG DESCRIPTION =============== Hex utility reports an error when -cr option is used. | |||
| Title: Hex30 -byte option, doesn't work with 5.0 , worked fine with 4.7 see detail file's. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03910 | Hex Converter | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionThe hex utility is not calculating byte offsets correctly for all memory and rom widths. | |||
| Title: ver 4.7 of PRTS40.SRC changed and there is no documentation | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03429 | PRTS40 | V4.70 | Will fix in a future release |
Bug Description
BUG DESCRIPTION
===============
This is a documentation bug in the TMS320C4x Parallel Runtime Support
Library User's Guide. Pg 4-64 describes the function install_int_vector
to be :
void install_int_vector(void *isr, int N);
This has changed in v4.7. The file prts40.src in v4.7 has it defined as
typedef void (*ISR_FnPtr)(void);
void install_int_vector(ISR_FnPtr ISRFnPtr, int N);
The correct syntax for using it in the customer's code, is
install_int_vector ((ISR_FnPtr) c_int04, 0x04);
| |||
| Title: C4x 32-Bit FP Divide Routine DIV_F40 has error | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04172 | RTS | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionThe DIV_F40 routine will sometimes return answers which are less precise than they could be due to noise in the lower bits of the floating point register. For example, the following code will print a value that is not quite 1.0 because of this. #include | |||
| Title: RTS has general errors/nuisances | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04298 | RTS | V5.00 | Fix scheduled to appear in version 5.10. |
Bug DescriptionThe RTS has some errors/nuisances. | |||
| Title: The declaration (prototype) of ltoa() should be in stdlib.h and is missing | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04702 | RTS | V5.00 | Will fix in a future release |
Bug DescriptionThe function ltoa() is not prototyped in any RTS header file, and the user thinks it should be according to ANSI's need to have all functions prototyped. However, ltoa is a non-ANSI, non-standard routine, used internally by other portions of the library. Users should use sprintf(), which is an ANSI function. If users still want to use ltoa(), they will need to declare it themselves. | |||
| Title: Using disp on structures with bit fields does not work correctly. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03166 | Debugger | Vx.xx | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The disp command gives incorrect results for structure bit fields. | |||
| Title: OSC demo needs modifications | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02183 | C30 EVM | V5.00 | Fix appears in version Buglist. |
Bug DescriptionBUG DESCRIPTION =============== The OSC (Oscilloscope) application demo that used to ship with the EVM and is now available on the BBS does not work properly when compiled with V4.60 of the C Compiler/Assembler/Linker. | |||
| Title: GP Error with Windows XDS510 Debugger when using sload on large file | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02315 | C30 Emulator | V5.00 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== When loading the symbol table (sload or load) of a large COFF file, V5.00 of the Windows XDS510 and EVM Debuggers give a GP Fault error message. | |||
| Title: Bug with "run 1" command with RPTS | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02597 | C30 Emulator | V5.00 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The command "run 1" does not work correctly with a RPTS instruction with V5.00 of the C3x EVM and XDS510 Debuggers. | |||
| Title: The debugger watch window does not display the function arguments correctly when register argument runtime model is used. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04580 | C40 Emulator | V2.50 | Will fix in a future release |
Bug Description
The debugger watch window does not display the function arguments
correctly, when a function call is made using the register argument
runtime model:
The code below executes correctly, but if a break point is put in the
add_args() function and the variables a1 thru a10 are put in a watch
window, then a1 thru a6 which were passed in registers AR2, R2, R3, RC,
RS, and RE are displayed correctly, but the values for a7 thru a10 are
displayed as follows:
a7 -> 0x002FF81D a8 -> 7 a9 -> 8 a10 -> 9
NOTE: The value displayed for a7 is the return address after the
call to add_args()!
/* Function prototype */
int add_args(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8,
int a9, int a10);
main()
{
int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10;
int result;
/* Initialize variables */
result = 0;
i1 = 1;
i2 = 2;
i3 = 3;
i4 = 4;
i5 = 5;
i6 = 6;
i7 = 7;
i8 = 8;
i9 = 9;
i10 = 10;
/* Important point to note: i1 thru i6 will be passed in registers,
** i7 thru i10 will be passed on the stack. */
result = add_args(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
/* BREAK POINT on return statement below. WATCH result. It will contain
** a 55 as expected. Code ran correctly, but values of WATCH on
** a7 thru a10 were in add_args() function were wrong.
*/
return;
}
/*
** Value displayed for a7 will be garbage, value displayed for a8 will be what
** was expected for a7, ....... value displayed for a10 will be what was
** expected for a9.
*/
int add_args(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8,
int a9, int a10)
{
int j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, sum, sum1;
sum = 0;
sum1 =0;
/* Put a BREAK POINT at the line above.
** Using your debugger, WATCH a1 thru a10 in a watch window.
** Expect WATCH window values for a1 thru a10 to be 1, 2, ... 10 as passed
** in call to function.
**
** a1 thru a6 will watch values will be 1, 2, ...6. GOOD so far!
** a7 watch value will be junk! BAD BUG
** a8 watch value will be 7. BAD BUG
** a9 watch value will be 8. BAD BUG
** a10 watch value will be 9. BAD BUG
**
*/
/* Copy arguments to local variables */
j1 = a1;
j2 = a2;
j3 = a3;
j4 = a4;
j5 = a5;
j6 = a6;
j7 = a7;
j8 = a8;
j9 = a9;
j10 = a10;
/* Put a BREAK POINT at following line and watch j1 thru j10. Correct
** values 1 thru 10 will be displayed. GOOD.
*/
sum = j1 + j2 + j3 + j4 + j5 + j6 + j7 + j8 + j9 + j10;
sum1 = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10;
/* Put a BREAK POINT on return statement below.
** WATCH sum and sum1, both will contain the correct value
** 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
*/
return sum1;
}
| |||
| Title: v2.5 of the OS2/C40 emulator does not work with rev 5 silicon | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq05440 | C40 Emulator | V2.50 | Will fix in a future release |
Bug DescriptionThe OS/2 version of v2.5 C4x emulator may not work with Rev 5 C40 silicon. The emulator may give a 'target error' message. | |||
| Title: Patch assembly requires operand for NOP. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq05510 | C40 Emulator | V2.50 | Will fix in a future release |
Bug DescriptionWhen you try to use patch assembly on the OS/2, DOS32, or sun4 version of the c4x emulator to insert a NOP, the emulator gives an error that a NOP requires a src operand. The src operand is optional in a NOP. nop ^ ERROR : OPERAND MISSING Workarounds are to use: 1) ? *0xaddress = 0x0c800000 ; adds NOP at address. 2) Go to memory window and change value at address to 0x0c80000 | |||
| Title: Documentation Bugs with C3x Debugger | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq01966 | C30 Simulator | V2.20 | Will fix in a future release |
Bug Description
BUG DESCRIPTION
===============
spru053b TMS320C3x C Source Debugger User's Guide
P5-15 mc 0x808048,xdat,WRITE
mc 0x80804C,rdat,READ
should read:
mc 0x808048,rdat,WRITE
mc 0X80804C,xdat,READ
P5-18 pinc myfile,int2
should read:
pinc int2,myfile
P11-25 Need to add new type field: TX (memory may contain code)
| |||
| Title: The simulator incorrectly loads the .xref copy section. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq01980 | C30 Simulator | V2.20 | Fix scheduled to appear in version 2.21e. |
Bug DescriptionBUG DESCRIPTION =============== When using the -x option with asm30 or the -ax option with cl30, a COPY section with the cross reference information is included in the COFF file. Although the COPY section is not supposed to be loaded, TI loaders with core debugger versions older than 3.33 will attempt to load the section (Using "version+" on the debugger command line will tell you the debugger core version). The C3x Simulator V2.20 loader has the problem and the C4x Simulator V1.30/V1.31 has the problem. The following loaders do NOT have the problem: C4x XDS510/XDS510WS Debugger V2.40 and C3x XDS510/XDS510WS Debugger V5.00. | |||
| Title: Timer interrupt ignored when executing an infinite loop with BD. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02066 | C30 Simulator | V2.20 | Will fix in a future release |
Bug Description
BUG DESCRIPTION
===============
A simulator bug is causing the following code to ignore all interrupts:
L2: BD L2
LDI *+FP(2),R0
NOP
STI R0,*+FP(1)
The code should disable interrupts until the delayed branch completes, but
when it branches back to itself it should be checking for new interrupts and
it is not. If you do not idle in a loop with a delayed branch, the simulator
does not have this problem.
| |||
| Title: Documentation error about the file command. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02067 | C30 Simulator | V2.20 | Will fix in a future release |
Bug Description
BUG DESCRIPTION
===============
The 1993 C Source Debugger User's Guide states that when using the file
command, you can use the D_SRC environment variable, -i option or use
command to specify the path (P6-11). This is misleading.
If the -g option is used with the compiler, the COFF file will contain
debugger information. When this COFF file is loaded into the Simulator,
the Simulator will automatically open the current source file without using
the file command. In order for the debugger to find the file, one of the
following must occur:
o The *.c files are in the same directory as the COFF output file
o The paths of the *.c files are included in the D_SRC environment
variable.
o The paths of the *.c files are included on the command line with
the -i option.
o The use command can be used to specify the path of the *.c files
(only one directory at a time).
If the file command is used to open a text file, the entire path is always
needed unless the file is in the current directory.
The same problem exists in the C4x and C5x C Source Debugger User's Guides.
| |||
| Title: SPORT does not work when FSX is an input pin | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02610 | C30 Simulator | V2.20 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== When the FSXOUT bit (SPORT Global Control Register bit 2) is configured for the FSX to be an input pin (FSXOUT=0), the SPORT does not work properly. | |||
| Title: Some problems with the Simulator. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02781 | C30 Simulator | V2.20 | Will fix in a future release |
Bug Description
BUG DESCRIPTION
===============
C3x simulator does not handle register conflicts in the pipeline after
a parallel store instruction properly. The simulator takes the old
value of the conflicting register.
An example section of asm is given below:
STI R1,*+FP(2)
ANDN R1,R0,R2
STI1 R2,*+FP(1) || STI2R2,*AR0
LDI @CONST+2,AR1
LDI *AR1,R0 ; Sim used old value of AR1 here
The simulator blows up on the last access - the one that
implements the circular buffer - if the BK register contains 0.
| |||
| Title: multiple MA Errors ,Sim3xW.exe when loading the siminit.cmd file. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq04174 | C30 Simulator | V2.20 | Will fix in a future release |
Bug DescriptionGetting multipule errors when using the windows version of the C3x Simulator: ;Loading file.out ; 473 Symbols loaded ; --- Memory access outside valid range: 00880000 ;Check memory map ;Name "main" not found ;Undeclared port address ;Undeclared port address ;Name "check_for_message" not found The DOS version, which uses the same siminit.cmd works Fine. | |||
| Title: Bug with LBx/STI/LBx code segment" | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02068 | C40 Simulator | V1.30 | Will fix in a future release |
Bug Description
BUG DESCRIPTION
===============
The Simulator incorrectly handles the following code segment. When single-
stepping through the program, it seems to do the first store correctly, but
when the next instruction (lb1 r0, r1) is executed, the memory location to
where the store occurred is reset to 0h.
_c_init00 ldp data_addr
ldi 02244h, r0
ldi @data_addr, ar1
lb0 r0, r1
sti r1, *ar1++
;nop
lb1 r0, r1
sti r1, *ar1++
br _c_init00
If a nop is placed after the first sti instruction, the first sti
works correctly. The second sti always works correctly.
This bug only occurs if the code is being executed from internal memory.
It does not seem to matter if the store is made to internal or external
memory.
| |||
| Title: "ma 0x83000000,1,writeonly" does not work. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02070 | C40 Simulator | V1.30 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The ma command does not seem to work with the "writeonly" type parameter. ma 0x83000000,1,writeonly fill 0x83000000,1,10 wa *0x83000000 The intent of "writeonly" was to allow the Debugger to read and write that memory, but to fail if an instruction attempted to write to that memory location. | |||
| Title: The ROMEM psuedoregister is not documented. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02172 | C40 Simulator | V1.30 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The ROMEN pseudoregister is not documented. | |||
| Title: RCPF and RSQRF instructions do not work correctly. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02185 | C40 Simulator | V1.30 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The RSQRF and the RCPF instructions do not work properly. The vales returned are not correct. In fact, they both return 32-bit results instead of 16 bit results. RSQRF 4ccccc00h instead of 4d000000h RCPF 23d70800h instead of 24000000h | |||
| Title: Bug with SET COND bit in ST register | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02778 | C40 Simulator | V1.30 | Will fix in a future release |
Bug Description
BUG DESCRIPTION
===============
The simulator does not work correctly for the insstruction after the
SET COND bit in the Status register is set.
This program does not work properly. It should branch to START and not
reach END since the SET COND bit is set in the ST register.
.global START
START
LDI 0, BK
OR 8000h, ST
LSH -12,BK,IR0
BZD START
NOP
NOP
NOP
END B END
This program works since it seems that the problem is that the new SET COND
is not realized in the instruction following the instruction that sets the
bit:
.global START
START
LDI 0, BK
NOP
OR 8000h, ST
LSH -12,BK,IR0
BZD START
NOP
NOP
NOP
END B END
| |||
| Title: Bug with TOIEEE instruction | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02779 | C40 Simulator | V1.30 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The TOIEEE instruction does not work properly with the following floating point values: 0, -0.5, -1.0, -0.625, -0.03125. The answers should be 00000000h, be000000h, be800000h, bc800000h, bc000000h, respectively. | |||
| Title: Some problems with the DMA and communication ports. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02780 | C40 Simulator | V1.30 | Will fix in a future release |
Bug Description
BUG DESCRIPTION
===============
The simulator fails to properly execute DMA autoinitialization when:
1. the first transfer in an autoinit sequence is complete
2. the control word pointed to by the link pointer
has transfer mode set to 11 (DMA stops after transfer
is complete and does not perform next autoinit until
CPU restarts by writing ones into START bits of DMA
control register).
If the DMA is operating in split mode with only the primary
channel output FIFO connected to a file, the auxiliary channel
does not autoinitalize and the primary channel does not proceed.
With DMA operating in split mode, and both channels autoinitializing
the primary channel goes ahead of auxiliary channel. Is should be
a one-one situation.
The primary comm port does not continue after the auxilary comm
port has stopped.
| |||
| Title: DMA rotating priority mode does not work | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq02913 | C40 Simulator | V1.30 | Will fix in a future release |
Bug DescriptionBUG DESCRIPTION =============== The C4x SPARC and PC Simulators do not handle the DMA rotateing priority correctly. When the PRIORITY MODE bit is set to 0 in the DMA channel 0 Control Register, the Simulator uses the fixed priotity mode. | |||
| Title: sconfig command fails with V1.30 Windows Debugger. | |||
| Bug # | Tool | Version | Fixed? |
|---|---|---|---|
| SDSsq03267 | C40 Simulator | V1.30 | Will fix in a future release |
Bug DescriptionThe sconfig (Load Screen Configuration) command on the Windows V1.30 Simulator causes a GP fault. | |||
| Device: TMS320C3x
Device: TMS320C4x Category: TI Tools |
Title: Floating Point
Bug List
Source: TI SDS Autogen Errata List GenId: floatbug |