check more Scope false search

Signed-off-by: Sergey Isakov <isakov-sl@bk.ru>
This commit is contained in:
Sergey Isakov 2019-12-19 14:14:54 +03:00
parent 83205886bf
commit f3c01aa9be
2 changed files with 26 additions and 6 deletions

View File

@ -30,10 +30,12 @@ set DEVSTAGE=
set IASL_PREFIX=c:\ASL\
set DEFAULT_CYGWIN_HOME=c:\cygwin
set DEFAULT_PYTHONHOME=
rem set DEFAULT_PYTHONHOME=
rem d:\Program File\Python37"
set DEFAULT_PYTHON_FREEZER_PATH=%PYTHON_HOME%\Scripts
set PYTHON3_ENABLE=FALSE
rem set DEFAULT_PYTHON_FREEZER_PATH=%PYTHON_HOME%\Scripts
set "PYTHONHOME=d:\Program File\Python37"
set "PYTHON_FREEZER_PATH=%PYTHONHOME%\Scripts"
set PYTHON3_ENABLE=TRUE
set DEFAULT_NASM_PREFIX=
rem C:\Program Files (x86)\NASM"
rem # %DEFAULT_CYGWIN_HOME%\bin

View File

@ -1375,11 +1375,11 @@ UINT32 CorrectOuterMethod (UINT8 *dsdt, UINT32 len, UINT32 adr, INT32 shift)
UINT32 CorrectOuters (UINT8 *dsdt, UINT32 len, UINT32 adr, INT32 shift)
{
INT32 i, k;
// INT32 j;
INT32 j;
UINT32 size = 0;
INT32 offset = 0;
// UINT32 SBSIZE = 0, SBADR = 0;
// BOOLEAN SBFound = FALSE;
BOOLEAN SBFound = FALSE;
if (shift == 0) {
return len;
@ -1393,7 +1393,25 @@ UINT32 CorrectOuters (UINT8 *dsdt, UINT32 len, UINT32 adr, INT32 shift)
k = i + 2;
} else if ((dsdt[i] == 0x10) && !CmpNum(dsdt, i, TRUE)) { //device scope like Scope (_PCI)
//additional check for Field
if (!((dsdt[i - 2] == 0x5B) && (dsdt[i - 1] == 0x81))) {
// a problem with fields 52 4D 53 33 10 41 4D 45 4D
// 1. Search outer filed
// 2. check the size of the field
// 3. compare if we are in the filed
j = i - 1;
SBFound = TRUE;
while (j > 0x20) {
if (((dsdt[j - 1] == 0x5B) && (dsdt[j] == 0x81)) ||
((dsdt[j - 1] == 0x5B) && (dsdt[j] == 0x86))) { //we found a Field() or IndexField before the 0x10 will check what is it
size = get_size(dsdt, j + 1); // if it is not a size then size = 0
if (j + size >= i) {
// it is inside a Field, skip it
SBFound = FALSE;
}
break; // other field so we stop search
}
j--;
}
if (SBFound) {
k = i + 1;
}
}