This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] [PowerPC] Use consistent types for holding insns, etc.


On Fri, Dec 01, 2017 at 05:10:30PM -0600, Bill Schmidt wrote:
> On Dec 1, 2017, at 4:26 PM, Peter Bergner <bergner@vnet.ibm.com> wrote:
> > I know, but it never hurts to have another set of eyes on something
> > so bug. :-)   
> 
> Now *that's* a Freudian slip!

:-)

Correct sign extension.  Fixes "FAIL: VLE relocations 3"

	* ppc-opc.c (extract_li20): Rewrite.

diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 81335c6..ad26c4f 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -571,13 +571,9 @@ extract_li20 (uint64_t insn,
 	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
 	      int *invalid ATTRIBUTE_UNUSED)
 {
-  int64_t ext = ((insn & 0x4000) == 0x4000) ? 0xfff00000 : 0x00000000;
-
-  return (ext
-	  | (((insn >> 11) & 0xf) << 16)
-	  | (((insn >> 17) & 0xf) << 12)
-	  | (((insn >> 16) & 0x1) << 11)
-	  | (insn & 0x7ff));
+  return ((((insn << 5) & 0xf0000)
+	   | ((insn >> 5) & 0xf800)
+	   | (insn & 0x7ff)) ^ 0x80000) - 0x80000;
 }
 
 /* The 2-bit L field in a SYNC or WC field in a WAIT instruction.


-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]