Index: /trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/IEMAll.cpp	(revision 60669)
+++ /trunk/src/VBox/VMM/VMMAll/IEMAll.cpp	(revision 60670)
@@ -7586,4 +7586,7 @@
 iemMemStoreDataXdtr(PIEMCPU pIemCpu, uint16_t cbLimit, RTGCPTR GCPtrBase, uint8_t iSegReg, RTGCPTR GCPtrMem, IEMMODE enmOpSize)
 {
+    /** @todo Looks like SIDT and SGDT performce two separate writes here,
+     *        first the limit, then base. Should the base write hit a segment
+     *        limit, the first write isn't rolled back. */
     uint8_t *pu8Src;
     VBOXSTRICTRC rcStrict = iemMemMap(pIemCpu,
@@ -7605,5 +7608,5 @@
         pu8Src[4] = RT_BYTE3(GCPtrBase);
         if (enmOpSize == IEMMODE_16BIT)
-            pu8Src[5] = 0; /* Note! the 286 stored 0xff here. */
+            pu8Src[5] = IEM_GET_TARGET_CPU(pIemCpu) <= IEMTARGETCPU_286 ? 0xff : 0x00;
         else
         {
