diff options
author | H. Peter Anvin <hpa@zytor.com> | 2012-02-24 21:51:46 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2012-02-24 21:57:17 -0800 |
commit | 4ecd5d79fc18197838852479cff3ffb1abe78e1a (patch) | |
tree | d53db43dcbb42b7266c9286243ee8784128f8a53 /disasm.c | |
parent | 442a05a8975d53e5e56dd7630ae4480150e5bff4 (diff) | |
download | nasm-4ecd5d79fc18197838852479cff3ffb1abe78e1a.tar.gz nasm-4ecd5d79fc18197838852479cff3ffb1abe78e1a.tar.bz2 nasm-4ecd5d79fc18197838852479cff3ffb1abe78e1a.zip |
HLE: Implement the basic mechanism for XACQUIRE/XRELEASE
This implements the mechanism for XACQUIRE/XRELEASE. It does not
include the necessary annotations in insns.dat.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'disasm.c')
-rw-r--r-- | disasm.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -703,6 +703,27 @@ static int matches(const struct itemplate *t, uint8_t *data, break; } + case 0271: + if (prefix->rep == 0xF3) + drep = P_XRELEASE; + break; + + case 0272: + if (prefix->rep == 0xF2) + drep = P_XACQUIRE; + else if (prefix->rep == 0xF3) + drep = P_XRELEASE; + break; + + case 0273: + if (prefix->lock == 0xF0) { + if (prefix->rep == 0xF2) + drep = P_XACQUIRE; + else if (prefix->rep == 0xF3) + drep = P_XRELEASE; + } + break; + case 0310: if (asize != 16) return false; |