| Index: opcodes/sparc-dis.c
|
| diff --git a/opcodes/sparc-dis.c b/opcodes/sparc-dis.c
|
| index b7f0cc2ace2270698914de616ffba3cb232ef6b3..73f01d3f44ec05078e829bdd5e0035331c610422 100644
|
| --- a/opcodes/sparc-dis.c
|
| +++ b/opcodes/sparc-dis.c
|
| @@ -1,6 +1,6 @@
|
| /* Print SPARC instructions.
|
| Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
| - 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
|
| + 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2012
|
| Free Software Foundation, Inc.
|
|
|
| This file is part of the GNU opcodes library.
|
| @@ -20,9 +20,8 @@
|
| Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
| MA 02110-1301, USA. */
|
|
|
| -#include <stdio.h>
|
| -
|
| #include "sysdep.h"
|
| +#include <stdio.h>
|
| #include "opcode/sparc.h"
|
| #include "dis-asm.h"
|
| #include "libiberty.h"
|
| @@ -108,8 +107,8 @@ static char *v9_hpriv_reg_names[] =
|
| static char *v9a_asr_reg_names[] =
|
| {
|
| "pcr", "pic", "dcr", "gsr", "set_softint", "clear_softint",
|
| - "softint", "tick_cmpr", "stick", "stick_cmpr", "resv26",
|
| - "resv27", "cps"
|
| + "softint", "tick_cmpr", "stick", "stick_cmpr", "cfr",
|
| + "pause", "cps"
|
| };
|
|
|
| /* Macros used to extract instruction fields. Not all fields have
|
| @@ -129,6 +128,7 @@ static char *v9a_asr_reg_names[] =
|
|
|
| /* These are for v9. */
|
| #define X_DISP16(i) (((((i) >> 20) & 3) << 14) | (((i) >> 0) & 0x3fff))
|
| +#define X_DISP10(i) (((((i) >> 19) & 3) << 8) | (((i) >> 5) & 0xff))
|
| #define X_DISP19(i) (((i) >> 0) & 0x7ffff)
|
| #define X_MEMBAR(i) ((i) & 0x7f)
|
|
|
| @@ -703,6 +703,10 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
|
| }
|
| break;
|
|
|
| + case ')': /* 5 bit unsigned immediate from RS3. */
|
| + (info->fprintf_func) (stream, "%#x", X_RS3 (insn));
|
| + break;
|
| +
|
| case 'X': /* 5 bit unsigned immediate. */
|
| case 'Y': /* 6 bit unsigned immediate. */
|
| {
|
| @@ -743,6 +747,11 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
|
| break;
|
| }
|
|
|
| + case '=':
|
| + info->target = memaddr + SEX (X_DISP10 (insn), 10) * 4;
|
| + (*info->print_address_func) (info->target, info);
|
| + break;
|
| +
|
| case 'k':
|
| info->target = memaddr + SEX (X_DISP16 (insn), 16) * 4;
|
| (*info->print_address_func) (info->target, info);
|
|
|