From owner-freebsd-ia64 Sat Apr 27 12:51:39 2002 Delivered-To: freebsd-ia64@freebsd.org Received: from kayak.xcllnt.net (209-128-86-226.bayarea.net [209.128.86.226]) by hub.freebsd.org (Postfix) with ESMTP id 4983E37B417 for ; Sat, 27 Apr 2002 12:51:36 -0700 (PDT) Received: from dhcp01.pn.xcllnt.net (dhcp01.pn.xcllnt.net [192.168.4.201]) by kayak.xcllnt.net (8.11.6/8.11.4) with ESMTP id g3RJpYJ81993; Sat, 27 Apr 2002 12:51:34 -0700 (PDT) (envelope-from marcel@kayak.pn.xcllnt.net) Received: from dhcp01.pn.xcllnt.net (localhost [127.0.0.1]) by dhcp01.pn.xcllnt.net (8.12.2/8.12.2) with ESMTP id g3RJpjQi000731; Sat, 27 Apr 2002 12:51:45 -0700 (PDT) (envelope-from marcel@dhcp01.pn.xcllnt.net) Received: (from marcel@localhost) by dhcp01.pn.xcllnt.net (8.12.2/8.12.2/Submit) id g3RJpiUE000730; Sat, 27 Apr 2002 12:51:44 -0700 (PDT) Date: Sat, 27 Apr 2002 12:51:44 -0700 From: Marcel Moolenaar To: bug-binutils@gnu.org Cc: ia64@freebsd.org Subject: ia64: incorrect encoding of branch whether hints for indirect calls. Message-ID: <20020427195144.GA628@dhcp01.pn.xcllnt.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.27i Sender: owner-freebsd-ia64@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Guys, I run into the following, non-critical AFAICT, encoding bug in the encoding of indirect call instructions (format B5). The branch whether hint (BWH) is 3 bits, starting at bit 32. It is treated as if it was only 2 bits starting at bit 33. This is currently valid because there's a one to one mapping. The bug is in the value of bit 32. The current encoding does not set bit 32 and thus encodes the existing values using the currently unused bit combinations. See also: SDM v2.0, volume 3, page 3:317, tables 4-50 and 4-51. Current Itanium implementations don't raise an exception. I haven't tried it on Itanium 2. Note that it does confuse ski(1). It decodes an indirect call as: br.call.bwh0.many b0=b6;; objdump(1) gives: br.call.sptk.many b0=b6;; Note that ski(1) ignores the hint, so it's not complaining... FYI, -- Marcel Moolenaar USPA: A-39004 marcel@xcllnt.net To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ia64" in the body of the message