MULX on haswell triggers ILLOP

Tijl Coosemans tijl at
Wed Oct 23 18:23:06 UTC 2013

On Wed, 23 Oct 2013 19:42:46 +0200 Torbjorn Granlund wrote:
> Torbjorn Granlund <tg at> 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.
> 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.

A comment on that PR says that it has been fixed in

I don't know if it's feasible to merge this to stable/9.  Committer CCed.

More information about the freebsd-questions mailing list