----------------------------------------------------------------------------------
@MSGID: 2:463/68.300 67d525d0
@REPLY: 2:5020/12000 4f53923c
@CHRS: CP1125 2
@TZUTC: 0200
@TID: hpt 1.2.4-release/bsd 30-05-03
Hi,
>>>> Sergey Dorofeev wrote:
VN>> Hо на этом этапе ещё нет драйверов, и поэтому каждый блок с диска
VN>> грузится через BIOS вызовы, для которых идёт переключение в
VN>> реальный режим, выполнение вызова и переключение обратно в
VN>> защищённый режим, где BTX loader грузит boot loader.
SD> А оно не запускает BIOS в режиме VM86?
Hет.
https://github.com/freebsd/freebsd-src/blob/releng/14.2/stand/i386/btx/btx/btx. S#L570
Явный сброс protected в ноль.
Причина, насколько я знаю - BIOS сам может для обработки вызова
включать свой protected mode (чем более поздние, тем вероятнее), где,
например, драйвера всякого NVMe, и ему надо это позволить.
(Указанный код, что интересно, рассчитан на возможность вызова _из_
VM86 mode. Hо обработчик всё равно вызывается в реальном режиме.)
SD> XMS-style доступ весьма
SD> тормознутый, насколько помню там через контроллер клавиатуры
SD> процессору RESET надо делать.
Это вы с прямым углом перепутали. Reset через контроллер клавиатуры
был нужен для 80286, который нельзя было иначе вывести из защищённого
режима. В 386 это делается просто сбросом бита 0 в CR0 (ну и, разумеется,
при предварительной подготовке типа активного 16-битного кодового сегмента).
А так как система сейчас требует не меньше чем 486-й, этот трюк она
не использует.
"XMS-style доступ" в пределах первого мегабайта не нужен.
SD> А ради чего вообще вопрос возник? Лоадер-то вполне помещается в 640К,
SD> так что это были бы просто ненужные действия. Hу а если хочется
SD> графику, шрифты и картинки вполне можно аккуратно в лоадер добавить,
SD> прослойка в виде чего-то типа fbdev терминала (текстовый вариант ведь
SD> полюбасу нужен, терминал может быть на ком-порту), если конечно нет
SD> задачи сделать фон в виде пейзажа с 4К и менюшку с шейдерами.
Так а данные самой картинки кто куда будет грузить? Дискуссия была
именно об этом. Если /boot/loader ограничен первым мегабайтом (соответственно
640K реальной памяти), то места для неё может и не быть.
По факту, как уже сказал, он не ограничен - ядро-то он ведь
грузит. Hо на каком этапе и как это сделано - я не знаю, нет достаточного
времени и настроения это копать.
-netch-
... Полная дизассемблятина.
---
* Origin: Dark side of coredump (2:463/68.300)
SEEN-BY: 50/109 104/117 221/6 301/1 341/66 450/1024
461/58 463/68 1331
SEEN-BY: 4600/140 4651/777 5000/111 5001/100 5015/42
46 5019/40 5020/113 545
SEEN-BY: 5020/715 830 848 1042 2992 4441 12000
5022/128 5030/49 115 500 1081
SEEN-BY: 5030/1474 1900 5053/51 5054/89 5058/104
5061/133 5083/1 444 6078/80
SEEN-BY: 6090/1
@PATH: 463/68 5020/1042 4441