Привет всем!
Занимаюсь вылизыванием железа. И смотрю в dsdt. Получил файлик, кое-какие ошибки сумел разрулить самостоятельно, но есть пара ошибок, от которых у меня мозг вскипает.
Первая ошибка:
есть код в dsdt следующего вида:
dsdt.dsl
Device (DRV0)
{
Name (_ADR, 0x00)
Name (H15F, Zero)
Method (_GTF, 0, NotSerialized)
{
If (CTYP (0x01))
{
Store (\_SB.PCI0.ICHX.GTF0 (ITM1, SIT1, UDC1, UDT1, ICF1, H15F, FAS1), Local0)
Return (Local0)
}
Else
{
}
}
}
iasl в данном коде ругается, что Method(...) должен обязательно что-то всегда возвращать. Правда не говорит, что именно, но всегда. Вернуть Zero не сложно. Но вот верно ли? Или там надо что-то иное возвращать? Хотя, спинным мозгом чую, что там или набор параметров (Local0), или только пустышка может быть. Не обманывает ли меня мой спинной мозг? Это первая ошибка. Вторая - чуть посложнее:
Код:
Device (PRID)
{
Name (_ADR, 0x00)
Method (_GTM, 0, NotSerialized)
{
Store (\_SB.PCI0.ICHX.GTM (ITM0, SIT0, UDC0, UDT0, ICF0, FAS0), Local0)
Return (Local0)
}
Method (_STM, 0, NotSerialized)
{
Store (\_SB.PCI0.ICHX.STM (Arg0, Arg1, Arg2), Local0)
..............
Ругань идет на последнюю приведенную строчку следующая:
[console]dsdt.dsl 4388: Store (\_SB.PCI0.ICHX.STM (Arg0, Arg1, Arg2), Local0)
Error 4005 - Method argument is not initialized ^ (Arg0)
dsdt.dsl 4388: Store (\_SB.PCI0.ICHX.STM (Arg0, Arg1, Arg2), Local0)
Remark 5067 - Not a parameter, used as local only ^ (Arg0)
[/console]
И так далее, по всем трем Arg. Вот этого я понять не могу совершенно, чего оно от меня хочет треклятущая. То, что аргументы не инициализированы, так это я вижу. Но чем они должны быть инициализированы??? Ну и сильно сбивает с толку ремарка...
Подскажите, как эти фрагменты кода правильно исправить?