Переключение процессоров Intel в защищенный режим

 

Переключение процессора из защищенного режима в реальный

Переключение процессора из защищенного режима в реальный возможно не только через аппаратный сброс, как это было у 80286, но и сбросом бита РЕ в CR0. При этом для корректного перехода, согласно документации на процессоры должны выполняться следующие действия.
1. Запретить маскируемые прерывания флагом IF, немаскируемые — внешней схемой.
2. Если включена страничная трансляция, то необходимо обеспечить равенство линейных и физических адресов для текущего исполняемого кода (перейти на такую страницу), а также для таблиц GDT и IDT. Обнулить бит PG в регистре CR0 и загрузить нули в CR3 для очистки кэш-буфера TLB.
3. Передать управление читаемому сегменту с лимитом 64 Кбайт.
4. Загрузить в сегментные регистры SS, DS, ES, FS и GS селектор дескриптора (ненулевой), в котором установлен лимит 64 Кбайт, байтовая дробность (G = 0), расширяемость вверх (R = 0), доступность записи (W = 1) и присутствие (Р = 1). Если сегментные регистры не перезагружать, исполнение будет продолжаться с атрибутами, унаследованными от защищенного режима (шаги 3 и 4 предназначены для загрузки программно-недоступных регистров дескрипторов сегментов параметрами стандартного реального режима. Однако вместо них можно создать и «не реальный» (Unreal, по Р. Коллинзу) режим, отличающийся от реального возможностью доступа к сегментам большого — до 4 Гбайт — размера).
5. Инициализировать таблицу векторов прерываний реального режима (в пределах первого мегабайта) и указать на нее инструкцией LIDT.
6. Сбросить бит РЕ для перехода в реальный режим.
7. Выполнить дальний переход на программу реального режима, что сбросит очередь инструкций, декодированных в защищенном режиме, и загрузит соответствующие права доступа к сегменту кода.
8. Загрузить корректные значения в сегментные регистры и указатель стека.
9. Разрешить прерывания
После этого загружаются остальные регистры. Процессор теперь работает в реальном режиме, по умолчанию с 16 разрядными адресами и данными.

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *