[PATCH] x86: accept LOCK on control register accesses only with ModR/M.reg == 0

Christian Ludloff ludloff@gmail.com
Fri Jul 10 07:42:07 GMT 2026


If you zoom out, there are four variants of MOV
from/to CRx, listed here in chronological order:

1) 32-bit CR0/2/3 (386, !PM64)
2) 32-bit CR4 (486, !PM64)
3) 64-bit CR0/2/3/4/8 (x64, PM64)
4) 32-bit CR8D (LockMovCr0/AltMovCr8, !PM64)

In theory 1) and 2) are D-suffixed just like 4). As
they predate x86, the suffix was always omitted.

Some tools support the entire 0-7/15/31 ranges
that can be encoded with classic/x64/APX. And
the mod=00b/01b/10b aliases, for the 11b case.

Anyway... treating 64-bit CR8 and 32-bit CR8D
as distinct... can make x86 asm life less painful.

:)

--
C.


More information about the Binutils mailing list