Имеется файл kernel\detect\biosdisk.inc. (kolibri 0.7.7.0)
Что находится в [es:0x907F], в 0x9080, в [es:0x475]
Что означает preboot_biosdisk
Ещё, не подскажите для чего Kolibri нужно знать все диски что видит сам BIOS?
Коментарии к исходникам
Костыль /bdX/X/ для SATA и USB
kernel/memmap.inc
Alt+F7 в kfar
Ralf Brown's interrupt list
Alt+F7 в kfar
Ralf Brown's interrupt list
Сделаем мир лучше!
Здрасте опять. Кто нибуть пытался дать имена переменным в kernel/memmap.inc ?
Нипротив если я начну?
Нипротив если я начну?
ilya
привет!
Посмотри сначала const.inc - там очень многое поименовано.
привет!
Посмотри сначала const.inc - там очень многое поименовано.
Спасибо.
Ну вобщем ближе к делу. Пользуюсь 0.7.7.0, другово недоступною
переписан kernel/bus/pci/pci16.inc
начало kernel/bus/pci/pci32.inc (прямо в глаза бросались старые прыжки)
Тут ещё такой вопрос. Далее в pci32.inc вы читаете по 1,2,4 бата. Для чего лишний код? Помоему вобще все запросы к PCI чипсет переделывает в DWORD запросы.
Ну вобщем ближе к делу. Пользуюсь 0.7.7.0, другово недоступною
переписан kernel/bus/pci/pci16.inc
Code: Select all
$Revision: 593 $
;---------------------------------------------------------------------------------------------------
; code determines which mechanism to access PCI bus is available and suported by the bus
;---------------------------------------------------------------------------------------------------
push ds
xor edi, edi
mov ds, di
mov dword [BOOT_PCI_DATA], 1 ; default to mechanism 1 and zero other bytes
mov dword [BOOT_PCI_DATA+4], edi
mov ax, 0xb101
int 0x1a
test ah, ah ; apparently command decision has been made to give
jnz @f ; some slack to the fact of PCI BIOS absence
; bit 1 of AL indicates presence of mechanism 2
bt ax, 1 ; bit_1 -> CF
adc byte [BOOT_PCI_DATA], 0 ; 1 += CF
mov [BOOT_PCI_DATA+1], cl ; numerically highest PCI bus in system
mov [BOOT_PCI_DATA+2], bx ; bl-minor version, bh-major version
mov [BOOT_PCI_DATA+4], edi ; address of protected mode entry
; by the way mechanism #1 is good and #2 is bad because legacy
@@:
pop ds
Code: Select all
$Revision: 750 $
align 4
pci_api:
cmp [pci_access_enabled], 1
jne .no_pci_access_for_applications
cmp al, 10
ja .no_pci_access_for_applications
cmp al, 7
ja pci_write_reg
jz .no_pci_access_for_applications
cmp al, 3
ja pci_read_reg
jz .no_pci_access_for_applications
test al, al
jz .fn_0_version
neg eax
movzx eax, byte [BOOT_VAR+BOOT_PCI_DATA+2+eax] ; get either highest bus # or access method
jmp .exit
.fn_0_version:
movzx eax, word [BOOT_VAR+BOOT_PCI_DATA+2] ; PCI function 0: get pci version (AH.AL)
.exit:
ret
.no_pci_access_for_applications:
mov eax, -1
jmp .exit
почему не svn - есть вебморда, там же можно скачать архив http://websvn1.kolibrios.org/listing.ph ... Kolibri+OS
Просто после релиза очень много правок было
Просто после релиза очень много правок было
Проверь на всякий случай redmine.kolibrios.org.С версии 0.7.7.0 в ядре около тысячи правок (или чуть меньше)
В ядре ли? Может правок вообще.Sorcerer wrote:С версии 0.7.7.0 в ядре около тысячи правок (или чуть меньше)
Каким образом тут заливка кода устроена.
pci16.inc можно лить, там возможное неопределённое состояние EDI исправлено (если верить RIBL), плюс меньший размер
pci32.inc поменялся не особо. Я в принципе не в ввосторге что используется не кэшируемая память, хотя удобно.(Я так понимаю это во время прерывания?)
Что гоcпода главные думают про чтение и запись только двордом?
pci16.inc можно лить, там возможное неопределённое состояние EDI исправлено (если верить RIBL), плюс меньший размер
pci32.inc поменялся не особо. Я в принципе не в ввосторге что используется не кэшируемая память, хотя удобно.(Я так понимаю это во время прерывания?)
Что гоcпода главные думают про чтение и запись только двордом?
A side эффект от записи ? И вместо одной операции записи потребуется ещё и чтение.
PCI? Незнаю. У вас там и так 3-5 инструкции на запись 1 одного значения. но может ваш вариант правильнее.
(я тут не главный, но с pci32.inc работал плотно)ilya wrote:pci32.inc поменялся не особо. Я в принципе не в ввосторге что используется не кэшируемая память, хотя удобно.(Я так понимаю это во время прерывания?)
Что гоcпода главные думают про чтение и запись только двордом?
"не кэшируемая память" - это про 12-ю подфунцию что ли?
там стоит отображение нового конфигурационного пространства (в стиле PCI Express) на пользовательское адресное пространство.
Эти адреса не могут быть кэшируемыми, потому что прямо относятся к вводу/выводу.
Для сведения: многие регистры конфигспейса имеют словную и даже байтовую гранулярность. Читать их двордом конечно можно, но записывать - нет, иначе зацепишь соседей.
нет я имел ввиду что вот это
не будет сидеть в кеше, и это как я понимаю во время прерывания. Хотя сами обращения к PCI и так медленные, но всё же ёщё медленнее их делать не надо.
Code: Select all
f62call:
dd pci_fn_0
dd pci_fn_1
dd pci_fn_2
dd pci_service_not_supported ;3
dd pci_read_reg ;4 byte
dd pci_read_reg ;5 word
dd pci_read_reg ;6 dword
dd pci_service_not_supported ;7
dd pci_write_reg ;8 byte
dd pci_write_reg ;9 word
dd pci_write_reg ;10 dword
if defined mmio_pci_addr
dd pci_mmio_init ;11
dd pci_mmio_map ;12
dd pci_mmio_unmap ;13
end if
А это я имел ввиду запись в PCI config space.Что гоcпода главные думают про чтение и запись только двордом?
Большая часть ядра (не вся, к сожалению) и так сидит в кэше постоянно. Главная задержка - обращение к портам контроллера PCI.
Если у тебя новый комп и хочется побыстрее - определи mmio_pci_addr для своего устройства, перекомпилируй ядро и работай с конфигспейсом напрямую.
Если у тебя новый комп и хочется побыстрее - определи mmio_pci_addr для своего устройства, перекомпилируй ядро и работай с конфигспейсом напрямую.
Низзя. То есть вообще низзя.А это я имел ввиду запись в PCI config space.
Who is online
Users browsing this forum: No registered users and 12 guests