You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "dis-asm.h"
#include "opcode/a29k.h"
assembler uses. */
static void
print_special (num, info)
- int num;
+ unsigned int num;
struct disassemble_info *info;
{
/* Register names of registers 0-SPEC0_NUM-1. */
static char *spec0_names[] = {
"vab", "ops", "cps", "cfg", "cha", "chd", "chc", "rbp", "tmc", "tmr",
- "pc0", "pc1", "pc2", "mmu", "lru"
+ "pc0", "pc1", "pc2", "mmu", "lru", "rsn", "rma0", "rmc0", "rma1", "rmc1",
+ "spc0", "spc1", "spc2", "iba0", "ibc0", "iba1", "ibc1", "dba", "dbc",
+ "cir", "cdr"
};
#define SPEC0_NUM ((sizeof spec0_names) / (sizeof spec0_names[0]))
(*find_byte_func) (insn, &insn0, &insn8, &insn16, &insn24);
+ printf ("%02x%02x%02x%02x ", insn24, insn16, insn8, insn0);
+
/* Handle the nop (aseq 0x40,gr1,gr1) specially */
if ((insn24==0x70) && (insn16==0x40) && (insn8==0x01) && (insn0==0x01)) {
(*info->fprintf_func) (info->stream,"nop");
opcode < &a29k_opcodes[num_opcodes];
++opcode)
{
- if ((insn24<<24) == opcode->opcode)
+ if (((unsigned long) insn24 << 24) == opcode->opcode)
{
char *s;
(*info->fprintf_func) (info->stream, "%d", (insn0 >> 4) & 7);
break;
+ case 'I':
+ if ((insn16 & 3) != 0)
+ (*info->fprintf_func) (info->stream, "%d", insn16 & 3);
+ break;
+
case 'd':
(*info->fprintf_func) (info->stream, "%d", (insn0 >> 2) & 3);
break;