字段路径外部是示范 从 MaciASL获取 \_SB.PCI0.LPCB.PWBW 为PWBW路径(_SB.PCI0.LPCB下使用就PWBW即可) 在为非_SB.PCI0.LPCB下使用 就要 \_SB.PCI0.LPCB.PWBW 才能该字段 以下为错误修为案例 例子1 dsdt 文件 错误提示:6126, syntax error, unexpected PARSEOP_SUBTRACT Method (SBRN, 0, Serialized) { If (^^^GFX0.PRST) { Store (^^^GFX0.GCBL,^^^GFX0.CBLV) //要修改 Local0//真正错误 Subtract (0x0A, Local0,Local1)//提示出错 If (LNotEqual (Local1, LBTN)) { Store (Local1, LBTN) } } } ^^^GFX0.GCBL 外部声明为 External (_SB_.PCI0.GFX0.GCBL, IntObj) 通过搜索 (搜索 GCBL字段就可以不用添加_SB_.PCI0.GFX0添加了找不到的) ssdt 6 发现 Method (GCBL, 1, NotSerialized) 所以 External (_SB_.PCI0.GFX0.GCBL, IntObj) 改 External (_SB_.PCI0.GFX0.GCBL,MethodObj) Store (^^^GFX0.GCBL, ^^^GFX0.CBLV) //要修改 Local0 改 Store (^^^GFX0.GCBL(^^^GFX0.CBLV),Local0) 例子2 错误提示:6126,syntax error, unexpected PARSEOP_FIELD OperationRegion (MSID, SystemMemory,EBAS (0x50), Field (MSID, DWordAcc, Lock, Preserve) EBAS 外部声明 External (EBAS, MethodObj) 通过搜索 ssdt 6 发现 OperationRegion (SANV, SystemMemory,0xCAAE8E18, 0x016D) Field (SANV, AnyAcc, Lock, Preserve) { ………… EBAS, 32, ……………. } 所以 External (EBAS, MethodObj) 改 External (EBAS, FieldUnitObj) OperationRegion (MSID, SystemMemory,EBAS (0x50), Field (MSID, DWordAcc, Lock, Preserve) 改 OperationRegion (MSID, SystemMemory,EBAS,0x50) Field (MSID, DWordAcc, Lock, Preserve) 例子 3 (和例子1不过多了个参数) ssdt 7 错误提示:6126,syntax error, unexpected PARSEOP_INTEGER Method (_PRW, 0, NotSerialized) { Return (GPRW) 0x09 0x04 //提示错误 } GPRW外部声明 External (GPRW, IntObj) 通过搜索 dsdt 发现 Method (GPRW, 2, NotSerialized)(有两参数) 所以改为 External (GPRW, IntObj) 改 External (GPRW, MethodObj) Return (GPRW) 0x09 0x04 改 Return (GPRW(0x09,0x04)) 例子 4 dsdt文件 错误提示:6126,syntax error, unexpected '}' If (CondRefOf (MDBG)) { MNIO (Arg0) MNIO ("\n") Return (MDBG) //实则错误 Arg0//实则错误 }//提示错误 MDBG 外部声明 External (MDBG, IntObj) 通过搜索 发现,字段 不存在 声明对象 不过通过函数可以知道 If (CondRefOf (MDBG)) //检测 MDBG 有没有此 字段 如果没即不执 看来看来 dsdt 就多个配置使用(但是我从其他配置apci这MDBG应该为MethodObj) 所以 第一种 External (MDBG, IntObj) 改 External (MDBG, MethodObj) Return (MDBG) Arg0 改 Return (MDBG(Arg0)) 第二种 Return (MDBG) Arg0 将其删除处理(将该段删除也可以,不起其他错误) 没实则声明 的字段是没意义的 例子 5 错误提示:6074,Name already exists in scope (PPL1) OperationRegion (MBAR, SystemMemory, Add (\_SB.PCI0.GMHB (), 0x5000),0x1000) Field (MBAR, ByteAcc, NoLock, Preserve) { 。。。。。。 PPL1, 15, 。。。。。。。。。 } 搜索发现 External (PPL1, UnknownObj) 明显是重命名了 处理方式两种 1.删除 PPL1 { 。。。。。。 , 15, //只删除 字段 ,保持其他字段的偏移量正确 。。。。。。。。。 } 2.删除 External (PPL1, UnknownObj) 总结: 1.请使用RehabMan 的 最新版的iasl 和 MaciASL!(减少错误的出现) 2.确定相关字段 正确对象 3.通过搜索同函数,参考如果正确使用,再去修复错误。(了解函数正确使用) 4.提示错误地址,不一定错误的所在 5. 尽量修复!如果实在无法修复,可以删除处理(有可能引起其他错误)! 6.如果错误实在无法修复,可以放弃的!(可以通过 ome ssdt 修复) 7.不用打补丁的ssdt 文件其他可以不用修复 8.除了错误,其他可以不用修复的 以下为附件(各位下载测试)
|