This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 1/4] [ARC] Add JLI support.


From: John Eric Martin <John.Martin@emmicro-us.com>

The following relocation types were added to GCC/binutils:

ARC_JLI_SECTOFF is a relocation type in Metaware that is now used by
GCC as well to adjust the index of function calls to functions with
attribute jli_call_always.

bfd/
2017-02-02  Claudiu Zissulescu  <claziss@synopsys.com>
	    John Eric Martin  <John.Martin@emmicro-us.com>

	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.
	* elf32-arc.c (JLI): Define.
	* reloc.c: Add JLI relocations.

gas/
2017-02-02  Claudiu Zissulescu  <claziss@synopsys.com>

	* testsuite/gas/arc/jli-1.d: New file.
	* testsuite/gas/arc/jli-1.s: Likewise.
	* testsuite/gas/arc/taux.d: Update for jli_base.

include/
2017-02-02  Claudiu Zissulescu  <claziss@synopsys.com>
	    John Eric Martin  <John.Martin@emmicro-us.com>

	* elf/arc-reloc.def: Add JLI relocs howto.
	* opcode/arc-func.h (replace_jli): New function.

ld/
2017-02-02  Claudiu Zissulescu  <claziss@synopsys.com>
	    John Eric Martin  <John.Martin@emmicro-us.com>

	* emulparams/arcelf.sh (JLI_START_TABLE): Define.
	* scripttempl/elfarc.sc: Handle jlitab section.
	* scripttempl/elfarcv2.sc: Likewise.
	* testsuite/ld-arc/arc.exp: Add JLI test.
	* testsuite/ld-arc/jli-script.ld: New file.
	* testsuite/ld-arc/jli-simple.dd: Likewise.
	* testsuite/ld-arc/jli-simple.rd: Likewise.
	* testsuite/ld-arc/jli-simple.s: Likewise.
	* testsuite/ld/testsuite/ld-arc/jli-overflow.s: Likewise.
	* testsuite/ld/testsuite/ld-arc/jli-overflow.d: Likewise.
	* testsuite/ld/testsuite/ld-arc/jli-overflow.err: Likewise.

opcode/
2017-02-02  Claudiu Zissulescu  <claziss@synopsys.com>
	    John Eric Martin  <John.Martin@emmicro-us.com>

	* arc-opc.c (UIMM10_6_S_JLIOFF): Define.
	(UIMM3_23): Adjust accordingly.
	* arc-regs.h: Add/correct jli_base register.
	* arc-tbl.h (jli_s): Likewise.
---
 bfd/bfd-in2.h                        |    1 +
 bfd/elf32-arc.c                      |    3 +-
 bfd/libbfd.h                         |    1 +
 bfd/reloc.c                          |    2 +
 gas/testsuite/gas/arc/jli-1.d        |   25 +
 gas/testsuite/gas/arc/jli-1.s        |   11 +
 gas/testsuite/gas/arc/taux.d         |    1 +
 include/elf/arc-reloc.def            |    7 +
 include/opcode/arc-func.h            |   15 +-
 ld/emulparams/arcelf.sh              |    1 +
 ld/emulparams/arcv2elf.sh            |    3 +-
 ld/emulparams/arcv2elfx.sh           |    3 +-
 ld/scripttempl/elfarc.sc             |    6 +
 ld/scripttempl/elfarcv2.sc           |    5 +
 ld/testsuite/ld-arc/arc.exp          |    5 +
 ld/testsuite/ld-arc/jli-overflow.d   |    4 +
 ld/testsuite/ld-arc/jli-overflow.err |    3 +
 ld/testsuite/ld-arc/jli-overflow.s   | 1050 ++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-arc/jli-script.ld    |   20 +
 ld/testsuite/ld-arc/jli-simple.dd    |   26 +
 ld/testsuite/ld-arc/jli-simple.rd    |   10 +
 ld/testsuite/ld-arc/jli-simple.s     |   24 +
 opcodes/arc-opc.c                    |    8 +-
 opcodes/arc-regs.h                   |    2 +-
 opcodes/arc-tbl.h                    |    1 +
 25 files changed, 1231 insertions(+), 6 deletions(-)
 create mode 100644 gas/testsuite/gas/arc/jli-1.d
 create mode 100644 gas/testsuite/gas/arc/jli-1.s
 create mode 100644 ld/testsuite/ld-arc/jli-overflow.d
 create mode 100644 ld/testsuite/ld-arc/jli-overflow.err
 create mode 100644 ld/testsuite/ld-arc/jli-overflow.s
 create mode 100644 ld/testsuite/ld-arc/jli-script.ld
 create mode 100644 ld/testsuite/ld-arc/jli-simple.dd
 create mode 100644 ld/testsuite/ld-arc/jli-simple.rd
 create mode 100644 ld/testsuite/ld-arc/jli-simple.s

diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 1343780..d126aed 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -3800,6 +3800,7 @@ pc-relative or some form of GOT-indirect relocation.  */
   BFD_RELOC_ARC_S25W_PCREL_PLT,
   BFD_RELOC_ARC_S21H_PCREL_PLT,
   BFD_RELOC_ARC_NPS_CMEM16,
+  BFD_RELOC_ARC_JLI_SECTOFF,
 
 /* ADI Blackfin 16 bit immediate absolute reloc.  */
   BFD_RELOC_BFIN_16_IMM,
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index 6903ad7..3a3c001 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -1182,7 +1182,7 @@ arc_special_overflow_checks (const struct arc_relocation_data reloc_data,
 	     + (reloc_data.reloc_offset))))
 #define SECTSTART (bfd_signed_vma) (reloc_data.sym_section->output_section->vma \
 				    + reloc_data.sym_section->output_offset)
-
+#define JLI (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
 #define _SDA_BASE_ (bfd_signed_vma) (reloc_data.sdata_begin_symbol_vma)
 #define TLS_REL (bfd_signed_vma) \
   ((elf_hash_table (info))->tls_sec->output_section->vma)
