arc: Update opcode related include files for ARCv3.
Add new ARCv3 CPUs and required bits to decode/encode ARCv3 ISA opcodes. Fix 32 bit relocations which were set as signed but should be bitfield: ARC_32_ME, ARC_GLOB_DAT, ARC_JMP_SLOT, ARC_RELATIVE. Remove non-ABI relocation ARC_32_ME_S. include/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> Cupertino Miranda <cupertinomiranda@gmail.com> Bruno Mauricio <brunoasmauricio@gmail.com> * include/elf/arc-cpu.def: Add new HS5x and HS6x CPUs. * include/elf/arc-reloc.def: Add new ARC64 relocations. * include/elf/arc.h (EF_ARC_CPU_ARC64): New define. * include/opcode/arc-attrs.h (FEATURE_LIST_NAME): Update predicate. * include/opcode/arc-func.h: Update formating. (replace_disp8ls): New function. (replace_disp9s): Likewise. (replace_disp6s): Likewise. (replace_disp7s): Likewise. (replace_disp12s): Likewise. * include/opcode/arc.h (ARC_OPCODE_ARC64): New define. (ARC_OPCODE_ARC32): Likewise. (ARC_OPERAND_FP): Likewise. (HARD_FIELDF): Likewise. (ARC_OPCODE_ARCVx): New macro. (arc_flag_class): Update structure to hold new extract/insert functions for flags. (INSN3OP): Update macro. (FP_SIZE, TPOF, DPOF, SOPF, COPF, CONVOPS): New enums. Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
This commit is contained in:
committed by
Claudiu Zissulescu
parent
4deb1ee57f
commit
04414221df
+31
-26
@@ -19,35 +19,40 @@
|
||||
02110-1301, USA. */
|
||||
|
||||
|
||||
ARC_CPU_TYPE_A7xx (arc700, 0x00),
|
||||
ARC_CPU_TYPE_A7xx (nps400, NPS400),
|
||||
ARC_CPU_TYPE_A64x (hs6x, CD | DIV)
|
||||
ARC_CPU_TYPE_A32x (hs5x, CD | DIV)
|
||||
ARC_CPU_TYPE_A64x (hs68, CD | DIV)
|
||||
ARC_CPU_TYPE_A32x (hs58, CD | DIV)
|
||||
|
||||
ARC_CPU_TYPE_AV2EM (arcem, 0x00),
|
||||
ARC_CPU_TYPE_AV2EM (em, 0x00),
|
||||
ARC_CPU_TYPE_AV2EM (em_mini, 0x00),
|
||||
ARC_CPU_TYPE_AV2EM (em4, CD),
|
||||
ARC_CPU_TYPE_AV2EM (em4_dmips, CD),
|
||||
ARC_CPU_TYPE_AV2EM (em4_fpus, CD),
|
||||
ARC_CPU_TYPE_AV2EM (em4_fpuda, CD | DPA),
|
||||
ARC_CPU_TYPE_AV2EM (quarkse_em, CD | SPX | DPX),
|
||||
ARC_CPU_TYPE_A7xx (arc700, 0x00)
|
||||
ARC_CPU_TYPE_A7xx (nps400, NPS400)
|
||||
|
||||
ARC_CPU_TYPE_AV2HS (archs, CD),
|
||||
ARC_CPU_TYPE_AV2HS (hs, CD),
|
||||
ARC_CPU_TYPE_AV2HS (hs34, CD),
|
||||
ARC_CPU_TYPE_AV2HS (hs38, CD),
|
||||
ARC_CPU_TYPE_AV2HS (hs38_linux, CD),
|
||||
ARC_CPU_TYPE_AV2HS (hs4x, CD),
|
||||
ARC_CPU_TYPE_AV2HS (hs4xd, CD),
|
||||
ARC_CPU_TYPE_AV2HS (hs4x_rel31, CD),
|
||||
ARC_CPU_TYPE_AV2EM (arcem, 0x00)
|
||||
ARC_CPU_TYPE_AV2EM (em, 0x00)
|
||||
ARC_CPU_TYPE_AV2EM (em_mini, 0x00)
|
||||
ARC_CPU_TYPE_AV2EM (em4, CD)
|
||||
ARC_CPU_TYPE_AV2EM (em4_dmips, CD)
|
||||
ARC_CPU_TYPE_AV2EM (em4_fpus, CD)
|
||||
ARC_CPU_TYPE_AV2EM (em4_fpuda, CD | DPA)
|
||||
ARC_CPU_TYPE_AV2EM (quarkse_em, CD | SPX | DPX)
|
||||
|
||||
ARC_CPU_TYPE_A6xx (arc600, 0x00),
|
||||
ARC_CPU_TYPE_A6xx (arc600_norm, 0x00),
|
||||
ARC_CPU_TYPE_A6xx (arc600_mul64, 0x00),
|
||||
ARC_CPU_TYPE_A6xx (arc600_mul32x16, 0x00),
|
||||
ARC_CPU_TYPE_A6xx (arc601, 0x00),
|
||||
ARC_CPU_TYPE_A6xx (arc601_norm, 0x00),
|
||||
ARC_CPU_TYPE_A6xx (arc601_mul64, 0x00),
|
||||
ARC_CPU_TYPE_A6xx (arc601_mul32x16, 0x00),
|
||||
ARC_CPU_TYPE_AV2HS (archs, CD)
|
||||
ARC_CPU_TYPE_AV2HS (hs, CD)
|
||||
ARC_CPU_TYPE_AV2HS (hs34, CD)
|
||||
ARC_CPU_TYPE_AV2HS (hs38, CD)
|
||||
ARC_CPU_TYPE_AV2HS (hs38_linux, CD)
|
||||
ARC_CPU_TYPE_AV2HS (hs4x, CD)
|
||||
ARC_CPU_TYPE_AV2HS (hs4xd, CD)
|
||||
ARC_CPU_TYPE_AV2HS (hs4x_rel31, CD)
|
||||
|
||||
ARC_CPU_TYPE_A6xx (arc600, 0x00)
|
||||
ARC_CPU_TYPE_A6xx (arc600_norm, 0x00)
|
||||
ARC_CPU_TYPE_A6xx (arc600_mul64, 0x00)
|
||||
ARC_CPU_TYPE_A6xx (arc600_mul32x16, 0x00)
|
||||
ARC_CPU_TYPE_A6xx (arc601, 0x00)
|
||||
ARC_CPU_TYPE_A6xx (arc601_norm, 0x00)
|
||||
ARC_CPU_TYPE_A6xx (arc601_mul64, 0x00)
|
||||
ARC_CPU_TYPE_A6xx (arc601_mul32x16, 0x00)
|
||||
|
||||
ARC_CPU_TYPE_NONE
|
||||
|
||||
|
||||
+160
-11
@@ -64,6 +64,13 @@ ARC_RELOC_HOWTO(ARC_32, 4, \
|
||||
bitfield, \
|
||||
( S + A ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_64, 5, \
|
||||
8, \
|
||||
64, \
|
||||
replace_word64, \
|
||||
bitfield, \
|
||||
( S + A ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_N8, 8, \
|
||||
1, \
|
||||
8, \
|
||||
@@ -201,14 +208,7 @@ ARC_RELOC_HOWTO(ARC_32_ME, 27, \
|
||||
4, \
|
||||
32, \
|
||||
replace_limm, \
|
||||
signed, \
|
||||
( ME ( ( S + A ) ) ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_32_ME_S, 105, \
|
||||
4, \
|
||||
32, \
|
||||
replace_limms, \
|
||||
signed, \
|
||||
bitfield, \
|
||||
( ME ( ( S + A ) ) ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_N32_ME, 28, \
|
||||
@@ -369,21 +369,21 @@ ARC_RELOC_HOWTO(ARC_GLOB_DAT, 54, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
signed, \
|
||||
bitfield, \
|
||||
S)
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_JMP_SLOT, 55, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
signed, \
|
||||
bitfield, \
|
||||
( ME ( S ) ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_RELATIVE, 56, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
signed, \
|
||||
bitfield, \
|
||||
( ME ( ( B + A ) ) ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_GOTOFF, 57, \
|
||||
@@ -511,3 +511,152 @@ ARC_RELOC_HOWTO(ARC_NPS_CMEM16, 78, \
|
||||
replace_bits16, \
|
||||
dont, \
|
||||
( ME ( S + A )))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_S9H_PCREL, 79, \
|
||||
4, \
|
||||
8, \
|
||||
replace_disp8ls, \
|
||||
signed, \
|
||||
( ME ( ( ( ( S + A ) - P ) >> 1 ) ) ) )
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_S7H_PCREL, 80, \
|
||||
2, \
|
||||
6, \
|
||||
replace_disp6s, \
|
||||
signed, \
|
||||
( ( ( ( S + A ) - P ) >> 1 ) ) )
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_S8H_PCREL, 81, \
|
||||
2, \
|
||||
7, \
|
||||
replace_disp7s, \
|
||||
signed, \
|
||||
( ( ( ( S + A ) - P ) >> 1 ) ) )
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_S10H_PCREL, 82, \
|
||||
2, \
|
||||
9, \
|
||||
replace_disp9s, \
|
||||
signed, \
|
||||
( ( ( ( S + A ) - P ) >> 1 ) ) )
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_S13H_PCREL, 83, \
|
||||
4, \
|
||||
12, \
|
||||
replace_disp12s, \
|
||||
signed, \
|
||||
( ME ( ( ( ( S + A ) - P ) >> 1 ) ) ) )
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_ALIGN, 84, \
|
||||
4, \
|
||||
0, \
|
||||
replace_none, \
|
||||
dont, \
|
||||
0 )
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_ADD8, 85, \
|
||||
1, \
|
||||
8, \
|
||||
replace_bits8, \
|
||||
dont, \
|
||||
( S + A ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_ADD16, 86, \
|
||||
2, \
|
||||
16, \
|
||||
replace_bits16, \
|
||||
dont, \
|
||||
( S + A ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_SUB8, 87, \
|
||||
1, \
|
||||
8, \
|
||||
replace_bits8, \
|
||||
dont, \
|
||||
( A - S + ICARRY ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_SUB16, 88, \
|
||||
2, \
|
||||
16, \
|
||||
replace_bits16, \
|
||||
dont, \
|
||||
( A - S + ICARRY ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_SUB32, 89, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
dont, \
|
||||
( A - S + ICARRY))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_LO32, 90, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
dont, \
|
||||
( ( S + A ) & 4294967295 ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_HI32, 91, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
dont, \
|
||||
( ( S + A ) >> 32 ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_LO32_ME, 92, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
dont, \
|
||||
( ME ( ( ( S + A ) & 4294967295 ) ) ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_HI32_ME, 93, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
dont, \
|
||||
( ME ( ( ( S + A ) >> 32 ) ) ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_N64, 94, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
dont, \
|
||||
( DEREFP - ( S + A ) ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_SDA_LDST3, 95, \
|
||||
4, \
|
||||
9, \
|
||||
replace_disp9ls, \
|
||||
signed, \
|
||||
( ( ( S + A ) - _SDA_BASE_ ) >> 3 ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_NLO32, 96, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
dont, \
|
||||
( DEREFP - ( ( S + A ) & 4294967295 ) ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_NLO32_ME, 97, \
|
||||
4, \
|
||||
32, \
|
||||
replace_word32, \
|
||||
dont, \
|
||||
( ME ( ( DEREFP - ( ( S + A ) & 4294967295 ) ) ) ))
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_PCLO32_ME_2, 98, \
|
||||
4, \
|
||||
34, \
|
||||
replace_word32, \
|
||||
signed, \
|
||||
( ME ( ( ( ( S + A ) - P ) >> 2 ) & 0xFFFFFFFF ) ) )
|
||||
|
||||
|
||||
ARC_RELOC_HOWTO(ARC_PLT34, 99, \
|
||||
4, \
|
||||
34, \
|
||||
replace_word32, \
|
||||
signed, \
|
||||
( ME ( ( ( ( L + A ) - P ) >> 2 ) & 0xFFFFFFFF ) ) )
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ END_RELOC_NUMBERS (R_ARC_max)
|
||||
#define E_ARC_MACH_ARC700 0x00000003
|
||||
#define EF_ARC_CPU_ARCV2EM 0x00000005
|
||||
#define EF_ARC_CPU_ARCV2HS 0x00000006
|
||||
#define EF_ARC_CPU_ARC64 0x00000007
|
||||
|
||||
/* ARC Linux specific ABIs. */
|
||||
#define E_ARC_OSABI_ORIG 0x00000000 /* MUST be 0 for back-compat. */
|
||||
|
||||
Reference in New Issue
Block a user