This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] Support for the sparc %pmcdper privileged register.
- From: Jose E.Marchesi <jemarch at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 25 Aug 2015 15:10:23 -0000
- Subject: [binutils-gdb] Support for the sparc %pmcdper privileged register.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=38074311927d012e4cbd28d825878974c9209f77
commit 38074311927d012e4cbd28d825878974c9209f77
Author: Jose E. Marchesi <jose.marchesi@oracle.com>
Date: Tue Aug 25 17:16:34 2015 +0200
Support for the sparc %pmcdper privileged register.
opcodes/ChangeLog:
2015-08-25 Jose E. Marchesi <jose.marchesi@oracle.com>
* sparc-dis.c (print_insn_sparc): Handle the privileged register
%pmcdper.
gas/ChangeLog:
2015-08-25 Jose E. Marchesi <jose.marchesi@oracle.com>
* config/tc-sparc.c (priv_reg_table): New privileged register
%pmcdper.
gas/testsuite/ChangeLog:
2015-08-25 Jose E. Marchesi <jose.marchesi@oracle.com>
* gas/sparc/wrpr.s: Test writing to the privileged %pmcdper
register.
* gas/sparc/wrpr.d: ...and the expected result.
* gas/sparc/rdpr.s: Test reading from the privileged %pmcdper
register.
* gas/sparc/rdpr.d: ...and the expected result.
Diff:
---
gas/ChangeLog | 5 +++++
gas/config/tc-sparc.c | 1 +
gas/testsuite/ChangeLog | 9 +++++++++
gas/testsuite/gas/sparc/rdpr.d | 1 +
gas/testsuite/gas/sparc/rdpr.s | 1 +
gas/testsuite/gas/sparc/wrpr.d | 1 +
gas/testsuite/gas/sparc/wrpr.s | 1 +
opcodes/ChangeLog | 5 +++++
opcodes/sparc-dis.c | 8 ++++++--
9 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3bcd8e6..02d94ad 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2015-08-25 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * config/tc-sparc.c (priv_reg_table): New privileged register
+ %pmcdper.
+
2015-08-21 Nick Clifton <nickc@redhat.com>
PR gas/18581
diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c
index 6e7a3ef..28e6ec8 100644
--- a/gas/config/tc-sparc.c
+++ b/gas/config/tc-sparc.c
@@ -805,6 +805,7 @@ struct priv_reg_entry priv_reg_table[] =
{"wstate", 14},
{"fq", 15},
{"gl", 16},
+ {"pmcdper", 23},
{"ver", 31},
{"", -1}, /* End marker. */
};
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 6b85249..4d4dcbc 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2015-08-25 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * gas/sparc/wrpr.s: Test writing to the privileged %pmcdper
+ register.
+ * gas/sparc/wrpr.d: ...and the expected result.
+ * gas/sparc/rdpr.s: Test reading from the privileged %pmcdper
+ register.
+ * gas/sparc/rdpr.d: ...and the expected result.
+
2015-08-24 Jan Stancek <jstancek@redhat.com>
* gas/i386/intel.s: Add test of disassembly of a potential
diff --git a/gas/testsuite/gas/sparc/rdpr.d b/gas/testsuite/gas/sparc/rdpr.d
index 6ddc24a..58ec2ef 100644
--- a/gas/testsuite/gas/sparc/rdpr.d
+++ b/gas/testsuite/gas/sparc/rdpr.d
@@ -25,3 +25,4 @@ Disassembly of section .text:
3c: a1 53 c0 00 rdpr %fq, %l0
40: a3 54 00 00 rdpr %gl, %l1
44: a5 57 c0 00 rdpr %ver, %l2
+ 48: a7 55 c0 00 rdpr %pmcdper, %l3
diff --git a/gas/testsuite/gas/sparc/rdpr.s b/gas/testsuite/gas/sparc/rdpr.s
index 1566035..0bf3db8 100644
--- a/gas/testsuite/gas/sparc/rdpr.s
+++ b/gas/testsuite/gas/sparc/rdpr.s
@@ -18,3 +18,4 @@
rdpr %fq,%l0
rdpr %gl,%l1
rdpr %ver,%l2
+ rdpr %pmcdper,%l3
diff --git a/gas/testsuite/gas/sparc/wrpr.d b/gas/testsuite/gas/sparc/wrpr.d
index d0c1b35..5a9b6f9 100644
--- a/gas/testsuite/gas/sparc/wrpr.d
+++ b/gas/testsuite/gas/sparc/wrpr.d
@@ -23,3 +23,4 @@ Disassembly of section .text:
34: 9b 93 80 00 wrpr %sp, %otherwin
38: 9d 93 c0 00 wrpr %o7, %wstate
3c: a1 94 00 00 wrpr %l0, %gl
+ 40: af 94 c0 00 wrpr %l3, %pmcdper
diff --git a/gas/testsuite/gas/sparc/wrpr.s b/gas/testsuite/gas/sparc/wrpr.s
index e32b149..a17182e 100644
--- a/gas/testsuite/gas/sparc/wrpr.s
+++ b/gas/testsuite/gas/sparc/wrpr.s
@@ -16,3 +16,4 @@
wrpr %o6,%otherwin
wrpr %o7,%wstate
wrpr %l0,%gl
+ wrpr %l3,%pmcdper
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 3529dbc..2a9795e 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2015-08-25 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * sparc-dis.c (print_insn_sparc): Handle the privileged register
+ %pmcdper.
+
2015-08-24 Jan Stancek <jstancek@redhat.com>
* i386-dis.c (print_insn): Fix decoding of three byte operands.
diff --git a/opcodes/sparc-dis.c b/opcodes/sparc-dis.c
index 5247526..a2e77f0 100644
--- a/opcodes/sparc-dis.c
+++ b/opcodes/sparc-dis.c
@@ -86,7 +86,7 @@ static char *v9_priv_reg_names[] =
"tpc", "tnpc", "tstate", "tt", "tick", "tba", "pstate", "tl",
"pil", "cwp", "cansave", "canrestore", "cleanwin", "otherwin",
"wstate", "fq", "gl"
- /* "ver" - special cased */
+ /* "ver" and "pmcdper" - special cased */
};
/* These are ordered according to there register number in
@@ -813,6 +813,8 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
case '?':
if (X_RS1 (insn) == 31)
(*info->fprintf_func) (stream, "%%ver");
+ else if (X_RS1 (insn) == 23)
+ (*info->fprintf_func) (stream, "%%pmcdper");
else if ((unsigned) X_RS1 (insn) < 17)
(*info->fprintf_func) (stream, "%%%s",
v9_priv_reg_names[X_RS1 (insn)]);
@@ -821,7 +823,9 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
break;
case '!':
- if ((unsigned) X_RD (insn) < 17)
+ if (X_RD (insn) == 23)
+ (*info->fprintf_func) (stream, "%%pmcdper");
+ else if ((unsigned) X_RD (insn) < 17)
(*info->fprintf_func) (stream, "%%%s",
v9_priv_reg_names[X_RD (insn)]);
else