@@ -1359,6 +1359,7 @@ arc_do_relocation (bfd_byte * contents,
 #undef P
 #undef SECTSTAR
 #undef SECTSTART
+#undef JLI
 #undef _SDA_BASE_
 #undef none
 
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index ae9bf76..17acda5 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -1752,6 +1752,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_ARC_S25W_PCREL_PLT",
   "BFD_RELOC_ARC_S21H_PCREL_PLT",
   "BFD_RELOC_ARC_NPS_CMEM16",
+  "BFD_RELOC_ARC_JLI_SECTOFF",
   "BFD_RELOC_BFIN_16_IMM",
   "BFD_RELOC_BFIN_16_HIGH",
   "BFD_RELOC_BFIN_4_PCREL",
diff --git a/bfd/reloc.c b/bfd/reloc.c
index aa70fa58..8512261 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -3695,6 +3695,8 @@ ENUMX
   BFD_RELOC_ARC_S21H_PCREL_PLT
 ENUMX
   BFD_RELOC_ARC_NPS_CMEM16
+ENUMX
+  BFD_RELOC_ARC_JLI_SECTOFF
 ENUMDOC
   ARC relocs.
 
diff --git a/gas/testsuite/gas/arc/jli-1.d b/gas/testsuite/gas/arc/jli-1.d
new file mode 100644
index 0000000..10550a2
--- /dev/null
+++ b/gas/testsuite/gas/arc/jli-1.d
@@ -0,0 +1,25 @@
+#as:
+#objdump: -Dr
+
+.*: +file format .*
+
+
+Disassembly of section .group:
+
+00000000 <jlitab.foo>:
+   0:	0[10] 00 00 0[01]             	.word	0x00000001
+   4:	0[60] 00 00 0[06]             	.word	0x00000006
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	5800                	jli_s	0
+			0: R_ARC_JLI_SECTOFF	__jli.foo
+
+Disassembly of section .jlitab:
+
+00000000 <__jli.foo>:
+   0:	0001 0000           	b	0 <foo>
+			0: R_ARC_S25H_PCREL	foo
+
+#...
diff --git a/gas/testsuite/gas/arc/jli-1.s b/gas/testsuite/gas/arc/jli-1.s
new file mode 100644
index 0000000..6890147
--- /dev/null
+++ b/gas/testsuite/gas/arc/jli-1.s
@@ -0,0 +1,11 @@
+;;; Test basic JLI relocs and constructs.
+
+	.cpu em4
+
+	jli_s	__jli.foo	; Generates R_ARC_JLI_SECTOFF
+
+	.section	.jlitab,"axG",%progbits,jlitab.foo,comdat
+        .align  4
+__jli.foo:
+        .weak   __jli.foo
+        b       @foo
diff --git a/gas/testsuite/gas/arc/taux.d b/gas/testsuite/gas/arc/taux.d
index 10f50ee..6303146 100644
--- a/gas/testsuite/gas/arc/taux.d
+++ b/gas/testsuite/gas/arc/taux.d
@@ -16,6 +16,7 @@
 .* U d2l
 .* U dpfp_status
 .* U fp_status
+.* U jli_base
 .* mx0
 .* mx1
 .* my0
diff --git a/include/elf/arc-reloc.def b/include/elf/arc-reloc.def
index aa2309c..c58ca96 100644
--- a/include/elf/arc-reloc.def
+++ b/include/elf/arc-reloc.def
@@ -414,6 +414,13 @@ ARC_RELOC_HOWTO(ARC_S25H_PCREL_PLT, 61, \
                 signed, \
                 ( ME ( ( ( ( L + A ) - P ) >> 1 ) ) ))
 
+ARC_RELOC_HOWTO(ARC_JLI_SECTOFF, 63, \
+                1, \
+                10, \
+                replace_jli, \
+                bitfield, \
+                ( ( S - JLI ) >> 2))
+
 ARC_RELOC_HOWTO(ARC_TLS_DTPMOD, 66, \
                 2, \
                 32, \
diff --git a/include/opcode/arc-func.h b/include/opcode/arc-func.h
index c794593..fb45b07 100644
--- a/include/opcode/arc-func.h
+++ b/include/opcode/arc-func.h
@@ -274,8 +274,21 @@ replace_disp12s (unsigned insn, int value ATTRIBUTE_UNUSED)
   insn = insn & ~0xfff;
   insn |= ((value >> 0) & 0x003f) << 6;
   insn |= ((value >> 6) & 0x003f) << 0;
-
   return insn;
 }
 
 #endif /* REPLACE_disp12s */
+
+/* mask  = 0000001111111111.  */
+#ifndef REPLACE_jli
+#define REPLACE_jli
+ATTRIBUTE_UNUSED static unsigned
+replace_jli (unsigned insn, int value)
+{
+  insn = insn & ~0x3ff;
+  insn |= ((value >> 0) & 0x03ff) << 0;
+
+  return insn;
+}
+
+#endif /* REPLACE_jli */
diff --git a/ld/emulparams/arcelf.sh b/ld/emulparams/arcelf.sh
index 9b52e2c..21c5c82 100644
--- a/ld/emulparams/arcelf.sh
+++ b/ld/emulparams/arcelf.sh
@@ -16,6 +16,7 @@ ARCH=arc
 MACHINE=
 ENTRY=__start
 SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'
+JLI_START_TABLE='__JLI_TABLE__ = .;'
 OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
 EMBEDDED=yes
 
diff --git a/ld/emulparams/arcv2elf.sh b/ld/emulparams/arcv2elf.sh
index e21882b..feedbe8 100644
--- a/ld/emulparams/arcv2elf.sh
+++ b/ld/emulparams/arcv2elf.sh
@@ -22,5 +22,6 @@ LITTLE_OUTPUT_FORMAT="elf32-littlearc"
 BIG_OUTPUT_FORMAT="elf32-bigarc"
 TEXT_START_ADDR=0x100
 ENTRY=__start
-SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;'
+SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'
+JLI_START_TABLE='__JLI_TABLE__ = .;'
 OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
diff --git a/ld/emulparams/arcv2elfx.sh b/ld/emulparams/arcv2elfx.sh
index 7a4f284..8a56509 100644
--- a/ld/emulparams/arcv2elfx.sh
+++ b/ld/emulparams/arcv2elfx.sh
@@ -18,6 +18,7 @@ LITTLE_OUTPUT_FORMAT="elf32-littlearc"
 BIG_OUTPUT_FORMAT="elf32-bigarc"
 TEXT_START_ADDR=0x100
 ENTRY=__start
-SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;'
+SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'
+JLI_START_TABLE='__JLI_TABLE__ = .;'
 OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
 EMBEDDED=yes
diff --git a/ld/scripttempl/elfarc.sc b/ld/scripttempl/elfarc.sc
index 6754c02..4d8fef0 100644
--- a/ld/scripttempl/elfarc.sc
+++ b/ld/scripttempl/elfarc.sc
@@ -262,6 +262,12 @@ cat <<EOF
   } =${NOP-0}
 
   ${DATA_PLT-${BSS_PLT-${PLT}}}
