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

Function FIXIDE

rEFIt_UEFI/Platform/FixBiosDsdt.cpp:4254–4406  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4252UINT8 VenIDE[] = {0x86,0x80,0x00,0x00};
4253
4254UINT32 FIXIDE (UINT8 *dsdt, UINT32 len)
4255{
4256 UINT32 i, k;
4257 UINT32 j;
4258 UINT32 IDEADR = 0, BridgeSize = 0, Size;
4259 INT32 sizeoffset;
4260 AML_CHUNK *root;
4261 AML_CHUNK *device;
4262 CHAR8 *ide;
4263 BOOLEAN PATAFIX=TRUE;
4264 AML_CHUNK *met, *met2;
4265 AML_CHUNK *pack;
4266 AML_CHUNK *device1;
4267 AML_CHUNK *device2;
4268
4269
4270 if (!IDEADR1) return len;
4271
4272 for (i=0x20; len >= 10 && i < len - 10; i++) {
4273 if (CmpAdr(dsdt, i, IDEADR1)) {
4274 DBG("Found IDEADR1=%X at %X\n", IDEADR1, i);
4275 IDEADR = devFind(dsdt, i);
4276 if (!IDEADR) {
4277 continue;
4278 }
4279
4280 BridgeSize = get_size(dsdt, IDEADR);
4281 if (BridgeSize) break;
4282 } // End IDE
4283 }
4284 if (!BridgeSize) return len;
4285 DBG("Start IDE Fix\n");
4286 // find Name(_ADR, Zero) if yes, don't need to inject PATA name
4287 for (j=IDEADR+9; j<IDEADR+BridgeSize; j++)
4288 {
4289 if (CmpAdr(dsdt, j, 0))
4290 {
4291 PATAFIX = FALSE;
4292 break;
4293 }
4294 }
4295
4296 if (IDEADR) { // bridge or device
4297 i = IDEADR;
4298 Size = get_size(dsdt, i);
4299 k = FindMethod(dsdt + i, Size, "_DSM");
4300 if (k != 0) {
4301 k += i;
4302 Size = get_size(dsdt, k);
4303 sizeoffset = - 1 - Size;
4304 len = move_data(k - 1, dsdt, len, sizeoffset);
4305 len = CorrectOuters(dsdt, len, k - 2, sizeoffset);
4306 DBG("_DSM in IDE already exists, dropped\n");
4307 }
4308 }
4309
4310
4311 root = aml_create_node(NULL);

Callers 1

FixBiosDsdtFunction · 0.85

Calls 15

CmpAdrFunction · 0.85
devFindFunction · 0.85
get_sizeFunction · 0.85
FindMethodFunction · 0.85
move_dataFunction · 0.85
CorrectOutersFunction · 0.85
aml_create_nodeFunction · 0.85
aml_add_deviceFunction · 0.85
aml_add_nameFunction · 0.85
aml_add_byteFunction · 0.85
aml_add_dwordFunction · 0.85
aml_add_methodFunction · 0.85

Tested by

no test coverage detected