grindars писал(а):
SMI-обработчики BIOS-ов вполне успешно переходят в защищенный режим из режима SMM (который есть подвид реального). Причем выходить обратно не нужно: инструкция RSM сбрасывает режим сама. Попробуйте перейти из обработчика в 64-битный режим, по идее должно отработать нормально.
Мне не совсем ясно, что вы имеете в виду. Как я понял вы предлагаете следующую схему:
1)обработчик SMI создает в "обычной" памяти некий код, предназначенный для получения доступа к адресам выше 4 ГБ, назовем его "хэндлер64"
2)Куда-то сохраняет текущее содержимое State Save Map
3)Заполняет State Save Map значениями, необходимыми для передачи управления "хэндлер64"
4)Выполняет RSM
5) "хэндлер64" копирует данные из памяти старше 4ГБ по адресам ниже 4ГБ (т.к. в режиме SMM процессор может адресовать только нижние 4ГБ)
6)Генерирует SMI
7)SMI-хандлер обрабатывает скопированные данные
8) Шаги 4-7 повторяются, пока не будет обработана вся память выше 4ГБ
9) Восстанавливает сохраненное состояние State Save Map
10) Выполняет RSM.
Я правильно понял? Теоретически это работать может, но по-моему жутко извращенное решение.
Или вы имеете в виду, что процессор переходит в защищенный режим (и далее в 64-битный), не выходя из SMM? По-моему это не будет работать в принципе. Так как для переходя в 64-битный режим необходимо включение PAE, а в мануалах четко сказано:
The addressable SMRAM address space ranges from 0 to FFFFFFFFH (4 GBytes).
(The physical address extension — enabled with the PAE flag in control register
CR4 — is not supported in SMM.)