diff options
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-sparc.c | 1 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/rdpr.d | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/rdpr.s | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/wrpr.d | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/wrpr.s | 1 | ||||
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | 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 |