Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Feb 19, 2020 7:30 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 18 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Wed Jul 27, 2011 12:23 pm 
Offline

Joined: Tue Jul 26, 2011 11:03 pm
Posts: 62
Имеется файл kernel\detect\biosdisk.inc. (kolibri 0.7.7.0)
Что находится в [es:0x907F], в 0x9080, в [es:0x475]
Что означает preboot_biosdisk

Ещё, не подскажите для чего Kolibri нужно знать все диски что видит сам BIOS?


Top
   
PostPosted: Wed Jul 27, 2011 1:35 pm 
Костыль /bdX/X/ для SATA и USB


Top
   
PostPosted: Wed Jul 27, 2011 1:42 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
kernel/memmap.inc
Alt+F7 в kfar
Ralf Brown's interrupt list

_________________
Сделаем мир лучше!


Top
   
PostPosted: Wed Jul 27, 2011 8:09 pm 
Offline

Joined: Tue Jul 26, 2011 11:03 pm
Posts: 62
Здрасте опять. Кто нибуть пытался дать имена переменным в kernel/memmap.inc ?
Нипротив если я начну?


Top
   
PostPosted: Wed Jul 27, 2011 8:21 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1382
ilya
привет!
Посмотри сначала const.inc - там очень многое поименовано.


Top
   
PostPosted: Wed Jul 27, 2011 9:15 pm 
Offline

Joined: Tue Jul 26, 2011 11:03 pm
Posts: 62
Спасибо.

Ну вобщем ближе к делу. Пользуюсь 0.7.7.0, другово недоступною

переписан kernel/bus/pci/pci16.inc
Code:
$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:
$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 запросы.


Top
   
PostPosted: Wed Jul 27, 2011 9:48 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 796
почему не svn - есть вебморда, там же можно скачать архив http://websvn1.kolibrios.org/listing.ph ... Kolibri+OS

Просто после релиза очень много правок было


Top
   
PostPosted: Wed Jul 27, 2011 9:51 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Проверь на всякий случай redmine.kolibrios.org.С версии 0.7.7.0 в ядре около тысячи правок (или чуть меньше)


Top
   
PostPosted: Wed Jul 27, 2011 9:56 pm 
Sorcerer wrote:
С версии 0.7.7.0 в ядре около тысячи правок (или чуть меньше)

В ядре ли? Может правок вообще.


Top
   
PostPosted: Wed Jul 27, 2011 10:19 pm 
Offline

Joined: Tue Jul 26, 2011 11:03 pm
Posts: 62
Каким образом тут заливка кода устроена.
pci16.inc можно лить, там возможное неопределённое состояние EDI исправлено (если верить RIBL), плюс меньший размер
pci32.inc поменялся не особо. Я в принципе не в ввосторге что используется не кэшируемая память, хотя удобно.(Я так понимаю это во время прерывания?)

Что гоcпода главные думают про чтение и запись только двордом?


Top
   
PostPosted: Wed Jul 27, 2011 10:34 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
A side эффект от записи ? И вместо одной операции записи потребуется ещё и чтение.


Top
   
PostPosted: Wed Jul 27, 2011 10:45 pm 
Offline

Joined: Tue Jul 26, 2011 11:03 pm
Posts: 62
PCI? Незнаю. У вас там и так 3-5 инструкции на запись 1 одного значения. но может ваш вариант правильнее.


Top
   
PostPosted: Wed Jul 27, 2011 10:55 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1382
ilya wrote:
pci32.inc поменялся не особо. Я в принципе не в ввосторге что используется не кэшируемая память, хотя удобно.(Я так понимаю это во время прерывания?)

Что гоcпода главные думают про чтение и запись только двордом?

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

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


Top
   
PostPosted: Wed Jul 27, 2011 11:04 pm 
Offline

Joined: Tue Jul 26, 2011 11:03 pm
Posts: 62
нет я имел ввиду что вот это
Code:
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 и так медленные, но всё же ёщё медленнее их делать не надо.

Quote:
Что гоcпода главные думают про чтение и запись только двордом?

А это я имел ввиду запись в PCI config space.


Top
   
PostPosted: Wed Jul 27, 2011 11:16 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1382
Большая часть ядра (не вся, к сожалению) и так сидит в кэше постоянно. Главная задержка - обращение к портам контроллера PCI.
Если у тебя новый комп и хочется побыстрее - определи mmio_pci_addr для своего устройства, перекомпилируй ядро и работай с конфигспейсом напрямую.

Quote:
А это я имел ввиду запись в PCI config space.
Низзя. То есть вообще низзя.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 18 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited