X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=opcodes%2Fz80-dis.c;h=e30d6383de31cd53239cee04dea4d3376c9359f0;hb=99a5596592eda72c5c60b45cdfabb47e426132d5;hp=27d898fed3ea001454bf78e61735575e42f37e13;hpb=9e919b5f1dc4218efeff61c948229559882bca11;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/z80-dis.c b/opcodes/z80-dis.c index 27d898fed3..e30d6383de 100644 --- a/opcodes/z80-dis.c +++ b/opcodes/z80-dis.c @@ -1,16 +1,18 @@ /* Print Z80 and R800 instructions - Copyright 2005 Free Software Foundation, Inc. + Copyright (C) 2005-2019 Free Software Foundation, Inc. Contributed by Arnold Metselaar - This file is free software; you can redistribute it and/or modify + This file is part of the GNU opcodes library. + + This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + the Free Software Foundation; either version 3, or (at your option) + any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software @@ -18,7 +20,7 @@ MA 02110-1301, USA. */ #include "sysdep.h" -#include "dis-asm.h" +#include "disassemble.h" #include struct buffer @@ -126,8 +128,10 @@ static int prt_rr_nn (struct buffer *buf, disassemble_info * info, char *txt) { char mytxt[TXTSIZ]; + int rr; - snprintf (mytxt, TXTSIZ, txt, rr_str[(buf->data[0] >> 4) & 3]); + rr = (buf->data[buf->n_fetch - 1] >> 4) & 3; + snprintf (mytxt, TXTSIZ, txt, rr_str[rr]); return prt_nn (buf, info, mytxt); } @@ -295,9 +299,11 @@ struct tab_elt opc_ed[] = { 0x4A, 0xCF, prt_rr, "adc hl," }, { 0x4B, 0xCF, prt_rr_nn, "ld %s,(0x%%04x)" }, { 0x4D, 0xFF, prt, "reti" }, + { 0x4F, 0xFF, prt, "ld r,a" }, { 0x56, 0xFF, prt, "im 1" }, { 0x57, 0xFF, prt, "ld a,i" }, { 0x5E, 0xFF, prt, "im 2" }, + { 0x5F, 0xFF, prt, "ld a,r" }, { 0x67, 0xFF, prt, "rrd" }, { 0x6F, 0xFF, prt, "rld" }, { 0xA0, 0xE4, cis, "" }, @@ -308,7 +314,7 @@ struct tab_elt opc_ed[] = }; static int -pref_ed (struct buffer * buf, disassemble_info * info, +pref_ed (struct buffer * buf, disassemble_info * info, char* txt ATTRIBUTE_UNUSED) { struct tab_elt *p;