diff options
author | Cooper Qu <cooper.qu@linux.alibaba.com> | 2020-08-24 20:13:47 +0800 |
---|---|---|
committer | Lifang Xia <lifang_xia@c-sky.com> | 2020-08-24 20:27:07 +0800 |
commit | 531c73a37bb4477f8337bb9dddc36d552ee76056 (patch) | |
tree | e9602367da318d2f52ee872304c8fe3f95d6dc60 /gas/config/tc-csky.c | |
parent | f1a9fbd995b8997b7ed7e8e6a83129e923400a58 (diff) | |
download | fsf-binutils-gdb-531c73a37bb4477f8337bb9dddc36d552ee76056.zip fsf-binutils-gdb-531c73a37bb4477f8337bb9dddc36d552ee76056.tar.gz fsf-binutils-gdb-531c73a37bb4477f8337bb9dddc36d552ee76056.tar.bz2 |
CSKY: Add new arch CK860.
bfd/
* bfd-in2.h (bfd_mach_ck860): New.
* cpu-csky.c (arch_info_struct): Add item for CK860.
gas/
* config/tc-csky.c (csky_archs): Add item for CK860,
change ck810 and ck807's arch_flag.
(csky_cpus): Add item for CK860.
(md_begin): Enable DSP for CK810 and CK807 by default.
(md_apply_fix): Fix CKCORE_TLS_IE32 relocation failure.
* gas/testsuite/gas/csky/cskyv2_all.d: Change 'sync 0'
to 'sync'.
* gas/testsuite/gas/csky/cskyv2_all.s: Likewise.
* gas/testsuite/gas/csky/cskyv2_ck860.d: New.
* gas/testsuite/gas/csky/cskyv2_ck860.s: New.
* gas/testsuite/gas/csky/enhance_dsp.d: Change plsli.u16
to plsli.16.
* gas/testsuite/gas/csky/enhance_dsp.s: Likewise.
include/
* opcode/csky.h (CSKYV2_ISA_10E60): New.
(CSKY_ARCH_860): New.
opcode/
* csky-dis.c (csky_find_inst_info): Skip CK860's instructions
in other CPUs to speed up disassembling.
* csky-opc.h (csky_v2_opcodes): Add CK860's instructions,
Change plsli.u16 to plsli.16, change sync's operand format.
Change-Id: I80ec1a9c0cc600d668082a9b91ae6d45b33ec0fc
Diffstat (limited to 'gas/config/tc-csky.c')
-rw-r--r-- | gas/config/tc-csky.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/gas/config/tc-csky.c b/gas/config/tc-csky.c index d16c448..f621fa9 100644 --- a/gas/config/tc-csky.c +++ b/gas/config/tc-csky.c @@ -564,13 +564,15 @@ const struct csky_arch_info csky_archs[] = {"ck801", CSKY_ARCH_801, bfd_mach_ck801}, {"ck802", CSKY_ARCH_802, bfd_mach_ck802}, {"ck803", CSKY_ARCH_803, bfd_mach_ck803}, -#define CSKY_ARCH_807_BASE CSKY_ARCH_807 | CSKY_ARCH_DSP -#define CSKY_ARCH_810_BASE CSKY_ARCH_810 | CSKY_ARCH_DSP - {"ck807", CSKY_ARCH_807_BASE, bfd_mach_ck807}, - {"ck810", CSKY_ARCH_810_BASE, bfd_mach_ck810}, + {"ck807", CSKY_ARCH_807, bfd_mach_ck807}, + {"ck810", CSKY_ARCH_810, bfd_mach_ck810}, + {"ck860", CSKY_ARCH_860, bfd_mach_ck860}, {NULL, 0, 0} }; +#define CSKY_ARCH_807_BASE CSKY_ARCH_807 | CSKY_ARCH_DSP +#define CSKY_ARCH_810_BASE CSKY_ARCH_810 | CSKY_ARCH_DSP + /* C-SKY cpus table. */ const struct csky_cpu_info csky_cpus[] = { @@ -683,6 +685,11 @@ const struct csky_cpu_info csky_cpus[] = {"ck810ft", CSKY_ARCH_810_BASE | CSKY_ARCH_FLOAT, CSKY_ISA_810 | CSKYV2_ISA_DSP | CSKY_ISA_VDSP | CSKY_ISA_FLOAT_810 | CSKY_ISA_TRUST}, {"ck810ftv", CSKY_ARCH_810_BASE | CSKY_ARCH_FLOAT, CSKY_ISA_810 | CSKYV2_ISA_DSP | CSKY_ISA_VDSP | CSKY_ISA_FLOAT_810 | CSKY_ISA_TRUST}, + /* CK860 Series. */ +#define CSKY_ISA_860 (CSKY_ISA_810 | CSKYV2_ISA_10E60) +#define CSKY_ISA_FLOAT_860 (CSKY_ISA_FLOAT_810) + {"ck860", CSKY_ARCH_860, CSKY_ISA_860}, + {NULL, 0, 0} }; @@ -1207,7 +1214,14 @@ md_begin (void) as_warn (_("-mcpu conflict with other model parameters, using -mcpu")); } else if (arch_flag != 0) - mach_flag |= arch_flag | flags; + { + if ((arch_flag & CSKY_ARCH_MASK) == CSKY_ARCH_810 + || ((arch_flag & CSKY_ARCH_MASK) == CSKY_ARCH_807)) { + /* CK807 and CK810 have DSP instruction by default. */ + mach_flag |= CSKY_ARCH_DSP; + } + mach_flag |= arch_flag | flags; + } else { #ifdef TARGET_WITH_CPU @@ -4941,6 +4955,7 @@ md_apply_fix (fixS *fixP, struct tls_addend *ta = &(fixP->tc_fix_data); fixP->fx_offset = (fixP->fx_frag->fr_address + fixP->fx_where - (ta->frag->fr_address + ta->offset)); + *valP = fixP->fx_offset; } /* Fall through. */ case BFD_RELOC_CKCORE_TLS_LE32: @@ -5002,6 +5017,7 @@ md_apply_fix (fixS *fixP, struct tls_addend *ta = &(fixP->tc_fix_data); fixP->fx_offset = (fixP->fx_frag->fr_address + fixP->fx_where - (ta->frag->fr_address + ta->offset)); + *valP = fixP->fx_offset; } /* Fall through. */ case BFD_RELOC_CKCORE_TLS_LE32: |