Кто всё-таки виноват, и что с этим делать?
Спецификации интела гласят (7.3):
8. Saves the state of the current (old) task in the current task’s TSS.
…
12. The TSS state is loaded into the processor.
Сначала сохраняем, потом загружаем, что логично. Но, пытаясь воссоздать
этот код, я наткнулся на исключение #TS в VirtualBox и QEMU (в vmWare и реальных компах всё было ок). Копаясь в проблеме, было выяснено, что в сегментных регистрах TSS — нули, то-есть VirtualBox и QEMU не сохраняют текущее состояние задачи (а точнее — делают это после загрузки.
Пруф 1:375,
пруф 2:386).
Временно решил проблему принудительным ручным заполнением TSS. Что верно то в итоге? Какому из гигантов верить?