Page 1 of 2
Коментарии к исходникам
Posted: Wed Jul 27, 2011 12:23 pm
by ilya
Имеется файл kernel\detect\biosdisk.inc. (kolibri 0.7.7.0)
Что находится в [es:0x907F], в 0x9080, в [es:0x475]
Что означает preboot_biosdisk
Ещё, не подскажите для чего Kolibri нужно знать все диски что видит сам BIOS?
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 1:35 pm
by Mario
Костыль /bdX/X/ для SATA и USB
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 1:42 pm
by CleverMouse
kernel/memmap.inc
Alt+F7 в kfar
Ralf Brown's interrupt list
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 8:09 pm
by ilya
Здрасте опять. Кто нибуть пытался дать имена переменным в kernel/memmap.inc ?
Нипротив если я начну?
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 8:21 pm
by art_zh
ilya
привет!
Посмотри сначала const.inc - там очень многое поименовано.
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 9:15 pm
by ilya
Спасибо.
Ну вобщем ближе к делу. Пользуюсь 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
начало kernel/bus/pci/pci32.inc (прямо в глаза бросались старые прыжки)
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
Тут ещё такой вопрос. Далее в pci32.inc вы читаете по 1,2,4 бата. Для чего лишний код? Помоему вобще все запросы к PCI чипсет переделывает в DWORD запросы.
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 9:48 pm
by XVilka
почему не svn - есть вебморда, там же можно скачать архив
http://websvn1.kolibrios.org/listing.ph ... Kolibri+OS
Просто после релиза очень много правок было
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 9:51 pm
by SoUrcerer
Проверь на всякий случай redmine.kolibrios.org.С версии 0.7.7.0 в ядре около тысячи правок (или чуть меньше)
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 9:56 pm
by Mario
Sorcerer wrote:С версии 0.7.7.0 в ядре около тысячи правок (или чуть меньше)
В ядре ли? Может правок вообще.
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 10:19 pm
by ilya
Каким образом тут заливка кода устроена.
pci16.inc можно лить, там возможное неопределённое состояние EDI исправлено (если верить RIBL), плюс меньший размер
pci32.inc поменялся не особо. Я в принципе не в ввосторге что используется не кэшируемая память, хотя удобно.(Я так понимаю это во время прерывания?)
Что гоcпода главные думают про чтение и запись только двордом?
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 10:34 pm
by Serge
A side эффект от записи ? И вместо одной операции записи потребуется ещё и чтение.
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 10:45 pm
by ilya
PCI? Незнаю. У вас там и так 3-5 инструкции на запись 1 одного значения. но может ваш вариант правильнее.
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 10:55 pm
by art_zh
ilya wrote:pci32.inc поменялся не особо. Я в принципе не в ввосторге что используется не кэшируемая память, хотя удобно.(Я так понимаю это во время прерывания?)
Что гоcпода главные думают про чтение и запись только двордом?
(я тут не главный, но с pci32.inc работал плотно)
"не кэшируемая память" - это про 12-ю подфунцию что ли?
там стоит отображение нового конфигурационного пространства (в стиле PCI Express) на пользовательское адресное пространство.
Эти адреса не могут быть кэшируемыми, потому что прямо относятся к вводу/выводу.
Для сведения: многие регистры конфигспейса имеют словную и даже байтовую гранулярность. Читать их двордом конечно можно, но записывать - нет, иначе зацепишь соседей.
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 11:04 pm
by ilya
нет я имел ввиду что вот это
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 и так медленные, но всё же ёщё медленнее их делать не надо.
Что гоcпода главные думают про чтение и запись только двордом?
А это я имел ввиду запись в PCI config space.
Re: Коментарии к исходникам
Posted: Wed Jul 27, 2011 11:16 pm
by art_zh
Большая часть ядра (не вся, к сожалению) и так сидит в кэше постоянно. Главная задержка - обращение к портам контроллера PCI.
Если у тебя новый комп и хочется побыстрее - определи mmio_pci_addr для своего устройства, перекомпилируй ядро и работай с конфигспейсом напрямую.
А это я имел ввиду запись в PCI config space.
Низзя. То есть вообще низзя.