diamond wrote:
...начальный кусок системных адресов [OS_BASE, OS_BASE + a), где OS_BASE = 0x80000000 (const.inc), маппится на начало физической памяти [0,a) "почти тривиально" - вычитанием OS_BASE; в этот кусок входит само ядро и все системные таблицы ...
А как маппится самая
верхняя зона физической памяти, куда BIOS обычно конфигурирует адреса MMIO-блоков PCI-устройств (видеопамяти, аудио- и сетевых буферов, SATA, USB и т.п.)?
В init.inc этого нет. Возникают 2 наивных предположения:
1) используется еще более тривиальный маппинг (phys = virt) для всего пространства выше [0,a)
или
2) ядро вообще не производит инициализации страниц для MMIO, оставляя это хлопотное дело драйверу
?
_________________
Евангелие от Иоанна: стих 1Code:
; В начале было Слово:
B32: mov ax, os_stack ; Selector for os