X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Fhppa-dis.c;h=24d5b7a0ec0e2e4f32b59ad670098ca11034cb24;hb=cbc6c9b2bf1ccf602b17c44776a23915419a890a;hp=57273a3c3b489ec143fb58785c7c0a9eee2f4fb4;hpb=e3960b961029c8a5e0f46142a5734c78a5be8ff2;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/hppa-dis.c b/opcodes/hppa-dis.c index 57273a3c3b..24d5b7a0ec 100644 --- a/opcodes/hppa-dis.c +++ b/opcodes/hppa-dis.c @@ -377,7 +377,7 @@ print_insn_hppa (memaddr, info) (*info->fprintf_func) (info->stream, "%s", opcode->name); - if (!strchr ("cfCY~nNZFIMadu|", opcode->args[0])) + if (!strchr ("cfCY~nHNZFIMadu|", opcode->args[0])) (*info->fprintf_func) (info->stream, " "); for (s = opcode->args; *s != '\0'; ++s) { @@ -417,20 +417,45 @@ print_insn_hppa (memaddr, info) fput_fp_reg (GET_FIELD (insn, 27, 31), info); break; case '4': - fput_fp_reg (GET_FIELD (insn, 6, 10), info); - break; + { + int reg = GET_FIELD (insn, 6, 10); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } case '6': - fput_fp_reg (GET_FIELD (insn, 11, 15), info); - break; + { + int reg = GET_FIELD (insn, 11, 15); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } case '7': - fput_fp_reg (GET_FIELD (insn, 27, 31), info); - break; + { + int reg = GET_FIELD (insn, 27, 31); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } case '8': - fput_fp_reg (GET_FIELD (insn, 16, 20), info); - break; + { + int reg = GET_FIELD (insn, 16, 20); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } case '9': - fput_fp_reg (GET_FIELD (insn, 21, 25), info); - break; + { + int reg = GET_FIELD (insn, 21, 25); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } case '5': fput_const (extract_5_load (insn), info); break; @@ -618,8 +643,12 @@ print_insn_hppa (memaddr, info) 17, 18)]); break; case 'H': - fputs_filtered (float_format_names[GET_FIELD - (insn, 26, 26)], info); + if (GET_FIELD (insn, 26, 26) == 1) + (*info->fprintf_func) (info->stream, "%s ", + float_format_names[0]); + else + (*info->fprintf_func) (info->stream, "%s ", + float_format_names[1]); break; case 'I': /* if no destination completer and not before a completer