Skip to content

Commit eb37dc2

Browse files
goodbestosy
authored andcommitted
Update kern_start.cpp
1 parent bfe992e commit eb37dc2

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

Polaris22Fixup/kern_start.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,15 @@ static const uint8_t kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched[]
5151
0x0f, 0x95, 0xc0, 0x31, 0xc0, 0x83, 0xc0, 0x02, 0x5d, 0xc3, 0x55,
5252
};
5353

54+
static const uint8_t kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal[] = {
55+
0x83, 0xc0, 0x02, 0xeb, 0x0e, 0x31, 0xc0, 0xf6, 0x47, 0x08, 0xc0, 0x0f, 0x95, 0xc0, 0x01, 0xc0, 0x83, 0xc0, 0x02, 0x5d, 0xc3, 0x55,
56+
};
57+
58+
static const uint8_t kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched[] = {
59+
0x83, 0xc0, 0x02, 0xeb, 0x09, 0x31, 0xc0, 0xf6, 0x47, 0x08, 0xc0, 0x0f, 0x95, 0xc0, 0x31, 0xc0, 0x83, 0xc0, 0x02, 0x5d, 0xc3, 0x55,
60+
};
61+
62+
5463
static constexpr size_t kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnSize = sizeof(kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal);
5564

5665
static_assert(kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnSize == sizeof(kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched), "patch size invalid");
@@ -183,11 +192,19 @@ static void patched_cs_validate_page(vnode_t vp,
183192
DBGLOG(MODULE_SHORT, "found function to patch at %s!", path);
184193
return;
185194
}
186-
// covers pattern in macOS 12.3+
195+
// covers pattern in macOS 13.3+
196+
// patch for 12.3-13.3 is a substring of this patch. So run this first.
197+
// TODO: use getKernelVersion and KernelMinorVersion in Lilu for more clear implementation
198+
if (UNLIKELY(KernelPatcher::findAndReplace(const_cast<void *>(data), PAGE_SIZE, kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal, sizeof(kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal), kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched, sizeof(kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched)))) {
199+
DBGLOG(MODULE_SHORT, "found function to patch at %s!", path);
200+
return;
201+
}
202+
// covers pattern in macOS 12.3 - 13.2
187203
if (UNLIKELY(KernelPatcher::findAndReplace(const_cast<void *>(data), PAGE_SIZE, kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal, sizeof(kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal), kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched, sizeof(kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched)))) {
188204
DBGLOG(MODULE_SHORT, "found function to patch at %s!", path);
189205
return;
190206
}
207+
191208
}
192209
}
193210

0 commit comments

Comments
 (0)