123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- /* Replace functions for the ARC relocs.
- Copyright 2015
- Free Software Foundation, Inc.
- This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and
- the GNU Binutils.
- GAS/GDB is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
- GAS/GDB is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with GAS or GDB; see the file COPYING3. If not, write to
- the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
- MA 02110-1301, USA. */
- /* mask = 00000000000000000000000000000000. */
- #ifndef REPLACE_none
- #define REPLACE_none
- ATTRIBUTE_UNUSED static unsigned
- replace_none (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- return insn;
- }
- #endif /* REPLACE_none */
- /* mask = 11111111. */
- #ifndef REPLACE_bits8
- #define REPLACE_bits8
- ATTRIBUTE_UNUSED static unsigned
- replace_bits8 (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x00ff) << 0;
- return insn;
- }
- #endif /* REPLACE_bits8 */
- /* mask = 1111111111111111. */
- #ifndef REPLACE_bits16
- #define REPLACE_bits16
- ATTRIBUTE_UNUSED static unsigned
- replace_bits16 (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0xffff) << 0;
- return insn;
- }
- #endif /* REPLACE_bits16 */
- /* mask = 111111111111111111111111. */
- #ifndef REPLACE_bits24
- #define REPLACE_bits24
- ATTRIBUTE_UNUSED static unsigned
- replace_bits24 (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0xffffff) << 0;
- return insn;
- }
- #endif /* REPLACE_bits24 */
- /* mask = 11111111111111111111111111111111. */
- #ifndef REPLACE_word32
- #define REPLACE_word32
- ATTRIBUTE_UNUSED static unsigned
- replace_word32 (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0xffffffff) << 0;
- return insn;
- }
- #endif /* REPLACE_word32 */
- /* mask = 0000000000000000000000000000000011111111111111111111111111111111. */
- #ifndef REPLACE_limm
- #define REPLACE_limm
- ATTRIBUTE_UNUSED static unsigned
- replace_limm (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0xffffffff) << 0;
- return insn;
- }
- #endif /* REPLACE_limm */
- /* mask = 000000000000000011111111111111111111111111111111. */
- #ifndef REPLACE_limms
- #define REPLACE_limms
- ATTRIBUTE_UNUSED static unsigned
- replace_limms (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0xffffffff) << 0;
- return insn;
- }
- #endif /* REPLACE_limms */
- /* mask = 00000111111111102222222222000000. */
- #ifndef REPLACE_disp21h
- #define REPLACE_disp21h
- ATTRIBUTE_UNUSED static unsigned
- replace_disp21h (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x03ff) << 17;
- insn |= ((value >> 10) & 0x03ff) << 6;
- return insn;
- }
- #endif /* REPLACE_disp21h */
- /* mask = 00000111111111002222222222000000. */
- #ifndef REPLACE_disp21w
- #define REPLACE_disp21w
- ATTRIBUTE_UNUSED static unsigned
- replace_disp21w (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x01ff) << 18;
- insn |= ((value >> 9) & 0x03ff) << 6;
- return insn;
- }
- #endif /* REPLACE_disp21w */
- /* mask = 00000111111111102222222222003333. */
- #ifndef REPLACE_disp25h
- #define REPLACE_disp25h
- ATTRIBUTE_UNUSED static unsigned
- replace_disp25h (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x03ff) << 17;
- insn |= ((value >> 10) & 0x03ff) << 6;
- insn |= ((value >> 20) & 0x000f) << 0;
- return insn;
- }
- #endif /* REPLACE_disp25h */
- /* mask = 00000111111111002222222222003333. */
- #ifndef REPLACE_disp25w
- #define REPLACE_disp25w
- ATTRIBUTE_UNUSED static unsigned
- replace_disp25w (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x01ff) << 18;
- insn |= ((value >> 9) & 0x03ff) << 6;
- insn |= ((value >> 19) & 0x000f) << 0;
- return insn;
- }
- #endif /* REPLACE_disp25w */
- /* mask = 00000000000000000000000111111111. */
- #ifndef REPLACE_disp9
- #define REPLACE_disp9
- ATTRIBUTE_UNUSED static unsigned
- replace_disp9 (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x01ff) << 0;
- return insn;
- }
- #endif /* REPLACE_disp9 */
- /* mask = 00000000111111112000000000000000. */
- #ifndef REPLACE_disp9ls
- #define REPLACE_disp9ls
- ATTRIBUTE_UNUSED static unsigned
- replace_disp9ls (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x00ff) << 16;
- insn |= ((value >> 8) & 0x0001) << 15;
- return insn;
- }
- #endif /* REPLACE_disp9ls */
- /* mask = 0000000111111111. */
- #ifndef REPLACE_disp9s
- #define REPLACE_disp9s
- ATTRIBUTE_UNUSED static unsigned
- replace_disp9s (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x01ff) << 0;
- return insn;
- }
- #endif /* REPLACE_disp9s */
- /* mask = 0000011111111111. */
- #ifndef REPLACE_disp13s
- #define REPLACE_disp13s
- ATTRIBUTE_UNUSED static unsigned
- replace_disp13s (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x07ff) << 0;
- return insn;
- }
- #endif /* REPLACE_disp13s */
- /* mask = 0000022222200111. */
- #ifndef REPLACE_disp9s1
- #define REPLACE_disp9s1
- ATTRIBUTE_UNUSED static unsigned
- replace_disp9s1 (unsigned insn, int value ATTRIBUTE_UNUSED)
- {
- insn |= ((value >> 0) & 0x0007) << 0;
- insn |= ((value >> 3) & 0x003f) << 5;
- return insn;
- }
- #endif /* REPLACE_disp9s1 */
|