From 5284e471d53ccb7c7a1d140bd83098607ccf4b8a Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Fri, 23 Dec 2016 19:40:51 +0000 Subject: MIPS16: Add ASMACRO instruction support Add ASMACRO instruction support as per the MIPS16e ASE architecture specifications [1][2], completing MIPS16e instruction set support. [1] "MIPS32 Architecture for Programmers, Volume IV-a: The MIPS16e Application-Specific Extension to the MIPS32 Architecture", MIPS Technologies, Inc., Document Number: MD00076, Revision 2.63, July 16, 2013, Section 4.1 "MIPS16e Instruction Descriptions", p. 65 [2] "MIPS64 Architecture for Programmers, Volume IV-a: The MIPS16e Application-Specific Extension to the MIPS64 Architecture", MIPS Technologies, Inc., Document Number: MD00077, Revision 2.60, June 25, 2008, Section 1.1 "MIPS16e Instruction Descriptions", p. 66 include/ * opcode/mips.h: Document `0', `1', `2', `3', `4' and `s' operand codes. opcodes/ * mips16-opc.c (decode_mips16_operand): Add `0', `1', `2', `3', `4' and `s' operand codes. (mips16_opcodes): Add "asmacro" entry. binutils/ * testsuite/binutils-all/mips/mips16-extend-insn.d: Update for ASMACRO support. gas/ * testsuite/gas/mips/mips16-asmacro.d: New test. * testsuite/gas/mips/mips16-32@mips16-asmacro.d: New test. * testsuite/gas/mips/mips16-64@mips16-asmacro.d: New test. * testsuite/gas/mips/mips16-asmacro.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests. --- include/ChangeLog | 5 +++++ include/opcode/mips.h | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/ChangeLog b/include/ChangeLog index 04c02ce..99d747f 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,5 +1,10 @@ 2016-12-23 Maciej W. Rozycki + * opcode/mips.h: Document `0', `1', `2', `3', `4' and `s' + operand codes. + +2016-12-23 Maciej W. Rozycki + * opcode/mips.h: Replace `0' and `4' operand codes with `.' and `F' respectively. diff --git a/include/opcode/mips.h b/include/opcode/mips.h index e00f682..eb80dfe 100644 --- a/include/opcode/mips.h +++ b/include/opcode/mips.h @@ -1809,12 +1809,18 @@ extern int bfd_mips_num_opcodes; "R" return address register ($ra or $31) "X" 5 bit MIPS register (MIPS16OP_*_REGR32) "Y" 5 bit MIPS register (MIPS16OP_*_REG32R) + "0" 5-bit ASMACRO p0 immediate + "1" 3-bit ASMACRO p1 immediate + "2" 3-bit ASMACRO p2 immediate + "3" 5-bit ASMACRO p3 immediate + "4" 3-bit ASMACRO p4 immediate "6" 6 bit unsigned break code (MIPS16OP_*_IMM6) "a" 26 bit jump address "i" likewise, but flips bit 0 "e" 11 bit extension value "l" register list for entry instruction "L" register list for exit instruction + "s" 3-bit ASMACRO select immediate "I" an immediate value used for macros @@ -1844,10 +1850,10 @@ extern int bfd_mips_num_opcodes; "M" 7 bit register list for restore instruction (18 bit extended) Characters used so far, for quick reference when adding more: - " 56 8 " + "0123456 8 " ".[]<" "ABCDEF HI KLM P RS UVWXYZ" - "a e ijklm pq vwxyz" + "a e ijklm pq s vwxyz" */ /* Save/restore encoding for the args field when all 4 registers are -- cgit v1.1