public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* Commit: MSP430: Fix disassembly of extended index addressing
@ 2014-06-03  8:00 Nick Clifton
  0 siblings, 0 replies; only message in thread
From: Nick Clifton @ 2014-06-03  8:00 UTC (permalink / raw)
  To: binutils

Hi Guys,

  I am applying the patch below to fix a bug in the MSP430
  disassembler.  The problem was that the code to decide when extended
  addressing was being used was checking only the part of the extension
  word that applied to the addressing mode.  This is wrong, because that
  part of the word might be zero, but extended addressing is still being
  used.

Cheers
  Nick

opcodes/ChangeLog

diff --git a/opcodes/msp430-dis.c b/opcodes/msp430-dis.c
index 1284bbe..33a9047 100644
--- a/opcodes/msp430-dis.c
+++ b/opcodes/msp430-dis.c
@@ -427,7 +427,7 @@ msp430_doubleoperand (disassemble_info *info,
 	      sprintf (op1, "0x%04x", PS (dst));
 	      sprintf (comm1, "PC rel. 0x%04x",
 		       PS ((short) addr + 2 + dst));
-	      if (extended_dst)
+	      if (extension_word)
 		{
 		  dst |= extended_dst << 16;
 		  if (dst & 0x80000)
@@ -448,7 +448,7 @@ msp430_doubleoperand (disassemble_info *info,
 	      cmd_len += 4;
 	      *cycles = 6;
 	      sprintf (op1, "&0x%04x", PS (dst));
-	      if (extended_dst)
+	      if (extension_word)
 		{
 		  dst |= extended_dst << 16;
 		  sprintf (op1, "&0x%05x", dst & 0xfffff);
@@ -458,7 +458,7 @@ msp430_doubleoperand (disassemble_info *info,
 	    {
 	      /* Indexed.  */
 	      dst = msp430dis_opcode (addr + 2, info);
-	      if (extended_dst)
+	      if (extension_word)
 		{
 		  dst |= extended_dst << 16;
 		  if (dst & 0x80000)
@@ -519,7 +519,7 @@ msp430_doubleoperand (disassemble_info *info,
 	  sprintf (op1, "#%d", dst);
 	  if (dst > 9 || dst < 0)
 	    sprintf (comm1, "#0x%04x", PS (dst));
-	  if (extended_src)
+	  if (extension_word)
 	    {
 	      dst |= extended_src << 16;
 	      if (dst & 0x80000)
@@ -543,7 +543,7 @@ msp430_doubleoperand (disassemble_info *info,
 	  sprintf (op1, "0x%04x", PS (dst));
 	  sprintf (comm1, "PC rel. 0x%04x",
 		   PS ((short) addr + 2 + dst));
-	  if (extended_src)
+	  if (extension_word)
 	    {
 	      dst |= extended_src << 16;
 	      if (dst & 0x80000)
@@ -561,7 +561,7 @@ msp430_doubleoperand (disassemble_info *info,
 	  cmd_len += 2;
 	  sprintf (op1, "&0x%04x", PS (dst));
 	  sprintf (comm1, "0x%04x", PS (dst));
-	  if (extended_src)
+	  if (extension_word)
 	    {
 	      dst |= extended_src << 16;
 	      sprintf (op1, "&0x%05x", dst & 0xfffff);
@@ -580,7 +580,7 @@ msp430_doubleoperand (disassemble_info *info,
 	  /* Indexed.  */
 	  dst = msp430dis_opcode (addr + 2, info);
 	  cmd_len += 2;
-	  if (extended_src)
+	  if (extension_word)
 	    {
 	      dst |= extended_src << 16;
 	      if (dst & 0x80000)
@@ -625,7 +625,7 @@ msp430_doubleoperand (disassemble_info *info,
 	  sprintf (op2, "0x%04x", PS (dst));
 	  sprintf (comm2, "PC rel. 0x%04x",
 		   PS ((short) addr + cmd_len + dst));
-	  if (extended_dst)
+	  if (extension_word)
 	    {
 	      dst |= extended_dst << 16;
 	      if (dst & 0x80000)
@@ -642,7 +642,7 @@ msp430_doubleoperand (disassemble_info *info,
 	  dst = msp430dis_opcode (addr + cmd_len, info);
 	  cmd_len += 2;
 	  sprintf (op2, "&0x%04x", PS (dst));
-	  if (extended_dst)
+	  if (extension_word)
 	    {
 	      dst |= extended_dst << 16;
 	      sprintf (op2, "&0x%05x", dst & 0xfffff);
@@ -656,7 +656,7 @@ msp430_doubleoperand (disassemble_info *info,
 	    dst |= -1 << 16;
 	  if (dst > 9 || dst < 0)
 	    sprintf (comm2, "0x%04x", PS (dst));
-	  if (extended_dst)
+	  if (extension_word)
 	    {
 	      dst |= extended_dst << 16;
 	      if (dst & 0x80000)

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-06-03  8:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-03  8:00 Commit: MSP430: Fix disassembly of extended index addressing Nick Clifton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).