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.
Низзя. То есть вообще низзя.