daily update
[deliverable/binutils-gdb.git] / opcodes / sparc-dis.c
index 1b1748ce0f4e9bd870145960a04f989bb2c0f3e6..bfa7ea29931e78b8f74028efdb870478794e5d07 100644 (file)
@@ -85,10 +85,21 @@ static char *v9_priv_reg_names[] =
 {
   "tpc", "tnpc", "tstate", "tt", "tick", "tba", "pstate", "tl",
   "pil", "cwp", "cansave", "canrestore", "cleanwin", "otherwin",
-  "wstate", "fq"
+  "wstate", "fq", "gl"
   /* "ver" - special cased */
 };
 
+/* These are ordered according to there register number in
+   rdhpr and wrhpr insns.  */
+static char *v9_hpriv_reg_names[] =
+{
+  "hpstate", "htstate", "resv2", "hintp", "resv4", "htba", "hver",
+  "resv7", "resv8", "resv9", "resv10", "resv11", "resv12", "resv13", 
+  "resv14", "resv15", "resv16", "resv17", "resv18", "resv19", "resv20",
+  "resv21", "resv22", "resv23", "resv24", "resv25", "resv26", "resv27",
+  "resv28", "resv29", "resv30", "hstick_cmpr"
+};
+
 /* These are ordered according to there register number in
    rd and wr insns (-16).  */
 static char *v9a_asr_reg_names[] =
@@ -693,7 +704,7 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
                    break;
 
                  case '3':
-                   (info->fprintf_func) (stream, "%d", X_IMM (insn, 3));
+                   (info->fprintf_func) (stream, "%ld", X_IMM (insn, 3));
                    break;
 
                  case 'K':
@@ -768,7 +779,7 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
                  case '?':
                    if (X_RS1 (insn) == 31)
                      (*info->fprintf_func) (stream, "%%ver");
-                   else if ((unsigned) X_RS1 (insn) < 16)
+                   else if ((unsigned) X_RS1 (insn) < 17)
                      (*info->fprintf_func) (stream, "%%%s",
                                             v9_priv_reg_names[X_RS1 (insn)]);
                    else
@@ -776,13 +787,29 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
                    break;
 
                  case '!':
-                   if ((unsigned) X_RD (insn) < 15)
+                   if ((unsigned) X_RD (insn) < 17)
                      (*info->fprintf_func) (stream, "%%%s",
                                             v9_priv_reg_names[X_RD (insn)]);
                    else
                      (*info->fprintf_func) (stream, "%%reserved");
                    break;
 
+                 case '$':
+                   if ((unsigned) X_RS1 (insn) < 32)
+                     (*info->fprintf_func) (stream, "%%%s",
+                                            v9_hpriv_reg_names[X_RS1 (insn)]);
+                   else
+                     (*info->fprintf_func) (stream, "%%reserved");
+                   break;
+
+                 case '%':
+                   if ((unsigned) X_RD (insn) < 32)
+                     (*info->fprintf_func) (stream, "%%%s",
+                                            v9_hpriv_reg_names[X_RD (insn)]);
+                   else
+                     (*info->fprintf_func) (stream, "%%reserved");
+                   break;
+
                  case '/':
                    if (X_RS1 (insn) < 16 || X_RS1 (insn) > 25)
                      (*info->fprintf_func) (stream, "%%reserved");
@@ -806,16 +833,16 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
                      if (name)
                        (*info->fprintf_func) (stream, "%s", name);
                      else
-                       (*info->fprintf_func) (stream, "%d", X_RD (insn));
+                       (*info->fprintf_func) (stream, "%ld", X_RD (insn));
                      break;
                    }
 
                  case 'M':
-                   (*info->fprintf_func) (stream, "%%asr%d", X_RS1 (insn));
+                   (*info->fprintf_func) (stream, "%%asr%ld", X_RS1 (insn));
                    break;
 
                  case 'm':
-                   (*info->fprintf_func) (stream, "%%asr%d", X_RD (insn));
+                   (*info->fprintf_func) (stream, "%%asr%ld", X_RD (insn));
                    break;
 
                  case 'L':
@@ -840,7 +867,7 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
                      if (name)
                        (*info->fprintf_func) (stream, "%s", name);
                      else
-                       (*info->fprintf_func) (stream, "(%d)", X_ASI (insn));
+                       (*info->fprintf_func) (stream, "(%ld)", X_ASI (insn));
                      break;
                    }
 
@@ -873,7 +900,7 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
                    break;
 
                  case 'x':
-                   (*info->fprintf_func) (stream, "%d",
+                   (*info->fprintf_func) (stream, "%ld",
                                           ((X_LDST_I (insn) << 8)
                                            + X_ASI (insn)));
                    break;
This page took 0.041427 seconds and 4 git commands to generate.