Short version:
Compiling a file with -mv6443 produces code for TMS320C64xx architecture.
Since DM6443 supports C64x+, I would have expected code for TMS320C64x+.
Is this a compiler bug?
Longer version:
Compiling for 6443:
$ ~/c6_6.1.22/bin/cl6x -k -mv6443 irq.c
gives irq.asm:
#####
;******************************************************************************
;* TMS320C6x C/C++ Codegen Unix v6.1.22 *
;* Date/Time created: Fri Sep 28 16:29:47 2012 *
;******************************************************************************
.compiler_opts --c64p_l1d_workaround=default --endian=little --hll_sourc
e=on --mem_model:code=near --mem_model:const=data --mem_model:data=far_aggregate
s --silicon_version=6443 --symdebug:skeletal
;******************************************************************************
;* GLOBAL FILE PARAMETERS *
;* *
;* Architecture : TMS320C64xx *
######
Compiling for generic c64+:
$ ~/c6_6.1.22/bin/cl6x -k -mv64p irq.c
gives:
######
;******************************************************************************
;* TMS320C6x C/C++ Codegen Unix v6.1.22 *
;* Date/Time created: Fri Sep 28 16:31:53 2012 *
;******************************************************************************
.compiler_opts --c64p_l1d_workaround=default --endian=little --hll_sourc
e=on --mem_model:code=near --mem_model:const=data --mem_model:data=far_aggregate
s --silicon_version=6500 --symdebug:skeletal
;******************************************************************************
;* GLOBAL FILE PARAMETERS *
;* *
;* Architecture : TMS320C64x+ *
#####
Compiling this (that use c64x+ only intructions):
#####
int x;
int main()
{
asm(" DINT");
x++;
asm(" RINT");
return x;
}
#####
with 6443 fails:
####
$ ~/c6_6.1.22/bin/cl6x -k -mv6443 irq.c
"irq.asm", ERROR! at line 68: [E0800] Instruction invalid for C6400
DINT
"irq.asm", ERROR! at line 74: [E0800] Instruction invalid for C6400
RINT
2 Assembly Errors, No Assembly Warnings
Errors in Source - Assembler Aborted
>> Compilation failure
#####
/Thomas