Paging
У кого какие идеи, почему может происходить сбой при установке бита PG в CR0? Таблицы преобразование верны, В CR3 - правильное значение.
В Bochs и на одном компьютере работает, на другом - нет.
MOV EAX,CR0
OR EAX,80000000h
MOV CR0,EAX(уже в З/Р)
После выполнения последней команды и происходит сбой.
Привет всем!
У кого какие идеи, почему может происходить сбой при установке бита PG в CR0? Таблицы преобразование верны, В CR3 - правильное значение.
В Bochs и на одном компьютере работает, на другом - нет.
MOV EAX,CR0
OR EAX,80000000h
MOV CR0,EAX(уже в З/Р)
После выполнения последней команды и происходит сбой.
Приветствую.
Попробуй каталог выравнить на границу 1000h
Иногда с этим достаточно интересные вещи происходят..
Приветствую.
Попробуй каталог выравнить на границу 1000h
Иногда с этим достаточно интересные вещи происходят..
В смысле, на страницу? Выровнен, по адресу 100000h
...
сократи обработчик до тривиальных
mov al, 20h
out 20h, al
и проверь...
Ты кстати сейчас чего пишешь ?
Проблема еще может быть в обработчике таймера (у меня такое было, я так и не понял, в чем была проблема, просто переписал его под другому)
сократи обработчик до тривиальных
mov al, 20h
out 20h, al
и проверь...
Ты кстати сейчас чего пишешь ?
Хм... Что пишу?... Да, в-общем, систему.(здесь, на форуме, 1-2 страницы назад можно найти о ней.)
А обработчик здесь совсем уж ни при чем.
Сбой происходит при отключенных прерываниях, сразу после выполнения mov cr0,eax.
Кстати,еще:
когда переместил каталог на 000000h, стало работать везде, но при каталоге на 100000,200000,300000......700000 работает только в Bochs и на моем лапотопе, а на Cyrix с Award БИОСом только когда таблицы преобразования находятся по адресу 000000h, т.е. только в первом мегабайте. Однако, без страничной трансляции могу писать/читать за пределами первого мегабайта - таблицы-то я формировал и проверял, считывая нужные поля...