+  .jlitab       ${RELOCATING-0} :
+  {
+    ${RELOCATING+${JLI_START_TABLE}}
+    jlitab*.o(.jlitab*)
+    *(.jlitab*)
+  } =${NOP-0}
   .text         ${RELOCATING-0} :
   {
     ${RELOCATING+${TEXT_START_SYMBOLS}}
diff --git a/ld/scripttempl/elfarcv2.sc b/ld/scripttempl/elfarcv2.sc
index 0232d81..21bc74c 100644
--- a/ld/scripttempl/elfarcv2.sc
+++ b/ld/scripttempl/elfarcv2.sc
@@ -179,6 +179,11 @@ SECTIONS
   .eh_frame : { KEEP (*(.eh_frame)) } ${RELOCATING+> ${TEXT_MEMORY}}
   .gcc_except_table : { *(.gcc_except_table) *(.gcc_except_table.*) } ${RELOCATING+> ${TEXT_MEMORY}}
   .plt : { *(.plt) } ${RELOCATING+> ${TEXT_MEMORY}}
+  .jlitab :
+  {
+    ${RELOCATING+${JLI_START_TABLE}}
+     jlitab*.o:(.jlitab*) *(.jlitab*)
+  } ${RELOCATING+> ${TEXT_MEMORY}}
 
   .rodata ${RELOCATING-0} :
   {
diff --git a/ld/testsuite/ld-arc/arc.exp b/ld/testsuite/ld-arc/arc.exp
index 2f2abe2..66f39cd 100644
--- a/ld/testsuite/ld-arc/arc.exp
+++ b/ld/testsuite/ld-arc/arc.exp
@@ -40,6 +40,11 @@ set arccommon_tests {
 	{tls-dtpoff.s}
         {{objdump -fdw tls-dtpoff.dd} {readelf --relocs tls-dtpoff.rd}}
         "sda-relocs.so" }
+    { "JLI simple"
+        "-q -T jli-script.ld -A elf32-arclittle" "" "-mcpu=em4 -EL"
+	{jli-simple.s}
+        {{objdump -fdw jli-simple.dd} {readelf --relocs jli-simple.rd}}
+        "jli-simple.so" }
 }
 
 run_ld_link_tests $arccommon_tests
diff --git a/ld/testsuite/ld-arc/jli-overflow.d b/ld/testsuite/ld-arc/jli-overflow.d
new file mode 100644
index 0000000..b1a2663
--- /dev/null
+++ b/ld/testsuite/ld-arc/jli-overflow.d
@@ -0,0 +1,4 @@
+#source: jli-overflow.s
+#as:
+#ld: -q -T jli-script.ld
+#error_output: jli-overflow.err
diff --git a/ld/testsuite/ld-arc/jli-overflow.err b/ld/testsuite/ld-arc/jli-overflow.err
new file mode 100644
index 0000000..022434e
--- /dev/null
+++ b/ld/testsuite/ld-arc/jli-overflow.err
@@ -0,0 +1,3 @@
+.*\.o: In function `test_1025':
+.*: relocation truncated to fit: R_ARC_JLI_SECTOFF against symbol.*
+#...
diff --git a/ld/testsuite/ld-arc/jli-overflow.s b/ld/testsuite/ld-arc/jli-overflow.s
new file mode 100644
index 0000000..7961cc9
--- /dev/null
+++ b/ld/testsuite/ld-arc/jli-overflow.s
@@ -0,0 +1,1050 @@
+;;;Macro
+	.macro jlifunc num
+	.section	.text
+	.align 4
+	.global	func\num
+	.type	func\num, @function
+func\num:
+	j_s.d [blink]
+	add_s r0,r0,1
+	.size	func\num, .-func\num
+	.align 4
+	.global	test_\num
+	.type	test_\num, @function
+test_\num:
+	jli_s @__jli.func\num
+	j_s [blink]
+	.size	test_\num, .-test_\num
+	.section .jlitab, "axG", @progbits, .jlitab.func\num, comdat
+	.align	4
+__jli.func\num:
+	.weak __jli.func\num
+	b	@func\num
+	.endm
+
+	.cpu HS
+	jlifunc 1
+	jlifunc 2
+	jlifunc 3
+	jlifunc 4
+	jlifunc 5
+	jlifunc 6
+	jlifunc 7
+	jlifunc 8
+	jlifunc 9
+	jlifunc 10
+	jlifunc 11
+	jlifunc 12
+	jlifunc 13
+	jlifunc 14
+	jlifunc 15
+	jlifunc 16
+	jlifunc 17
+	jlifunc 18
+	jlifunc 19
+	jlifunc 20
+	jlifunc 21
+	jlifunc 22
+	jlifunc 23
+	jlifunc 24
+	jlifunc 25
+	jlifunc 26
+	jlifunc 27
+	jlifunc 28
+	jlifunc 29
+	jlifunc 30
+	jlifunc 31
+	jlifunc 32
+	jlifunc 33
+	jlifunc 34
+	jlifunc 35
+	jlifunc 36
+	jlifunc 37
+	jlifunc 38
+	jlifunc 39
+	jlifunc 40
+	jlifunc 41
+	jlifunc 42
+	jlifunc 43
+	jlifunc 44
+	jlifunc 45
+	jlifunc 46
+	jlifunc 47
+	jlifunc 48
+	jlifunc 49
+	jlifunc 50
+	jlifunc 51
+	jlifunc 52
+	jlifunc 53
+	jlifunc 54
+	jlifunc 55
+	jlifunc 56
+	jlifunc 57
+	jlifunc 58
+	jlifunc 59
+	jlifunc 60
+	jlifunc 61
+	jlifunc 62
+	jlifunc 63
+	jlifunc 64
+	jlifunc 65
+	jlifunc 66
+	jlifunc 67
+	jlifunc 68
+	jlifunc 69
+	jlifunc 70
+	jlifunc 71
+	jlifunc 72
+	jlifunc 73
+	jlifunc 74
+	jlifunc 75
+	jlifunc 76
+	jlifunc 77
+	jlifunc 78
+	jlifunc 79
+	jlifunc 80
+	jlifunc 81
+	jlifunc 82
+	jlifunc 83
+	jlifunc 84
+	jlifunc 85
+	jlifunc 86
+	jlifunc 87
+	jlifunc 88
+	jlifunc 89
+	jlifunc 90
+	jlifunc 91
+	jlifunc 92
+	jlifunc 93
+	jlifunc 94
+	jlifunc 95
+	jlifunc 96
+	jlifunc 97
+	jlifunc 98
+	jlifunc 99
+	jlifunc 100
+	jlifunc 101
+	jlifunc 102
+	jlifunc 103
+	jlifunc 104
+	jlifunc 105
+	jlifunc 106
+	jlifunc 107
+	jlifunc 108
+	jlifunc 109
+	jlifunc 110
+	jlifunc 111
+	jlifunc 112
+	jlifunc 113
+	jlifunc 114
+	jlifunc 115
+	jlifunc 116
+	jlifunc 117
+	jlifunc 118
+	jlifunc 119
+	jlifunc 120
+	jlifunc 121
+	jlifunc 122
+	jlifunc 123
+	jlifunc 124
+	jlifunc 125
+	jlifunc 126
+	jlifunc 127
+	jlifunc 128
+	jlifunc 129
+	jlifunc 130
+	jlifunc 131
+	jlifunc 132
+	jlifunc 133
+	jlifunc 134
+	jlifunc 135
+	jlifunc 136
+	jlifunc 137
+	jlifunc 138
+	jlifunc 139
+	jlifunc 140
+	jlifunc 141
+	jlifunc 142
+	jlifunc 143
+	jlifunc 144
+	jlifunc 145
+	jlifunc 146
+	jlifunc 147
+	jlifunc 148
+	jlifunc 149
+	jlifunc 150
+	jlifunc 151
+	jlifunc 152
+	jlifunc 153
+	jlifunc 154
+	jlifunc 155
+	jlifunc 156
+	jlifunc 157
+	jlifunc 158
+	jlifunc 159
+	jlifunc 160
+	jlifunc 161
+	jlifunc 162
+	jlifunc 163
+	jlifunc 164
+	jlifunc 165
+	jlifunc 166
+	jlifunc 167
+	jlifunc 168
+	jlifunc 169
+	jlifunc 170
+	jlifunc 171
+	jlifunc 172
+	jlifunc 173
+	jlifunc 174
+	jlifunc 175
+	jlifunc 176
+	jlifunc 177
+	jlifunc 178
+	jlifunc 179
+	jlifunc 180
+	jlifunc 181
+	jlifunc 182
+	jlifunc 183
+	jlifunc 184
+	jlifunc 185
+	jlifunc 186
+	jlifunc 187
+	jlifunc 188
+	jlifunc 189
+	jlifunc 190
+	jlifunc 191
+	jlifunc 192
+	jlifunc 193
+	jlifunc 194
+	jlifunc 195
+	jlifunc 196
+	jlifunc 197
+	jlifunc 198
+	jlifunc 199
+	jlifunc 200
+	jlifunc 201
+	jlifunc 202
+	jlifunc 203
+	jlifunc 204
+	jlifunc 205
+	jlifunc 206
+	jlifunc 207
+	jlifunc 208
+	jlifunc 209
+	jlifunc 210
+	jlifunc 211
+	jlifunc 212
+	jlifunc 213
+	jlifunc 214
+	jlifunc 215
+	jlifunc 216
+	jlifunc 217
+	jlifunc 218
+	jlifunc 219
+	jlifunc 220
+	jlifunc 221
+	jlifunc 222
+	jlifunc 223
+	jlifunc 224
+	jlifunc 225
+	jlifunc 226
+	jlifunc 227
+	jlifunc 228
+	jlifunc 229
+	jlifunc 230
+	jlifunc 231
+	jlifunc 232
+	jlifunc 233
+	jlifunc 234
+	jlifunc 235
+	jlifunc 236
+	jlifunc 237
+	jlifunc 238
+	jlifunc 239
+	jlifunc 240
+	jlifunc 241
+	jlifunc 242
+	jlifunc 243
+	jlifunc 244
+	jlifunc 245
+	jlifunc 246
+	jlifunc 247
+	jlifunc 248
+	jlifunc 249
+	jlifunc 250
+	jlifunc 251
+	jlifunc 252
+	jlifunc 253
+	jlifunc 254
+	jlifunc 255
+	jlifunc 256
+	jlifunc 257
+	jlifunc 258
+	jlifunc 259
+	jlifunc 260
+	jlifunc 261
+	jlifunc 262
+	jlifunc 263
+	jlifunc 264
+	jlifunc 265
+	jlifunc 266
+	jlifunc 267
+	jlifunc 268
+	jlifunc 269
+	jlifunc 270
+	jlifunc 271
+	jlifunc 272
+	jlifunc 273
+	jlifunc 274
+	jlifunc 275
+	jlifunc 276
+	jlifunc 277
+	jlifunc 278
+	jlifunc 279
+	jlifunc 280
+	jlifunc 281
+	jlifunc 282
+	jlifunc 283
+	jlifunc 284
+	jlifunc 285
+	jlifunc 286
+	jlifunc 287
+	jlifunc 288
+	jlifunc 289
+	jlifunc 290
+	jlifunc 291
+	jlifunc 292
+	jlifunc 293
+	jlifunc 294
+	jlifunc 295
+	jlifunc 296
+	jlifunc 297
+	jlifunc 298
+	jlifunc 299
+	jlifunc 300
+	jlifunc 301
+	jlifunc 302
+	jlifunc 303
+	jlifunc 304
+	jlifunc 305
+	jlifunc 306
+	jlifunc 307
+	jlifunc 308
+	jlifunc 309
+	jlifunc 310
+	jlifunc 311
+	jlifunc 312
+	jlifunc 313
+	jlifunc 314
+	jlifunc 315
+	jlifunc 316
+	jlifunc 317
+	jlifunc 318
+	jlifunc 319
+	jlifunc 320
+	jlifunc 321
+	jlifunc 322
+	jlifunc 323
+	jlifunc 324
+	jlifunc 325
+	jlifunc 326
+	jlifunc 327
+	jlifunc 328
+	jlifunc 329
+	jlifunc 330
+	jlifunc 331
+	jlifunc 332
+	jlifunc 333
+	jlifunc 334
+	jlifunc 335
+	jlifunc 336
+	jlifunc 337
+	jlifunc 338
+	jlifunc 339
+	jlifunc 340
+	jlifunc 341
+	jlifunc 342
+	jlifunc 343
+	jlifunc 344
+	jlifunc 345
+	jlifunc 346
+	jlifunc 347
+	jlifunc 348
+	jlifunc 349
+	jlifunc 350
+	jlifunc 351
+	jlifunc 352
+	jlifunc 353
+	jlifunc 354
+	jlifunc 355
+	jlifunc 356
+	jlifunc 357
+	jlifunc 358
+	jlifunc 359
+	jlifunc 360
+	jlifunc 361
+	jlifunc 362
+	jlifunc 363
+	jlifunc 364
+	jlifunc 365
+	jlifunc 366
+	jlifunc 367
+	jlifunc 368
+	jlifunc 369
+	jlifunc 370
+	jlifunc 371
+	jlifunc 372
+	jlifunc 373
+	jlifunc 374
+	jlifunc 375
+	jlifunc 376
+	jlifunc 377
+	jlifunc 378
+	jlifunc 379
+	jlifunc 380
+	jlifunc 381
+	jlifunc 382
+	jlifunc 383
+	jlifunc 384
+	jlifunc 385
+	jlifunc 386
+	jlifunc 387
+	jlifunc 388
+	jlifunc 389
+	jlifunc 390
+	jlifunc 391
+	jlifunc 392
+	jlifunc 393
+	jlifunc 394
+	jlifunc 395
+	jlifunc 396
+	jlifunc 397
+	jlifunc 398
+	jlifunc 399
+	jlifunc 400
+	jlifunc 401
+	jlifunc 402
+	jlifunc 403
+	jlifunc 404
+	jlifunc 405
+	jlifunc 406
+	jlifunc 407
+	jlifunc 408
+	jlifunc 409
+	jlifunc 410
+	jlifunc 411
+	jlifunc 412
+	jlifunc 413
+	jlifunc 414
+	jlifunc 415
+	jlifunc 416
+	jlifunc 417
+	jlifunc 418
+	jlifunc 419
+	jlifunc 420
+	jlifunc 421
+	jlifunc 422
+	jlifunc 423
+	jlifunc 424
+	jlifunc 425
+	jlifunc 426
+	jlifunc 427
+	jlifunc 428
+	jlifunc 429
+	jlifunc 430
+	jlifunc 431
+	jlifunc 432
+	jlifunc 433
+	jlifunc 434
+	jlifunc 435
+	jlifunc 436
+	jlifunc 437
+	jlifunc 438
+	jlifunc 439
+	jlifunc 440
+	jlifunc 441
+	jlifunc 442
+	jlifunc 443
+	jlifunc 444
+	jlifunc 445
+	jlifunc 446
+	jlifunc 447
+	jlifunc 448
+	jlifunc 449
+	jlifunc 450
+	jlifunc 451
+	jlifunc 452
+	jlifunc 453
+	jlifunc 454
+	jlifunc 455
+	jlifunc 456
+	jlifunc 457
+	jlifunc 458
+	jlifunc 459
+	jlifunc 460
+	jlifunc 461
+	jlifunc 462
+	jlifunc 463
+	jlifunc 464
+	jlifunc 465
+	jlifunc 466
+	jlifunc 467
+	jlifunc 468
+	jlifunc 469
+	jlifunc 470
+	jlifunc 471
+	jlifunc 472
+	jlifunc 473
+	jlifunc 474
+	jlifunc 475
+	jlifunc 476
+	jlifunc 477
+	jlifunc 478
+	jlifunc 479
+	jlifunc 480
+	jlifunc 481
+	jlifunc 482
+	jlifunc 483
+	jlifunc 484
+	jlifunc 485
+	jlifunc 486
+	jlifunc 487
+	jlifunc 488
+	jlifunc 489
+	jlifunc 490
+	jlifunc 491
+	jlifunc 492
+	jlifunc 493
+	jlifunc 494
+	jlifunc 495
+	jlifunc 496
+	jlifunc 497
+	jlifunc 498
+	jlifunc 499
+	jlifunc 500
+	jlifunc 501
+	jlifunc 502
+	jlifunc 503
+	jlifunc 504
+	jlifunc 505
+	jlifunc 506
+	jlifunc 507
+	jlifunc 508
+	jlifunc 509
+	jlifunc 510
+	jlifunc 511
+	jlifunc 512
+	jlifunc 513
+	jlifunc 514
+	jlifunc 515
+	jlifunc 516
+	jlifunc 517
+	jlifunc 518
+	jlifunc 519
+	jlifunc 520
+	jlifunc 521
+	jlifunc 522
+	jlifunc 523
+	jlifunc 524
+	jlifunc 525
+	jlifunc 526
+	jlifunc 527
+	jlifunc 528
+	jlifunc 529
+	jlifunc 530
+	jlifunc 531
+	jlifunc 532
+	jlifunc 533
+	jlifunc 534
+	jlifunc 535
+	jlifunc 536
+	jlifunc 537
+	jlifunc 538
+	jlifunc 539
+	jlifunc 540
+	jlifunc 541
+	jlifunc 542
+	jlifunc 543
+	jlifunc 544
+	jlifunc 545
+	jlifunc 546
+	jlifunc 547
+	jlifunc 548
+	jlifunc 549
+	jlifunc 550
+	jlifunc 551
+	jlifunc 552
+	jlifunc 553
+	jlifunc 554
+	jlifunc 555
+	jlifunc 556
+	jlifunc 557
+	jlifunc 558
+	jlifunc 559
+	jlifunc 560
+	jlifunc 561
+	jlifunc 562
+	jlifunc 563
+	jlifunc 564
+	jlifunc 565
+	jlifunc 566
+	jlifunc 567
+	jlifunc 568
+	jlifunc 569
+	jlifunc 570
+	jlifunc 571
+	jlifunc 572
+	jlifunc 573
+	jlifunc 574
+	jlifunc 575
+	jlifunc 576
+	jlifunc 577
+	jlifunc 578
+	jlifunc 579
+	jlifunc 580
+	jlifunc 581
+	jlifunc 582
+	jlifunc 583
+	jlifunc 584
+	jlifunc 585
+	jlifunc 586
+	jlifunc 587
+	jlifunc 588
+	jlifunc 589
+	jlifunc 590
+	jlifunc 591
+	jlifunc 592
+	jlifunc 593
+	jlifunc 594
+	jlifunc 595
+	jlifunc 596
+	jlifunc 597
+	jlifunc 598
+	jlifunc 599
+	jlifunc 600
+	jlifunc 601
+	jlifunc 602
+	jlifunc 603
+	jlifunc 604
+	jlifunc 605
+	jlifunc 606
+	jlifunc 607
+	jlifunc 608
+	jlifunc 609
+	jlifunc 610
+	jlifunc 611
+	jlifunc 612
+	jlifunc 613
+	jlifunc 614
+	jlifunc 615
+	jlifunc 616
+	jlifunc 617
+	jlifunc 618
+	jlifunc 619
+	jlifunc 620
+	jlifunc 621
+	jlifunc 622
+	jlifunc 623
+	jlifunc 624
+	jlifunc 625
+	jlifunc 626
+	jlifunc 627
+	jlifunc 628
+	jlifunc 629
+	jlifunc 630
+	jlifunc 631
+	jlifunc 632
+	jlifunc 633
+	jlifunc 634
+	jlifunc 635
+	jlifunc 636
+	jlifunc 637
+	jlifunc 638
+	jlifunc 639
+	jlifunc 640
+	jlifunc 641
+	jlifunc 642
+	jlifunc 643
+	jlifunc 644
+	jlifunc 645
+	jlifunc 646
+	jlifunc 647
+	jlifunc 648
+	jlifunc 649
+	jlifunc 650
+	jlifunc 651
+	jlifunc 652
+	jlifunc 653
+	jlifunc 654
+	jlifunc 655
+	jlifunc 656
+	jlifunc 657
+	jlifunc 658
+	jlifunc 659
+	jlifunc 660
+	jlifunc 661
+	jlifunc 662
+	jlifunc 663
+	jlifunc 664
+	jlifunc 665
+	jlifunc 666
+	jlifunc 667
+	jlifunc 668
+	jlifunc 669
+	jlifunc 670
+	jlifunc 671
+	jlifunc 672
+	jlifunc 673
+	jlifunc 674
+	jlifunc 675
+	jlifunc 676
+	jlifunc 677
+	jlifunc 678
+	jlifunc 679
+	jlifunc 680
+	jlifunc 681
+	jlifunc 682
+	jlifunc 683
+	jlifunc 684
+	jlifunc 685
+	jlifunc 686
+	jlifunc 687
+	jlifunc 688
+	jlifunc 689
+	jlifunc 690
+	jlifunc 691
+	jlifunc 692
+	jlifunc 693
+	jlifunc 694
+	jlifunc 695
+	jlifunc 696
+	jlifunc 697
+	jlifunc 698
+	jlifunc 699
+	jlifunc 700
+	jlifunc 701
+	jlifunc 702
+	jlifunc 703
+	jlifunc 704
+	jlifunc 705
+	jlifunc 706
+	jlifunc 707
+	jlifunc 708
+	jlifunc 709
+	jlifunc 710
+	jlifunc 711
+	jlifunc 712
+	jlifunc 713
+	jlifunc 714
+	jlifunc 715
+	jlifunc 716
+	jlifunc 717
+	jlifunc 718
+	jlifunc 719
+	jlifunc 720
+	jlifunc 721
+	jlifunc 722
+	jlifunc 723
+	jlifunc 724
+	jlifunc 725
+	jlifunc 726
+	jlifunc 727
+	jlifunc 728
+	jlifunc 729
+	jlifunc 730
+	jlifunc 731
+	jlifunc 732
+	jlifunc 733
+	jlifunc 734
+	jlifunc 735
+	jlifunc 736
+	jlifunc 737
+	jlifunc 738
+	jlifunc 739
+	jlifunc 740
+	jlifunc 741
+	jlifunc 742
+	jlifunc 743
+	jlifunc 744
+	jlifunc 745
+	jlifunc 746
+	jlifunc 747
+	jlifunc 748
+	jlifunc 749
+	jlifunc 750
+	jlifunc 751
+	jlifunc 752
+	jlifunc 753
+	jlifunc 754
+	jlifunc 755
+	jlifunc 756
+	jlifunc 757
+	jlifunc 758
+	jlifunc 759
+	jlifunc 760
+	jlifunc 761
+	jlifunc 762
+	jlifunc 763
+	jlifunc 764
+	jlifunc 765
+	jlifunc 766
+	jlifunc 767
+	jlifunc 768
+	jlifunc 769
+	jlifunc 770
+	jlifunc 771
+	jlifunc 772
+	jlifunc 773
+	jlifunc 774
+	jlifunc 775
+	jlifunc 776
+	jlifunc 777
+	jlifunc 778
+	jlifunc 779
+	jlifunc 780
+	jlifunc 781
+	jlifunc 782
+	jlifunc 783
+	jlifunc 784
+	jlifunc 785
+	jlifunc 786
+	jlifunc 787
+	jlifunc 788
+	jlifunc 789
+	jlifunc 790
+	jlifunc 791
+	jlifunc 792
+	jlifunc 793
+	jlifunc 794
+	jlifunc 795
+	jlifunc 796
+	jlifunc 797
+	jlifunc 798
+	jlifunc 799
+	jlifunc 800
+	jlifunc 801
+	jlifunc 802
+	jlifunc 803
+	jlifunc 804
+	jlifunc 805
+	jlifunc 806
+	jlifunc 807
+	jlifunc 808
+	jlifunc 809
+	jlifunc 810
+	jlifunc 811
+	jlifunc 812
+	jlifunc 813
+	jlifunc 814
+	jlifunc 815
+	jlifunc 816
+	jlifunc 817
+	jlifunc 818
+	jlifunc 819
+	jlifunc 820
+	jlifunc 821
+	jlifunc 822
+	jlifunc 823
+	jlifunc 824
+	jlifunc 825
+	jlifunc 826
+	jlifunc 827
+	jlifunc 828
+	jlifunc 829
+	jlifunc 830
+	jlifunc 831
+	jlifunc 832
+	jlifunc 833
+	jlifunc 834
+	jlifunc 835
+	jlifunc 836
+	jlifunc 837
+	jlifunc 838
+	jlifunc 839
+	jlifunc 840
+	jlifunc 841
+	jlifunc 842
+	jlifunc 843
+	jlifunc 844
+	jlifunc 845
+	jlifunc 846
+	jlifunc 847
+	jlifunc 848
+	jlifunc 849
+	jlifunc 850
+	jlifunc 851
+	jlifunc 852
+	jlifunc 853
+	jlifunc 854
+	jlifunc 855
+	jlifunc 856
+	jlifunc 857
+	jlifunc 858
+	jlifunc 859
+	jlifunc 860
+	jlifunc 861
+	jlifunc 862
+	jlifunc 863
+	jlifunc 864
+	jlifunc 865
+	jlifunc 866
+	jlifunc 867
+	jlifunc 868
+	jlifunc 869
+	jlifunc 870
+	jlifunc 871
+	jlifunc 872
+	jlifunc 873
+	jlifunc 874
+	jlifunc 875
+	jlifunc 876
+	jlifunc 877
+	jlifunc 878
+	jlifunc 879
+	jlifunc 880
+	jlifunc 881
+	jlifunc 882
+	jlifunc 883
+	jlifunc 884
+	jlifunc 885
+	jlifunc 886
+	jlifunc 887
+	jlifunc 888
+	jlifunc 889
+	jlifunc 890
+	jlifunc 891
+	jlifunc 892
+	jlifunc 893
+	jlifunc 894
+	jlifunc 895
+	jlifunc 896
+	jlifunc 897
+	jlifunc 898
+	jlifunc 899
+	jlifunc 900
+	jlifunc 901
+	jlifunc 902
+	jlifunc 903
+	jlifunc 904
+	jlifunc 905
+	jlifunc 906
+	jlifunc 907
+	jlifunc 908
+	jlifunc 909
+	jlifunc 910
+	jlifunc 911
+	jlifunc 912
+	jlifunc 913
+	jlifunc 914
+	jlifunc 915
+	jlifunc 916
+	jlifunc 917
+	jlifunc 918
+	jlifunc 919
+	jlifunc 920
+	jlifunc 921
+	jlifunc 922
+	jlifunc 923
+	jlifunc 924
+	jlifunc 925
+	jlifunc 926
+	jlifunc 927
+	jlifunc 928
+	jlifunc 929
+	jlifunc 930
+	jlifunc 931
+	jlifunc 932
+	jlifunc 933
+	jlifunc 934
+	jlifunc 935
+	jlifunc 936
+	jlifunc 937
+	jlifunc 938
+	jlifunc 939
+	jlifunc 940
+	jlifunc 941
+	jlifunc 942
+	jlifunc 943
+	jlifunc 944
+	jlifunc 945
+	jlifunc 946
+	jlifunc 947
+	jlifunc 948
+	jlifunc 949
+	jlifunc 950
+	jlifunc 951
+	jlifunc 952
+	jlifunc 953
+	jlifunc 954
+	jlifunc 955
+	jlifunc 956
+	jlifunc 957
+	jlifunc 958
+	jlifunc 959
+	jlifunc 960
+	jlifunc 961
+	jlifunc 962
+	jlifunc 963
+	jlifunc 964
+	jlifunc 965
+	jlifunc 966
+	jlifunc 967
+	jlifunc 968
+	jlifunc 969
+	jlifunc 970
+	jlifunc 971
+	jlifunc 972
+	jlifunc 973
+	jlifunc 974
+	jlifunc 975
+	jlifunc 976
+	jlifunc 977
+	jlifunc 978
+	jlifunc 979
+	jlifunc 980
+	jlifunc 981
+	jlifunc 982
+	jlifunc 983
+	jlifunc 984
+	jlifunc 985
+	jlifunc 986
+	jlifunc 987
+	jlifunc 988
+	jlifunc 989
+	jlifunc 990
+	jlifunc 991
+	jlifunc 992
+	jlifunc 993
+	jlifunc 994
+	jlifunc 995
+	jlifunc 996
+	jlifunc 997
+	jlifunc 998
+	jlifunc 999
+	jlifunc 1000
+	jlifunc 1001
+	jlifunc 1002
+	jlifunc 1003
+	jlifunc 1004
+	jlifunc 1005
+	jlifunc 1006
+	jlifunc 1007
+	jlifunc 1008
+	jlifunc 1009
+	jlifunc 1010
+	jlifunc 1011
+	jlifunc 1012
+	jlifunc 1013
+	jlifunc 1014
+	jlifunc 1015
+	jlifunc 1016
+	jlifunc 1017
+	jlifunc 1018
+	jlifunc 1019
+	jlifunc 1020
+	jlifunc 1021
+	jlifunc 1022
+	jlifunc 1023
+	jlifunc 1024
+	jlifunc 1025
diff --git a/ld/testsuite/ld-arc/jli-script.ld b/ld/testsuite/ld-arc/jli-script.ld
new file mode 100644
index 0000000..fdb9e90
--- /dev/null
+++ b/ld/testsuite/ld-arc/jli-script.ld
@@ -0,0 +1,20 @@
+/* Default linker script, for normal executables.  */
+OUTPUT_FORMAT("elf32-littlearc", "elf32-bigarc",
+              "elf32-littlearc")
+
+OUTPUT_ARCH(arc)
+ENTRY(__start)
+
+SECTIONS
+{
+  /* Read-only sections, merged into text segment: */
+  PROVIDE (__start = 0x10000);
+  . = 0x10000 + SIZEOF_HEADERS;
+
+  .text           : {*(.text .stub .text.*)} =0
+  .jlitab	  : {jlitab*.o(.jlitab*) *(.jlitab*) }
+  .tdata          : {.tdata = .; *(.tdata .tdata.* .gnu.linkonce.td.*) }
+  .tbss           : {.tbss = .; *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
+
+  /DISCARD/ : { *(.note.GNU-stack) }
+}
diff --git a/ld/testsuite/ld-arc/jli-simple.dd b/ld/testsuite/ld-arc/jli-simple.dd
new file mode 100644
index 0000000..cea0194
--- /dev/null
+++ b/ld/testsuite/ld-arc/jli-simple.dd
@@ -0,0 +1,26 @@
+
+.*:     file format .*
+architecture: ARCv2, flags 0x00000113:
+HAS_RELOC, EXEC_P, HAS_SYMS, D_PAGED
+start address 0x00010000
+
+
+Disassembly of section .text:
+
+00010054 <test>:
+   10054:	5800                	jli_s	0
+   10056:	5801                	jli_s	0x1
+
+00010058 <foo>:
+   10058:	2000 0000           	add	r0,r0,r0
+
+0001005c <bar>:
+   1005c:	2100 0080           	add	r0,r1,r2
+
+Disassembly of section .jlitab:
+
+00010060 <__jli.foo>:
+   10060:	07f9 ffcf           	b	10058 <foo>
+
+00010064 <__jli.bar>:
+   10064:	07f9 ffcf           	b	1005c <bar>
diff --git a/ld/testsuite/ld-arc/jli-simple.rd b/ld/testsuite/ld-arc/jli-simple.rd
new file mode 100644
index 0000000..13b85bb
--- /dev/null
+++ b/ld/testsuite/ld-arc/jli-simple.rd
@@ -0,0 +1,10 @@
+
+Relocation section '\.rela\.text' .*:
+ Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
+00010054  [0-9a-f]+ R_ARC_JLI_SECTOFF 00010060   __jli\.foo \+ 0
+00010056  [0-9a-f]+ R_ARC_JLI_SECTOFF 00010064   __jli\.bar \+ 0
+
+Relocation section '\.rela\.jlitab' .*:
+ Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
+00010060  [0-9a-f]+ R_ARC_S25H_PCREL  00010054   .text \+ 4
+00010064  [0-9a-f]+ R_ARC_S25H_PCREL  00010054   .text \+ 8
diff --git a/ld/testsuite/ld-arc/jli-simple.s b/ld/testsuite/ld-arc/jli-simple.s
new file mode 100644
index 0000000..660fa05
--- /dev/null
+++ b/ld/testsuite/ld-arc/jli-simple.s
@@ -0,0 +1,24 @@
+	.cpu em4
+	.text
+	.align	4
+test:
+	jli_s	__jli.foo
+	jli_s	__jli.bar
+
+	.align	4
+foo:
+	add	r0,r0,r0
+
+	.align 	4
+bar:
+	add	r0,r1,r2
+
+	.section	.jlitab,"axG",%progbits,jli_group,comdat
+        .align  4
+__jli.foo:
+        .weak   __jli.foo
+        b       @foo
+        .align  4
+__jli.bar:
+        .weak   __jli.bar
+        b       @bar
diff --git a/opcodes/arc-opc.c b/opcodes/arc-opc.c
index c266f4f..7f934ce 100644
--- a/opcodes/arc-opc.c
+++ b/opcodes/arc-opc.c
@@ -2039,8 +2039,14 @@ const struct arc_operand arc_operands[] =
    | ARC_OPERAND_TRUNCATE | ARC_OPERAND_PCREL, insert_simm8_a16_9_s,
    extract_simm8_a16_9_s},
 
+/* UIMM10_6_S_JLIOFF mask = 0000001111111111.  */
+#define UIMM10_6_S_JLIOFF     (SIMM8_A16_9_S + 1)
+  {12, 0, BFD_RELOC_ARC_JLI_SECTOFF, ARC_OPERAND_UNSIGNED
+   | ARC_OPERAND_ALIGNED32 | ARC_OPERAND_TRUNCATE, insert_uimm10_6_s,
+   extract_uimm10_6_s},
+
   /* UIMM3_23 mask = 00000000000000000000000111000000.  */
-#define UIMM3_23       (SIMM8_A16_9_S + 1)
+#define UIMM3_23       (UIMM10_6_S_JLIOFF + 1)
   {3, 0, 0, ARC_OPERAND_UNSIGNED, insert_uimm3_23, extract_uimm3_23},
 
   /* UIMM10_6_S mask = 0000001111111111.  */
diff --git a/opcodes/arc-regs.h b/opcodes/arc-regs.h
index 0bdbd92..99c39a4 100644
--- a/opcodes/arc-regs.h
+++ b/opcodes/arc-regs.h
@@ -69,7 +69,6 @@ DEF (0x23,  ARC_OPCODE_ARCALL, NONE, limit0)
 DEF (0x24,  ARC_OPCODE_ARCALL, NONE, pcport)
 DEF (0x25,  ARC_OPCODE_ARCALL, NONE, int_vector_base)
 DEF (0x26,  ARC_OPCODE_ARCALL, NONE, aux_vbfdw_mode)
-DEF (0x26,  ARC_OPCODE_ARCALL, NONE, jli_base)
 DEF (0x27,  ARC_OPCODE_ARCALL, NONE, aux_vbfdw_bm0)
 DEF (0x28,  ARC_OPCODE_ARCALL, NONE, aux_vbfdw_bm1)
 DEF (0x29,  ARC_OPCODE_ARCALL, NONE, aux_vbfdw_accu)
@@ -261,6 +260,7 @@ DEF (0x236, ARC_OPCODE_ARCALL, NONE, ap_amm7)
 DEF (0x237, ARC_OPCODE_ARCALL, NONE, ap_ac7)
 DEF (0x278, ARC_OPCODE_ARCALL, NONE, pct_control)
 DEF (0x279, ARC_OPCODE_ARCALL, NONE, pct_bank)
+DEF (0x290, ARC_OPCODE_ARCV2,  NONE, jli_base)
 DEF (0x300, ARC_OPCODE_ARCFPX, DPX,  fp_status)
 DEF (0x301, ARC_OPCODE_ARCFPX, DPX,  aux_dpfp1l)
 DEF (0x301, ARC_OPCODE_ARCFPX, DPX,  d1l)
diff --git a/opcodes/arc-tbl.h b/opcodes/arc-tbl.h
index 79e6b89..07ff304 100644
--- a/opcodes/arc-tbl.h
+++ b/opcodes/arc-tbl.h
@@ -7955,6 +7955,7 @@
 
 /* jli_s u10 010110uuuuuuuuuu.  */
 { "jli_s", 0x00005800, 0x0000FC00, ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS, JLI, CD1, { UIMM10_6_S }, { 0 }},
+{ "jli_s", 0x00005800, 0x0000FC00, ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS, JLI, CD1, { UIMM10_6_S_JLIOFF }, { 0 }},
 
 /* jl_s b 01111bbb01000000.  */
 { "jl_s", 0x00007840, 0x0000F8FF, ARC_OPCODE_ARC600 | ARC_OPCODE_ARC700, JUMP, NONE, { BRAKET, RB_S, BRAKETdup }, { 0 }},
-- 
1.9.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]