diff options
author | Jeff Law <law@redhat.com> | 1999-08-05 23:02:01 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1999-08-05 23:02:01 +0000 |
commit | feb129926a8d12656f1ca4b7a8bb10268d3af4fb (patch) | |
tree | a496155743b4b018a58df98d61d75912d333facb /opcodes/hppa-dis.c | |
parent | c5e52916423bc0f29578ef688ad7d1e6b1668fb8 (diff) | |
download | gdb-feb129926a8d12656f1ca4b7a8bb10268d3af4fb.zip gdb-feb129926a8d12656f1ca4b7a8bb10268d3af4fb.tar.gz gdb-feb129926a8d12656f1ca4b7a8bb10268d3af4fb.tar.bz2 |
* hppa-dis.c (print_insn_hppa): Change condition args to use
'?' prefix.
Diffstat (limited to 'opcodes/hppa-dis.c')
-rw-r--r-- | opcodes/hppa-dis.c | 126 |
1 files changed, 72 insertions, 54 deletions
diff --git a/opcodes/hppa-dis.c b/opcodes/hppa-dis.c index 8e48d67..eb2c612 100644 --- a/opcodes/hppa-dis.c +++ b/opcodes/hppa-dis.c @@ -305,7 +305,7 @@ print_insn_hppa (memaddr, info) (*info->fprintf_func) (info->stream, "%s", opcode->name); - if (!strchr ("cfCY<?!@-+&U>~nHNZFIMadu|", opcode->args[0])) + if (!strchr ("cfCY?-+nHNZFIu", opcode->args[0])) (*info->fprintf_func) (info->stream, " "); for (s = opcode->args; *s != '\0'; ++s) { @@ -403,54 +403,77 @@ print_insn_hppa (memaddr, info) (*info->fprintf_func) (info->stream, "%s ", short_bytes_compl_names[GET_COMPL (insn)]); break; - /* these four conditions are for the set of instructions - which distinguish true/false conditions by opcode rather - than by the 'f' bit (sigh): comb, comib, addb, addib */ - case '<': - fputs_filtered (compare_cond_names[GET_FIELD (insn, 16, 18)], - info); - break; + + /* Handle conditions. */ case '?': - fputs_filtered (compare_cond_names[GET_FIELD (insn, 16, 18) - + GET_FIELD (insn, 4, 4) * 8], info); - break; - case '@': - fputs_filtered (add_cond_names[GET_FIELD (insn, 16, 18) - + GET_FIELD (insn, 4, 4) * 8], info); - break; - case 'a': - (*info->fprintf_func) (info->stream, "%s ", - compare_cond_names[GET_COND (insn)]); - break; - case 'd': - (*info->fprintf_func) (info->stream, "%s ", - add_cond_names[GET_COND (insn)]); - break; - case '!': - (*info->fprintf_func) (info->stream, "%s", - add_cond_names[GET_FIELD (insn, 16, 18)]); - break; + { + s++; + switch (*s) + { + case 'f': + (*info->fprintf_func) (info->stream, "%s ", + float_comp_names[GET_FIELD + (insn, 27, 31)]); + break; + + /* these four conditions are for the set of instructions + which distinguish true/false conditions by opcode + rather than by the 'f' bit (sigh): comb, comib, + addb, addib */ + case 't': + fputs_filtered (compare_cond_names[GET_FIELD (insn, 16, + 18)], + info); + break; + case 'n': + fputs_filtered (compare_cond_names[GET_FIELD (insn, 16, + 18) + + GET_FIELD (insn, 4, 4) * 8], info); + break; + case '@': + fputs_filtered (add_cond_names[GET_FIELD (insn, 16, 18) + + GET_FIELD (insn, 4, 4) * 8], info); + break; + case 's': + (*info->fprintf_func) (info->stream, "%s ", + compare_cond_names[GET_COND (insn)]); + break; + case 'a': + (*info->fprintf_func) (info->stream, "%s ", + add_cond_names[GET_COND (insn)]); + break; + case 'd': + (*info->fprintf_func) (info->stream, "%s", + add_cond_names[GET_FIELD (insn, + 16, + 18)]); + break; + + case 'l': + (*info->fprintf_func) (info->stream, "%s ", + logical_cond_names[GET_COND (insn)]); + break; + case 'u': + (*info->fprintf_func) (info->stream, "%s ", + unit_cond_names[GET_COND (insn)]); + break; + case 'y': + case 'x': + case 'b': + (*info->fprintf_func) + (info->stream, "%s", + shift_cond_names[GET_FIELD (insn, 16, 18)]); + + /* If the next character in args is 'n', it will handle + putting out the space. */ + if (s[1] != 'n') + (*info->fprintf_func) (info->stream, " "); + break; + + } + break; + } - case '&': - (*info->fprintf_func) (info->stream, "%s ", - logical_cond_names[GET_COND (insn)]); - break; - case 'U': - (*info->fprintf_func) (info->stream, "%s ", - unit_cond_names[GET_COND (insn)]); - break; - case '|': - case '>': - case '~': - (*info->fprintf_func) - (info->stream, "%s", - shift_cond_names[GET_FIELD (insn, 16, 18)]); - - /* If the next character in args is 'n', it will handle - putting out the space. */ - if (s[1] != 'n') - (*info->fprintf_func) (info->stream, " "); - break; case 'V': fput_const (extract_5_store (insn), info); break; @@ -565,7 +588,7 @@ print_insn_hppa (memaddr, info) case 'F': /* if no destination completer and not before a completer for fcmp, need a space here */ - if (GET_FIELD (insn, 21, 22) == 1 || s[1] == 'M') + if (GET_FIELD (insn, 21, 22) == 1 || s[1] == '?') fputs_filtered (float_format_names[GET_FIELD (insn, 19, 20)], info); else @@ -589,7 +612,7 @@ print_insn_hppa (memaddr, info) case 'I': /* if no destination completer and not before a completer for fcmp, need a space here */ - if (GET_FIELD (insn, 21, 22) == 1 || s[1] == 'M') + if (GET_FIELD (insn, 21, 22) == 1 || s[1] == '?') fputs_filtered (float_format_names[GET_FIELD (insn, 20, 20)], info); else @@ -610,11 +633,6 @@ print_insn_hppa (memaddr, info) else fput_fp_reg (GET_FIELD (insn, 11, 15), info); break; - case 'M': - (*info->fprintf_func) (info->stream, "%s ", - float_comp_names[GET_FIELD - (insn, 27, 31)]); - break; default: (*info->fprintf_func) (info->stream, "%c", *s); break; |