/* Replace functions for the ARC relocs.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2020 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and
the GNU Binutils.
#endif /* REPLACE_bits24 */
+/* Special 24 bit replace for big endian. */
+/* mask = 111111111111111111111111. */
+#ifndef REPLACE_bits24_be
+#define REPLACE_bits24_be
+ATTRIBUTE_UNUSED static unsigned
+replace_bits24_be (unsigned insn, int value ATTRIBUTE_UNUSED)
+{
+ insn = insn & ~0xffffff00;
+ insn |= ((value >> 0) & 0xffffff) << 8;
+
+ return insn;
+}
+
+#endif /* REPLACE_bits24_be */
+
/* mask = 11111111111111111111111111111111. */
#ifndef REPLACE_word32
#define REPLACE_word32
}
#endif /* REPLACE_disp9s1 */
+
+/* mask = 00000000000000000000111111222222. */
+#ifndef REPLACE_disp12s
+#define REPLACE_disp12s
+ATTRIBUTE_UNUSED static unsigned
+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 */