target/i386: seg_helper: Correct segment selector nullification in the RET/IRET helper
authorBin Meng <bin.meng@windriver.com>
Fri, 13 Nov 2020 09:56:18 +0000 (17:56 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 10 Dec 2020 17:15:00 +0000 (12:15 -0500)
commitc2ba0515f2df58a661fcb5d6485139877d92ab1b
tree9f9ddc8815192d2682a8950263d64ff856448c1c
parentc1bb5418e32ec70c72af332354b5963eab7a5579
target/i386: seg_helper: Correct segment selector nullification in the RET/IRET helper

Per the SDM, when returning to outer privilege level, for segment
registers (ES, FS, GS, and DS) if the check fails, the segment
selector becomes null, but QEMU clears the base/limit/flags as well
as nullifying the segment selector, which should be a spec violation.

Real hardware seems to be compliant with the spec, at least on one
Coffee Lake board I tested.

Signed-off-by: Bin Meng <bin.meng@windriver.com>
Message-Id: <1605261378-77971-1-git-send-email-bmeng.cn@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target/i386/seg_helper.c