Коментарии к исходникам

Everything you can't fit into other forums
  • Костыль /bdX/X/ для SATA и USB
  • kernel/memmap.inc
    Alt+F7 в kfar
    Ralf Brown's interrupt list
    Сделаем мир лучше!
  • Здрасте опять. Кто нибуть пытался дать имена переменным в kernel/memmap.inc ?
    Нипротив если я начну?
  • ilya
    привет!
    Посмотри сначала const.inc - там очень многое поименовано.
  • Спасибо.

    Ну вобщем ближе к делу. Пользуюсь 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 запросы.
  • почему не 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пода главные думают про чтение и запись только двордом?
  • A side эффект от записи ? И вместо одной операции записи потребуется ещё и чтение.
  • PCI? Незнаю. У вас там и так 3-5 инструкции на запись 1 одного значения. но может ваш вариант правильнее.
  • ilya wrote:pci32.inc поменялся не особо. Я в принципе не в ввосторге что используется не кэшируемая память, хотя удобно.(Я так понимаю это во время прерывания?)

    Что гоcпода главные думают про чтение и запись только двордом?
    (я тут не главный, но с pci32.inc работал плотно)
    "не кэшируемая память" - это про 12-ю подфунцию что ли?
    там стоит отображение нового конфигурационного пространства (в стиле PCI Express) на пользовательское адресное пространство.
    Эти адреса не могут быть кэшируемыми, потому что прямо относятся к вводу/выводу.

    Для сведения: многие регистры конфигспейса имеют словную и даже байтовую гранулярность. Читать их двордом конечно можно, но записывать - нет, иначе зацепишь соседей.
  • нет я имел ввиду что вот это

    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.
  • Большая часть ядра (не вся, к сожалению) и так сидит в кэше постоянно. Главная задержка - обращение к портам контроллера PCI.
    Если у тебя новый комп и хочется побыстрее - определи mmio_pci_addr для своего устройства, перекомпилируй ядро и работай с конфигспейсом напрямую.
    А это я имел ввиду запись в PCI config space.
    Низзя. То есть вообще низзя.
  • Who is online

    Users browsing this forum: Bing [Bot] and 11 guests