Про CSM и эмуляцию. Эмуляции Legacy BIOS для приложений

Про CSM и эмуляцию.

Эмуляции Legacy BIOS для приложений под UEFI нет. Кто будет клиентом такого сервиса?
Программы, скомпилированные под DOS под UEFI работать не могут, так как расчитаны
на режим 16-bit Real Mode. UEFI-приложения не используют Legacy BIOS а используют UEFI-протоколы.

Зато есть CSM (Compatibility Support Module) и EFI_LEGACY_BIOS_PROTOCOL, которые являются


шлюзом из 64-bit Protected Mode в 16-bit Real Mode.

Представим, что есть видео адаптер или SCSI контроллер, BIOS которого не поддерживает UEFI,
написан как Legacy Option ROM и предназначен для выполнения в 16-bit Real Mode. Для того, чтобы
работать с этим устройством, 64-битный UEFI BIOS материнской платы должен вызывать сервисные
функции из 16-битного Legacy Option ROM адаптера. А эти сервисные функции написаны для
16-bit Real Mode. Поэтому, вызывать их нужно внутри "капсулы", обеспечивающей контекст 16-bit Real Mode.

Пример: Если видеокарта не поддерживает UEFI GOP (Graphics Output Protocol), то когда UEFI-приложение
вызывает функцию GOP.SetMode, firmware должно создать "капсулу" и вызвать старый-добрый
Legacy BIOS INT 10h function 0 (set video mode). В этом и смысл CSM.

От UEFI к загрузке один шаг