Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Oct 2013 19:42:46 +0200
From:      Torbjorn Granlund <tg@gmplib.org>
To:        freebsd-questions@freebsd.org
Subject:   Re: MULX on haswell triggers ILLOP
Message-ID:  <867gd3lw89.fsf@shell.gmplib.org>
In-Reply-To: <86wql4onvy.fsf@shell.gmplib.org> (Torbjorn Granlund's message of "Wed\, 23 Oct 2013 02\:02\:25 %2B0200")
References:  <86wql4onvy.fsf@shell.gmplib.org>

index | next in thread | previous in thread | raw e-mail

Torbjorn Granlund <tg@gmplib.org> writes:

  I have an Intel Haswell system which runs Xen/NetBSD with Debian 7.2,
  NetBSD 6.1.2 and FreeBSD 9.2 guests.
  
  The FreeBSD guest casts an ILLOP when fed with the new MULX instruction.
  This is a plain integer register based instruction which should require
  zero kernel support.
  
  MULX is part of the BMI2 extensions.
  
  The instruction works fine in the other guest systems.
  
  What is going on?  How can FreeBSD reject this instruction?
  
  I have not tried to run FreeBSD on the bare metal, so I cannot tell if
  BMI2 works as expected there.

It turns out to be another strike of an FreeBSD m4 eval bug.

http://www.freebsd.org/cgi/query-pr.cgi?pr=166994

Unfortunately, this means that GMP will not work on Haswell CPUs running
FreeBSD, where we assemble unsupported instructions using m4 macros.
That is a workaround for FreeBSD's seriously outdated binutils.  Of
course, we could implement a workaround for the m4 bug, but that
workaround would be more complex than a bugfix for m4.

My hopes that FreeBSD will fix this bug are not high, given that it has
been known for 1.5 years.

-- 
Torbjörn


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?867gd3lw89.fsf>