aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2015-01-16 12:19:21 +0100
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>2015-01-16 12:28:58 +0100
commit1e2e8c529c1cf4fcc8cbae382aa0a653d0b65da6 (patch)
tree2cc295f864977f3b461a8f8fa80af608dcb8a769 /include
parent9f2850baa3ce341f0ba42bd9519cb3c1bf1287c7 (diff)
downloadgdb-1e2e8c529c1cf4fcc8cbae382aa0a653d0b65da6.zip
gdb-1e2e8c529c1cf4fcc8cbae382aa0a653d0b65da6.tar.gz
gdb-1e2e8c529c1cf4fcc8cbae382aa0a653d0b65da6.tar.bz2
S/390: Add support for IBM z13.
- 32 128 bit vector registers (overlapping with the existing 16 64 bit floating point registers) - vector double instructions - vector integer instructions - scalar vector instructions (allowing to have more floating point registers for scalar operations) - vector string instructions gas/ChangeLog: * config/tc-s390.c (struct pd_reg): Remove. (pre_defined_registers): Remove. (REG_NAME_CNT): Remove. (reg_name_search): Calculate the register number instead of doing a lookup. (register_name, tc_s390_regname_to_dw2regnum): Adopt to the new reg_name_search signature. (s390_parse_cpu): Support the new arch string z13. (s390_insert_operand): Support for vector registers with the extra field for the fifth bit of each vector register operand. (md_gather_operand): Adjust to the new handling of optional parameters. * doc/as.texinfo: Document the z13 cpu string. gas/testsuite/ChangeLog: * gas/s390/esa-g5.d: Add a variant without the optional operand. * gas/s390/esa-g5.s: Likewise. * gas/s390/esa-z9-109.d: Likewise. * gas/s390/esa-z9-109.s: Likewise. * gas/s390/zarch-z9-109.d: Likewise. * gas/s390/zarch-z9-109.s: Likewise. * gas/s390/zarch-z10.d: For variants with a zero optional argument it is not dumped by objdump anymore. * gas/s390/zarch-zEC12.d: Likewise. * gas/s390/zarch-z13.d: New file. * gas/s390/zarch-z13.s: New file. * gas/s390/s390.exp: Run the test for the z13 files. include/opcode/ChangeLog: * s390.h (s390_opcode_cpu_val): Add S390_OPCODE_Z13. ld/testsuite/ChangeLog: * ld-s390/tlsbin.dd: The nopr register operand is optional and not printed if 0 anymore. opcodes/ChangeLog: * s390-dis.c (s390_extract_operand): Support vector register operands. (s390_print_insn_with_opcode): Support new operands types and add new handling of optional operands. * s390-mkopc.c (s390_opcode_mode_val, s390_opcode_cpu_val): Remove and include opcode/s390.h instead. (struct op_struct): New field `flags'. (insertOpcode, insertExpandedMnemonic): New parameter `flags'. (dumpTable): Dump flags. (main): Parse flags from the s390-opc.txt file. Add z13 as cpu string. * s390-opc.c: Add new operands types, instruction formats, and instruction masks. (s390_opformats): Add new formats for .insn. * s390-opc.txt: Add new instructions.
Diffstat (limited to 'include')
-rw-r--r--include/opcode/ChangeLog4
-rw-r--r--include/opcode/s390.h23
2 files changed, 24 insertions, 3 deletions
diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog
index a5e79f4..f97e56f 100644
--- a/include/opcode/ChangeLog
+++ b/include/opcode/ChangeLog
@@ -1,3 +1,7 @@
+2015-01-16 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ * s390.h (s390_opcode_cpu_val): Add S390_OPCODE_Z13.
+
2015-01-01 Alan Modra <amodra@gmail.com>
Update year range in copyright notice of all files.
diff --git a/include/opcode/s390.h b/include/opcode/s390.h
index 79e9a60..b47709c 100644
--- a/include/opcode/s390.h
+++ b/include/opcode/s390.h
@@ -41,9 +41,13 @@ enum s390_opcode_cpu_val
S390_OPCODE_Z10,
S390_OPCODE_Z196,
S390_OPCODE_ZEC12,
+ S390_OPCODE_Z13,
S390_OPCODE_MAXCPU
};
+/* Instruction specific flags. */
+#define S390_INSTR_FLAG_OPTPARM 0x1
+
/* The opcode table is an array of struct s390_opcode. */
struct s390_opcode
@@ -74,6 +78,9 @@ struct s390_opcode
/* First cpu this opcode is available for. */
enum s390_opcode_cpu_val min_cpu;
+
+ /* Instruction specific flags. */
+ unsigned int flags;
};
/* The table itself is sorted by major opcode number, and is otherwise
@@ -86,7 +93,7 @@ extern const int s390_num_opcodes;
extern const struct s390_opcode s390_opformats[];
extern const int s390_num_opformats;
-/* Values defined for the flags field of a struct powerpc_opcode. */
+/* Values defined for the flags field of a struct s390_opcode. */
/* The operands table is an array of struct s390_operand. */
@@ -103,7 +110,7 @@ struct s390_operand
};
/* Elements in the table are retrieved by indexing with values from
- the operands field of the powerpc_opcodes table. */
+ the operands field of the s390_opcodes table. */
extern const struct s390_operand s390_operands[];
@@ -151,4 +158,14 @@ extern const struct s390_operand s390_operands[];
/* The operand needs to be a valid GP or FP register pair. */
#define S390_OPERAND_REG_PAIR 0x800
- #endif /* S390_H */
+/* This operand names a vector register. The disassembler uses this
+ to print register names with a leading 'v'. */
+#define S390_OPERAND_VR 0x1000
+
+#define S390_OPERAND_CP16 0x2000
+
+#define S390_OPERAND_OR1 0x4000
+#define S390_OPERAND_OR2 0x8000
+#define S390_OPERAND_OR8 0x10000
+
+#endif /* S390_H */