From 93fd00fbbf104fc022215ecff7cef252bd4babb8 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Mon, 31 Aug 1992 17:03:47 +0000 Subject: [PATCH] Handle new v9 insn argument codes, and delete support for obsolete ones. Otherwise not updated or tested, since v9 support is obviously incomplete, and it can't possibly work right without some effort. --- binutils/sparc-pinsn.c | 54 +++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/binutils/sparc-pinsn.c b/binutils/sparc-pinsn.c index 2430b5d4f61..a512c77ce34 100644 --- a/binutils/sparc-pinsn.c +++ b/binutils/sparc-pinsn.c @@ -251,16 +251,6 @@ memcpy(&insn,buffer, sizeof (insn)); freg (insn.rs2); break; -#ifndef NO_V9 -/* Somebody who know needs to define rs3. - case 'j': - case 'u': * double/even * - case 'U': * quad/multiple of 4 * - freg (insn.rs3); - break; -*/ -#endif /* NO_V9 */ - case 'g': case 'H': /* double/even */ case 'J': /* quad/multiple of 4 */ @@ -311,6 +301,38 @@ memcpy(&insn,buffer, sizeof (insn)); break; #ifndef NO_V9 + case 'I': /* 11 bit immediate. */ + case 'j': /* 10 bit immediate. */ + { + /* We cannot trust the compiler to sign-extend + when extracting the bitfield, hence the shifts. */ + int imm; + + if (*s == 'I') + imm = ((int) insn.imm13 << 21) >> 21; + else + imm = ((int) insn.imm13 << 22) >> 22; + + /* Check to see whether we have a 1+i, and take + note of that fact. + + Note: because of the way we sort the table, + we will be matching 1+i rather than i+1, + so it is OK to assume that i is after +, + not before it. */ + if (found_plus) + imm_added_to_rs1 = 1; + + if (imm <= 9) + fprintf (stream, "%d", imm); + else + fprintf (stream, "%#x", (unsigned) imm); + } + break; + + + + case 'k': print_address ((bfd_vma) (memaddr @@ -326,10 +348,6 @@ memcpy(&insn,buffer, sizeof (insn)); stream); break; - case 'Y': - fputs ("%amr", stream); - break; - case '6': case '7': case '8': @@ -344,6 +362,14 @@ memcpy(&insn,buffer, sizeof (insn)); case 'Z': fputs ("xcc", stream); break; + + case 'E': + fputs ("%ccr", stream); + break; + + case 's': + fputs ("%fprs", stream); + break; #endif /* NO_V9 */ case 'M': -- 2.30.2