From: Jim Wilson Date: Mon, 31 Aug 1992 17:03:47 +0000 (+0000) Subject: Handle new v9 insn argument codes, and delete support for obsolete ones. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=93fd00fbbf104fc022215ecff7cef252bd4babb8;p=binutils-gdb.git 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. --- 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':