mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-08 00:23:09 +00:00
MIPS: Add Global INValidate ASE support
Add support for the Global INValidate Application Specific Extension
for Release 6 of the MIPS Architecture.
[1] "MIPS Architecture for Programmers Volume II-A: The MIPS32
Instruction Set Manual", Imagination Technologies Ltd., Document
Number: MD00086, Revision 6.06, December 15, 2016, Section 3.2
"Alphabetical List of Instructions", pp. 187-191
bfd/
* elfxx-mips.c (print_mips_ases): Add GINV extension.
binutils/
* readelf.c (print_mips_ases): Add GINV extension.
gas/
* NEWS: Mention MIPS Global INValidate ASE support.
* config/tc-mips.c (options): Add OPTION_GINV and OPTION_NO_GINV.
(md_longopts): Likewise.
(mips_ases): Define availability for GINV.
(mips_convert_ase_flags): Map ASE_GINV to AFL_ASE_GINV.
(md_show_usage): Add help for -mginv and -mno-ginv.
* doc/as.texinfo: Document -mginv, -mno-ginv.
* doc/c-mips.texi: Document -mginv, -mno-ginv, .set ginv and
.set noginv.
* testsuite/gas/mips/ase-errors-1.s: Add error checks for GINV
ASE.
* testsuite/gas/mips/ase-errors-2.s: Likewise.
* testsuite/gas/mips/ase-errors-1.l: Likewise.
* testsuite/gas/mips/ase-errors-2.l: Likewise.
* testsuite/gas/mips/ginv.d: New test.
* testsuite/gas/mips/ginv-err.d: New test.
* testsuite/gas/mips/ginv-err.l: New test stderr output.
* testsuite/gas/mips/ginv.s: New test source.
* testsuite/gas/mips/ginv-err.s: New test source.
* testsuite/gas/mips/mips.exp: Run the new tests.
include/
* elf/mips.h (AFL_ASE_GINV, AFL_ASE_RESERVED1): New macros.
(AFL_ASE_MASK): Update to include AFL_ASE_GINV.
* opcode/mips.h: Document "+\" operand format.
(ASE_GINV): New macro.
opcodes/
* mips-dis.c (mips_arch_choices): Add GINV to mips32r6 and
mips64r6 descriptors.
(parse_mips_ase_option): Handle -Mginv option.
(print_mips_disassembler_options): Document -Mginv.
* mips-opc.c (decode_mips_operand) <+\>: New operand format.
(GINV): New macro.
(mips_opcodes): Define ginvi and ginvt.
This commit is contained in:
committed by
Maciej W. Rozycki
parent
8993072900
commit
6f20c942c3
@@ -989,6 +989,9 @@ mips_opcode_32bit_p (const struct mips_opcode *mo)
|
||||
"-A" symbolic offset (-262144 .. 262143) << 2 at bit 0
|
||||
"-B" symbolic offset (-131072 .. 131071) << 3 at bit 0
|
||||
|
||||
GINV ASE usage:
|
||||
"+\" 2 bit Global TLB invalidate type at bit 8
|
||||
|
||||
Other:
|
||||
"()" parens surrounding optional value
|
||||
"," separates operands
|
||||
@@ -1003,7 +1006,7 @@ mips_opcode_32bit_p (const struct mips_opcode *mo)
|
||||
Extension character sequences used so far ("+" followed by the
|
||||
following), for quick reference when adding more:
|
||||
"1234567890"
|
||||
"~!@#$%^&*|:'";"
|
||||
"~!@#$%^&*|:'";\"
|
||||
"ABCEFGHIJKLMNOPQRSTUVWXZ"
|
||||
"abcdefghijklmnopqrstuvwxyz"
|
||||
|
||||
@@ -1297,6 +1300,8 @@ static const unsigned int mips_isa_table[] = {
|
||||
/* Cyclic redundancy check (CRC) ASE. */
|
||||
#define ASE_CRC 0x00040000
|
||||
#define ASE_CRC64 0x00080000
|
||||
/* Global INValidate Extension. */
|
||||
#define ASE_GINV 0x00100000
|
||||
|
||||
/* MIPS ISA defines, use instead of hardcoding ISA level. */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user