Difference between revisions of "SysFn62/ru"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
− | '''Функция 62 - пользовательский доступ к PCI. | + | '''Функция 62''' - пользовательский доступ к PCI. |
=== Подфункция 0 - получить версию PCI-интерфейса. === | === Подфункция 0 - получить версию PCI-интерфейса. === | ||
''Параметры:'' | ''Параметры:'' | ||
− | * eax = 62 - номер функции | + | :* eax = 62 - номер функции |
− | * bl = 0 - номер подфункции | + | :* bl = 0 - номер подфункции |
''Возвращаемое значение:'' | ''Возвращаемое значение:'' | ||
− | * eax = -1 - доступ к PCI запрещён; иначе | + | :* eax = -1 - доступ к PCI запрещён; иначе |
− | * ah.al = версия PCI-интерфейса (ah=версия, al=подверсия) | + | :* ah.al = версия PCI-интерфейса (ah=версия, al=подверсия) |
− | * старшее слово eax обнулено | + | :* старшее слово eax обнулено |
''Замечания:'' | ''Замечания:'' | ||
− | * Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21. | + | :* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 [[SysFn21/ru|функции 21]]. |
− | * Если PCI BIOS не поддерживается, то значение ax неопределено. | + | :* Если PCI BIOS не поддерживается, то значение ax неопределено. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_PCI (62) | ||
+ | ::ebx - SSF_GET_VERSION (0) | ||
=== Подфункция 1 - получить номер последней PCI-шины. === | === Подфункция 1 - получить номер последней PCI-шины. === | ||
''Параметры:'' | ''Параметры:'' | ||
− | * eax = 62 - номер функции | + | :* eax = 62 - номер функции |
− | * bl = 1 - номер подфункции | + | :* bl = 1 - номер подфункции |
''Возвращаемое значение:'' | ''Возвращаемое значение:'' | ||
− | * eax = -1 - доступ к PCI запрещён; иначе | + | :* eax = -1 - доступ к PCI запрещён; иначе |
− | * al = номер последней PCI-шины; оставшиеся байты eax разрушаются | + | :* al = номер последней PCI-шины; оставшиеся байты eax разрушаются |
''Замечания:'' | ''Замечания:'' | ||
− | * Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21. | + | :* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 [[SysFn21/ru|функции 21]]. |
− | * Если PCI BIOS не поддерживается, то значение al неопределено. | + | :* Если PCI BIOS не поддерживается, то значение al неопределено. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_PCI (62) | ||
+ | ::ebx - SSF_GET_LAST_BUS (1) | ||
=== Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI. === | === Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI. === | ||
''Параметры:'' | ''Параметры:'' | ||
− | * eax = 62 - номер функции | + | :* eax = 62 - номер функции |
− | * bl = 2 - номер подфункции | + | :* bl = 2 - номер подфункции |
''Возвращаемое значение:'' | ''Возвращаемое значение:'' | ||
− | * eax = -1 - доступ к PCI запрещён; иначе | + | :* eax = -1 - доступ к PCI запрещён; иначе |
− | * al = механизм (1 или 2); прочие байты eax разрушаются | + | :* al = механизм (1 или 2); прочие байты eax разрушаются |
''Замечания:'' | ''Замечания:'' | ||
− | * Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21. | + | :* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 [[SysFn21/ru|функции 21]]. |
− | * Механизм обращения выбирается в соответствии с характеристиками оборудования. | + | :* Механизм обращения выбирается в соответствии с характеристиками оборудования. |
− | * Подфункции чтения и записи автоматически работают с выбранным механизмом. | + | :* Подфункции чтения и записи автоматически работают с выбранным механизмом. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_PCI (62) | ||
+ | ::ebx - SSF_GET_ADRR_MODE (2) | ||
=== подфункции 4,5,6 - прочитать PCI-регистр. === | === подфункции 4,5,6 - прочитать PCI-регистр. === | ||
''Параметры:'' | ''Параметры:'' | ||
− | * eax = 62 - номер функции | + | :* eax = 62 - номер функции |
− | * bl = 4 - читать байт | + | :* bl = 4 - читать байт |
− | * bl = 5 - читать слово | + | :* bl = 5 - читать слово |
− | * bl = 6 - читать двойное слово | + | :* bl = 6 - читать двойное слово |
− | * bh = номер PCI-шины | + | :* bh = номер PCI-шины |
− | * ch = dddddfff, где ddddd = номер устройства на шине, :fff = номер функции устройства | + | :* ch = dddddfff, где ddddd = номер устройства на шине, :fff = номер функции устройства |
− | * cl = номер регистра (должен быть чётным для bl=5, делиться на 4 для bl=6) | + | :* cl = номер регистра (должен быть чётным для bl=5, делиться на 4 для bl=6) |
''Возвращаемое значение:'' | ''Возвращаемое значение:'' | ||
− | * eax = -1 - ошибка (запрещён доступ к PCI или неподдерживаемые параметры); иначе | + | :* eax = -1 - ошибка (запрещён доступ к PCI или неподдерживаемые параметры); иначе |
− | * al/ax/eax (в зависимости от запрошенного размера) содержит данные; оставшаяся часть регистра eax разрушается | + | :* al/ax/eax (в зависимости от запрошенного размера) содержит данные; оставшаяся часть регистра eax разрушается |
''Замечания:'' | ''Замечания:'' | ||
− | * Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21. | + | :* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 [[SysFn21/ru|функции 21]]. |
− | * Механизм доступа 2 поддерживает только 16 устройств на шине и игнорирует номер функции. Получить механизм доступа можно вызовом подфункции 2. | + | :* Механизм доступа 2 поддерживает только 16 устройств на шине и игнорирует номер функции. Получить механизм доступа можно вызовом подфункции 2. |
− | * Некоторые регистры стандартны и существуют для всех устройств, некоторые определяются конкретным устройством. Список первых входит, например, в известный Interrupt List by Ralf Brown ([http://www.pobox.com/~ralf/files.html], [ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/]); список вторых должен быть указан в документации по устройству. | + | :* Некоторые регистры стандартны и существуют для всех устройств, некоторые определяются конкретным устройством. Список первых входит, например, в известный Interrupt List by Ralf Brown ([http://www.pobox.com/~ralf/files.html], [ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/]); список вторых должен быть указан в документации по устройству. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_PCI (62) | ||
+ | ::ebx - SSF_READ_BYTE (4), SSF_READ_WORD (5), SSF_READ_DWORD (6) | ||
=== подфункции 8,9,10 - записать в PCI-регистр. === | === подфункции 8,9,10 - записать в PCI-регистр. === | ||
''Параметры:'' | ''Параметры:'' | ||
− | * eax = 62 - номер функции | + | :* eax = 62 - номер функции |
− | * bl = 8 - писать байт | + | :* bl = 8 - писать байт |
− | * bl = 9 - писать слово | + | :* bl = 9 - писать слово |
− | * bl = 10 - писать двойное слово | + | :* bl = 10 - писать двойное слово |
− | * bh = номер PCI-шины | + | :* bh = номер PCI-шины |
− | * ch = dddddfff, где ddddd = номер устройства на шине, :fff = номер функции устройства | + | :* ch = dddddfff, где ddddd = номер устройства на шине, :fff = номер функции устройства |
− | * cl = номер регистра (должен быть чётным для bl=9, делиться на 4 для bl=10) | + | :* cl = номер регистра (должен быть чётным для bl=9, делиться на 4 для bl=10) |
− | * dl/dx/edx (в зависимости от запрошенного размера) содержит данные для записи | + | :* dl/dx/edx (в зависимости от запрошенного размера) содержит данные для записи |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
''Возвращаемое значение:'' | ''Возвращаемое значение:'' | ||
− | * eax = -1 - доступ к PCI | + | :* eax = -1 - ошибка (запрещён доступ к PCI или неподдерживаемые параметры) |
− | + | :* eax = 0 - успешно | |
− | * eax = - | ||
− | |||
''Замечания:'' | ''Замечания:'' | ||
− | * Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21. | + | :* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 [[SysFn21/ru|функции 21]]. |
− | * | + | :* Механизм доступа 2 поддерживает только 16 устройств на шине и игнорирует номер функции. Получить механизм доступа можно вызовом подфункции 2. |
− | * | + | :* Некоторые регистры стандартны и существуют для всех устройств, некоторые определяются конкретным устройством. Список первых входит, например, в известный Interrupt List by Ralf Brown; список вторых должен быть указан в документации по устройству. |
− | + | '''Константы для регистров:''' | |
− | + | ::eax - SF_PCI (62) | |
− | '' | + | ::ebx - SSF_WRITE_BYTE (8), SSF_WRITE_WORD (9), SSF_WRITE_DWORD (10) |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
Revision as of 13:42, 18 January 2016
Функция 62 - пользовательский доступ к PCI.
Подфункция 0 - получить версию PCI-интерфейса.
Параметры:
- eax = 62 - номер функции
- bl = 0 - номер подфункции
Возвращаемое значение:
- eax = -1 - доступ к PCI запрещён; иначе
- ah.al = версия PCI-интерфейса (ah=версия, al=подверсия)
- старшее слово eax обнулено
Замечания:
- Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.
- Если PCI BIOS не поддерживается, то значение ax неопределено.
Константы для регистров:
- eax - SF_PCI (62)
- ebx - SSF_GET_VERSION (0)
Подфункция 1 - получить номер последней PCI-шины.
Параметры:
- eax = 62 - номер функции
- bl = 1 - номер подфункции
Возвращаемое значение:
- eax = -1 - доступ к PCI запрещён; иначе
- al = номер последней PCI-шины; оставшиеся байты eax разрушаются
Замечания:
- Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.
- Если PCI BIOS не поддерживается, то значение al неопределено.
Константы для регистров:
- eax - SF_PCI (62)
- ebx - SSF_GET_LAST_BUS (1)
Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI.
Параметры:
- eax = 62 - номер функции
- bl = 2 - номер подфункции
Возвращаемое значение:
- eax = -1 - доступ к PCI запрещён; иначе
- al = механизм (1 или 2); прочие байты eax разрушаются
Замечания:
- Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.
- Механизм обращения выбирается в соответствии с характеристиками оборудования.
- Подфункции чтения и записи автоматически работают с выбранным механизмом.
Константы для регистров:
- eax - SF_PCI (62)
- ebx - SSF_GET_ADRR_MODE (2)
подфункции 4,5,6 - прочитать PCI-регистр.
Параметры:
- eax = 62 - номер функции
- bl = 4 - читать байт
- bl = 5 - читать слово
- bl = 6 - читать двойное слово
- bh = номер PCI-шины
- ch = dddddfff, где ddddd = номер устройства на шине, :fff = номер функции устройства
- cl = номер регистра (должен быть чётным для bl=5, делиться на 4 для bl=6)
Возвращаемое значение:
- eax = -1 - ошибка (запрещён доступ к PCI или неподдерживаемые параметры); иначе
- al/ax/eax (в зависимости от запрошенного размера) содержит данные; оставшаяся часть регистра eax разрушается
Замечания:
- Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.
- Механизм доступа 2 поддерживает только 16 устройств на шине и игнорирует номер функции. Получить механизм доступа можно вызовом подфункции 2.
- Некоторые регистры стандартны и существуют для всех устройств, некоторые определяются конкретным устройством. Список первых входит, например, в известный Interrupt List by Ralf Brown ([1], [2]); список вторых должен быть указан в документации по устройству.
Константы для регистров:
- eax - SF_PCI (62)
- ebx - SSF_READ_BYTE (4), SSF_READ_WORD (5), SSF_READ_DWORD (6)
подфункции 8,9,10 - записать в PCI-регистр.
Параметры:
- eax = 62 - номер функции
- bl = 8 - писать байт
- bl = 9 - писать слово
- bl = 10 - писать двойное слово
- bh = номер PCI-шины
- ch = dddddfff, где ddddd = номер устройства на шине, :fff = номер функции устройства
- cl = номер регистра (должен быть чётным для bl=9, делиться на 4 для bl=10)
- dl/dx/edx (в зависимости от запрошенного размера) содержит данные для записи
Возвращаемое значение:
- eax = -1 - ошибка (запрещён доступ к PCI или неподдерживаемые параметры)
- eax = 0 - успешно
Замечания:
- Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.
- Механизм доступа 2 поддерживает только 16 устройств на шине и игнорирует номер функции. Получить механизм доступа можно вызовом подфункции 2.
- Некоторые регистры стандартны и существуют для всех устройств, некоторые определяются конкретным устройством. Список первых входит, например, в известный Interrupt List by Ralf Brown; список вторых должен быть указан в документации по устройству.
Константы для регистров:
- eax - SF_PCI (62)
- ebx - SSF_WRITE_BYTE (8), SSF_WRITE_WORD (9), SSF_WRITE_DWORD (10)
|