추가사양 및 설치(할)OS | 10.12.6 |
---|---|
공지숙지/증상설명 | 숙지 |
항상 감사드립니다.
집의 데탑의 커맥의 어느정도 궤도에 오름으로 해서
회사 데탑도 커맥을 시도 중입니다.
DSDT컴파일 중 다음 에러에 대해 문의 드립니다.
오류구문 : Statement is unreachable
아래 내용 중 If (LEqual (Arg0, ToUUID ("1730e71d-e5dd-4a34-be57-4d76b6a2fe37"))) 라인에서 오류가 발생합니다.
다른 팁글에서는 store 명령어를 쓰시던데, 이 경우는 다른 구문으로 보여집니다.
어떻게 처리해야 할지 조언 부탁드립니다.
=============================
Scope (_SB.PCI0)
{
Device (HECI)
{
Name (_ADR, 0x00160000) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
Name (_T_0, Zero) // _T_x: Emitted by ASL Compiler
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}
Return (Buffer (One)
{
0x00
})
If (LEqual (Arg0, ToUUID ("1730e71d-e5dd-4a34-be57-4d76b6a2fe37")))
{
If (LEqual (Arg2, Zero))
{
If (LEqual (Arg1, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Else
{
Return (Zero)
}
}
If (LEqual (Arg2, One))
{
While (One)
{
Store (ToInteger (DerefOf (Index (Arg3, Zero))), _T_0)
If (LEqual (_T_0, Zero)) {}
ElseIf (LEqual (_T_0, One))
{
If (CondRefOf (\_SB.SLPB))
{
Notify (SLPB, 0x80)
P8XH (Zero, 0x5D)
}
}
ElseIf (LEqual (_T_0, 0x02)) {}
ElseIf (LEqual (_T_0, 0x03)) {}
Break
}
Return (Zero)
}
Else
{
Return (Zero)
}
}
Else
{
Return (Buffer (One)
{
0x00
})
}
}
}
}
==================
asd님의 새글 알림을 받으실려면 구독
먼저 감사의 말씀을 드립니다.
1번은 Device (HECI) 구문의 마지막 } 앞쪽에 넣었는데 안됐구요.
2번은 현재 위치가 어디를 말씀하시는 건지 모르겠습니다. 빨간 줄 부분이라면 마지막에 else로 끝나는것 같습니다만..
이렇게 해 보십시오..
두번째는 이렇게..
감사합니다. 둘다 에러는 없어졌습니다.
첫번째 방법이 더 좋은 방법일까요?
수정하기는 두번째 것이 동일위치를 수정하는 것이라 더 간단해 지는것 같습니다.
Device (HECI)가 해당되는 디바이스가 무엇인지는 모르겟지만 제가 생각하기에는 첫번째가 나을듯 해 보입니다. 이유는 if 문에 해당 되는 경우가 없을경우 return되는 값이 생기는 거니까요.. _DSM이 argument가 4개인데 언급되어 있는경우는 arg0,arg1,arg2만 존재하고 각각에 해당되는 경우만 리턴값이 달라지고 있습니다. arg3가 보이기는 한데 index를 사용하는것을 보니 다른 argument들 처럼 직접 값을 access하지 않는것처럼 생각 됩니다. 해당되지 않는경우도 생각을 해보아야 할듯 하군요.. Notify (SLPB, 0x80)이 있는것을 보니 Device (EC) : Embedded Controller에 관계된 power management 처럼 보입니다.
정말 감사합니다.
단순히 아래처럼 첫번째 if문에서 최초에 있던 Return (Buffer (One) 구문만 삭제 했는데도 컴파일 에러는 없어졌습니다.
그래도 님께서 알려주신 방법대로 마지막에 리턴구문을 주는게 좋겠죠?
아래는 리턴 구문을 삭제만 한 경우
==================
Scope (_SB.PCI0)
{
Device (HECI)
{
Name (_ADR, 0x00160000) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
Name (_T_0, Zero) // _T_x: Emitted by ASL Compiler
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}
If (LEqual (Arg0, ToUUID ("1730e71d-e5dd-4a34-be57-4d76b6a2fe37")))
.....
마지막에 리턴구문 추가하지 않음.
에러를 없애는 방법은 여러가지가 있습니다. 삭제하고 사용하시는데 문제가 없다면 괜찮은 것이겠지요.. 정답은 없습니다. dsdt수정은 일단 문법에 따르는 것이니까요.. 도움이 되었다니 다행입니다.
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|
모니터(오류화면) 사진 찍을 때 팁(소소함) +269 | 달쇠 | 17.07.3020:49 | 11만 |
빠르고 정확한 답변을 받는 팁 및 질답자의 매너, EFI폴더 압축법 +90 | Mactopia | 17.02.1014:21 | 12만 |
제온 내장그래픽을 못잡겟네요 ㅠㅠ +12 | 데스맥 | 24.10.0207:44 | 96 |
GTX TITAN 그래픽과 macOS의 호환성. +5 | 민준송 | 24.09.3014:22 | 138 |
해킨 윈도우 듀얼부팅일때 윈도우 보안부팅 활성화 해보신분 있을까요? +3 | oreo | 24.09.2922:21 | 90 |
데스맥 | 24.10.0207:44 | 96 | |
민준송 | 24.09.3014:22 | 138 | |
oreo | 24.09.2922:21 | 90 | |
수박 | 24.09.2917:58 | 83 | |
루마루 | 24.09.2913:21 | 72 | |
루마루 | 24.09.2910:19 | 117 | |
머트 | 24.09.2723:18 | 97 | |
ashly | 24.09.2720:41 | 111 | |
loopers | 24.09.2716:50 | 123 | |
Caper | 24.09.2602:42 | 162 | |
낡은기계 | 24.09.2301:36 | 188 | |
Door | 24.09.2122:38 | 121 | |
루베콘 | 24.09.2108:35 | 181 | |
에잉 | 24.09.2022:16 | 402 | |
밤가시 | 24.09.1910:03 | 190 | |
SUNWAYFOTO | 24.09.1822:20 | 208 | |
Nelson | 24.09.1815:34 | 373 | |
sebali | 24.09.1814:34 | 390 | |
Panictosh | 24.09.1813:37 | 187 | |
SUNWAYFOTO | 24.09.1801:27 | 224 | |
그냥인간 | 24.09.1719:17 | 128 | |
dlraud | 24.09.1620:36 | 241 | |
Nelson | 24.09.1618:45 | 189 | |
아스타틴 | 24.09.1612:07 | 81 | |
lesmi | 24.09.1522:02 | 146 | |
윤수꾸하하 | 24.09.1323:56 | 196 | |
뚜비 | 24.09.1319:18 | 206 | |
Steer | 24.09.1200:33 | 171 | |
상큼버터 | 24.09.0918:08 | 220 | |
인터찹 | 24.09.0717:13 | 968 | |
서재희 | 24.09.0711:07 | 1442 | |
시습이 | 24.09.0113:39 | 1250 | |
블루 | 24.08.3022:44 | 476 | |
lesmi | 24.08.2911:20 | 417 | |
김덕뱀 | 24.08.2823:04 | 225 | |
그냥구름 | 24.08.2517:14 | 285 | |
Panictosh | 24.08.2218:42 | 252 | |
YouPick | 24.08.2022:45 | 127 | |
윤수꾸하하 | 24.08.2018:52 | 133 | |
HopeMan | 24.08.2012:14 | 211 | |
Panictosh | 24.08.1913:41 | 183 | |
YouPick | 24.08.1509:07 | 441 | |
Panictosh | 24.08.1518:04 | 346 | |
hackillious | 24.08.1514:14 | 144 | |
shion | 24.08.1420:32 | 118 | |
인터찹 | 24.08.1418:19 | 115 | |
Panictosh | 24.08.1217:23 | 423 | |
오디세이 | 24.08.1112:07 | 123 | |
동집 | 24.08.1105:35 | 239 | |
동집 | 24.08.1102:48 | 146 | |
유튜브 | 24.08.1019:03 | 156 | |
유튜브 | 24.08.0909:14 | 297 | |
Direct | 24.08.0901:18 | 258 | |
Panictosh | 24.08.0809:46 | 166 | |
인터찹 | 24.08.0801:41 | 126 | |
mac니망 | 24.08.0615:24 | 162 | |
페러 | 24.08.0615:10 | 145 | |
페러 | 24.08.0600:03 | 120 | |
bl | 24.08.0522:08 | 92 | |
Sequoia | 24.08.0410:04 | 261 | |
Panictosh | 24.08.0320:43 | 90 | |
yeojun | 24.08.0310:01 | 112 | |
yeojun | 24.08.0217:46 | 315 | |
oreo | 24.08.0214:44 | 114 | |
yeojun | 24.08.0214:07 | 272 | |
빅서로가 | 24.08.0118:45 | 306 | |
itstory | 24.08.0118:28 | 191 | |
oreo | 24.08.0115:38 | 96 | |
동집 | 24.07.3122:15 | 167 | |
류가파 | 24.07.3121:42 | 252 | |
마요네즈 | 24.07.3109:23 | 267 | |
동집 | 24.07.3012:52 | 113 | |
동집 | 24.07.2912:11 | 464 | |
인터찹 | 24.07.2901:06 | 314 | |
인터찹 | 24.07.2623:40 | 950 | |
찡준 | 24.07.2611:52 | 95 | |
psychyyy | 24.07.2503:18 | 622 | |
wnsks | 24.07.2502:19 | 150 | |
아키나리 | 24.07.2422:44 | 239 | |
페러 | 24.07.2313:55 | 130 |
두가지 방법이 있는것 처럼 보입니다.
1. Device (HECI) 의 코드 같아 보이는데 중간에 보이는 이코드를 Device (HECI)의 마지막 부분에 넣어 보십시오..
{
0x00
})
2. 위의 코드를 현재 있는 위치에서 if .. else 구문으로 하는것입니다.
Return (Buffer (One)
{
0x00
})
}
두가지 모두 워닝을 없앨수 있는데 첫번째것이 옳을것 같아 보입니다. 첫번째 if 문이 끝나고 return해 버리니 그 이후로는 있을필요가 없겠지요.