MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / FixADP1

Function FixADP1

rEFIt_UEFI/Platform/FixBiosDsdt.cpp:1726–1768  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1724 */
1725
1726UINT32 FixADP1 (UINT8* dsdt, UINT32 len)
1727{
1728 UINT32 i, j;
1729 UINT32 adr, size;
1730 INT32 sizeoffset, shift;
1731 CHAR8 Name[4];
1732 DBG("Start ADP1 fix\n");
1733 shift = FindBin(dsdt, len, (const UINT8*)acpi3, sizeof(acpi3));
1734 if (shift < 0) {
1735 // not found - create new one or do nothing
1736 MsgLog("no device(AC) exists\n");
1737 return len;
1738 }
1739 adr = devFind(dsdt, (UINT32)shift);
1740 if (!adr) {
1741 return len;
1742 }
1743 size = get_size(dsdt, adr);
1744 //check name and replace
1745 if (size < 0x40) {
1746 j = adr + 1;
1747 } else {
1748 j = adr + 2;
1749 }
1750 for (i=0; i<4; i++) {
1751 Name[i] = dsdt[j+i];
1752 }
1753 ReplaceName(dsdt, len, Name, "ADP1");
1754 //find PRW
1755 if(FindBin(dsdt+adr, size, (const UINT8*)prw1c, 8) >= 0){
1756 DBG("_prw is present\n");
1757 return len;
1758 }
1759 j = adr + size;
1760 sizeoffset = sizeof(prw1c);
1761 len = move_data(j, dsdt, len, sizeoffset);
1762 CopyMem(dsdt + j, prw1c, sizeoffset);
1763 shift = write_size(adr, dsdt, len, sizeoffset);
1764 sizeoffset += shift;
1765 len += shift;
1766 len = CorrectOuters(dsdt, len, adr - 3, sizeoffset);
1767 return len;
1768}
1769
1770UINT32 FixAny (UINT8* dsdt, UINT32 len, const XBuffer<UINT8> ToFind, const XBuffer<UINT8> ToReplace)
1771{

Callers 1

FixBiosDsdtFunction · 0.85

Calls 8

FindBinFunction · 0.85
devFindFunction · 0.85
get_sizeFunction · 0.85
ReplaceNameFunction · 0.85
move_dataFunction · 0.85
write_sizeFunction · 0.85
CorrectOutersFunction · 0.85
CopyMemFunction · 0.50

Tested by

no test coverage detected