OSDev
http://osdev.su/

Баги
http://osdev.su/viewtopic.php?f=18&t=496
Страница 3 из 3

Автор:  Himik [ 16 авг 2013, 13:16 ]
Заголовок сообщения:  Re: Баги

Bargest писал(а):
В очередной раз потестил ОСь в QEMU, все ок. Потестил на вмваре - не пашет. Нашел мегабаг в куему.
Оказалось, я случайно указал в PDE таблице (т.е. в пейдж директории) виртуальный адрес таблицы страниц (для страниц, на которые отображено ядро). И оно работало в QEMU! Как - для меня загадка.

Есть предположение. Ведь в физической адресации используется только 36 младших бит (64Г), поэтому после обрезания старших бит от 480Г получился адрес совпадающий с физическим. По спецификации, старшие биты должны содержать нули, но QEMU их не проверяет, а просто отбрасывает.

Автор:  SII [ 16 авг 2013, 13:45 ]
Заголовок сообщения:  Re: Баги

Если память не изменяет (я с IA-32 уже несколько лет дел не имею), по спецификации старшие биты физического адреса, которые не реализованы аппаратно, должны совпадать со старшим из реализованных битов. Если используется только 36 младших разрядов, то при бите 35, равном нулю, биты 63-36 должны быть тоже равны нулю, а если бит 35 равен единице, то и 63-36 должны быть единицами. Но могу и ошибаться, так что лучше по документации проверить, а потом протестировать реакцию эмуляторов.

Автор:  phantom-84 [ 16 авг 2013, 15:19 ]
Заголовок сообщения:  Re: Баги

Не, путаешь с виртуальным каноническим адресом.

Страница 3 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/