Fix 14: krw const

This commit is contained in:
khanhduytran0
2026-06-01 20:41:38 +07:00
parent da387d3f1a
commit b6cf81cb43
2 changed files with 51 additions and 31 deletions
+28 -3
View File
@@ -14,6 +14,7 @@
/* 160 */
enum CPUFamily : uint32_t
{
CPUFamily_ARM_CYCLONE = 0x37A09642,
CPUFamily_A8 = 0x2C91A47E,
CPUFamily_A9 = 0x92FB37C8,
CPUFamily_A10 = 0x67CEEE93,
@@ -24,6 +25,26 @@ enum CPUFamily : uint32_t
CPUFamily_A15 = 0xDA33D83D,
CPUFamily_A16 = 0x8765EDEA,
CPUFamily_A17 = 0x2876F5B5,
CPUFamily_ARM_TYPHOON = CPUFamily_A8,
CPUFamily_ARM_TWISTER = CPUFamily_A9,
CPUFamily_ARM_HURRICANE = CPUFamily_A10,
CPUFamily_ARM_MONSOON_MISTRAL = CPUFamily_A11,
CPUFamily_ARM_VORTEX_TEMPEST = CPUFamily_A12,
CPUFamily_ARM_LIGHTNING_THUNDER = CPUFamily_A13,
CPUFamily_ARM_FIRESTORM_ICESTORM = CPUFamily_A14,
CPUFamily_ARM_BLIZZARD_AVALANCHE = CPUFamily_A15,
CPUFamily_ARM_EVEREST_SAWTOOTH = CPUFamily_A16,
CPUFamily_ARM_COLL = CPUFamily_A17,
CPUFamily_ARM_IBIZA = 0xFA33415E,
CPUFamily_ARM_PALMA = 0x72015832,
CPUFamily_ARM_LOBOS = 0x5F4DEA93,
CPUFamily_ARM_DONAN = 0x6F5129AC,
CPUFamily_ARM_BRAVA = 0x17D5B93A,
CPUFamily_ARM_TAHITI = 0x75D4ACB9,
CPUFamily_ARM_TUPAI = 0x204526D0,
CPUFamily_ARM_THERA = 0xAB345F09,
CPUFamily_ARM_TILOS = 0x01D7A72B,
CPUFamily_ARM_UNKNOWN_573B5EEC = 0x573B5EEC,
};
/* 164 */
@@ -155,10 +176,12 @@ enum krw_ctx_flags
KRW_CTX_FLAG_KRW_METHODS_READY = 0x00010000,
KRW_CTX_FLAG_CPU_A14 = 0x00080000,
KRW_CTX_FLAG_CPU_A15 = 0x00100000,
KRW_CTX_FLAG_CPU_A14_DMA_ALT = 0x00200000,
// These two bits are queried by dmaFail, but no ctx setter has been found in this dylib.
// The same numeric values also appear as 2 MiB / 32 MiB translation block sizes.
KRW_CTX_FLAG_CPU_A14_DMA_ALT_UNSET = 0x00200000,
KRW_CTX_FLAG_SELF_TASK_PORT_CLEARED = 0x00800000,
KRW_CTX_FLAG_CPU_A16 = 0x01000000,
KRW_CTX_FLAG_CPU_A15_DMA_ALT = 0x02000000,
KRW_CTX_FLAG_CPU_A15_DMA_ALT_UNSET = 0x02000000,
KRW_CTX_FLAG_CPU_A17 = 0x04000000,
KRW_CTX_FLAG_SELF_TASK_IPC_SPACE_CLEARED = 0x08000000,
KRW_CTX_FLAG_LOW_MEMORY_DEVICE = 0x10000000,
@@ -169,7 +192,9 @@ enum krw_ctx_flags
KRW_CTX_FLAG_CPU_A13_A14_MASK = KRW_CTX_FLAG_CPU_A13 | KRW_CTX_FLAG_CPU_A14,
KRW_CTX_FLAG_CPU_A12_A13_A14_MASK = KRW_CTX_FLAG_CPU_A12 | KRW_CTX_FLAG_CPU_A13_A14_MASK,
KRW_CTX_FLAG_CPU_A15_A16_MASK = KRW_CTX_FLAG_CPU_A15 | KRW_CTX_FLAG_CPU_A16,
KRW_CTX_FLAG_CPU_A14_A15_DMA_ALT_MASK = KRW_CTX_FLAG_CPU_A14_DMA_ALT | KRW_CTX_FLAG_CPU_A15_DMA_ALT,
KRW_CTX_FLAG_CPU_A14_DMA_ALT = KRW_CTX_FLAG_CPU_A14_DMA_ALT_UNSET,
KRW_CTX_FLAG_CPU_A15_DMA_ALT = KRW_CTX_FLAG_CPU_A15_DMA_ALT_UNSET,
KRW_CTX_FLAG_CPU_A14_A15_DMA_ALT_MASK = KRW_CTX_FLAG_CPU_A14_DMA_ALT_UNSET | KRW_CTX_FLAG_CPU_A15_DMA_ALT_UNSET,
KRW_CTX_FLAG_CPU_A16_A17_MASK = KRW_CTX_FLAG_CPU_A16 | KRW_CTX_FLAG_CPU_A17,
KRW_CTX_FLAG_CPU_A14_A15_A16_MASK = KRW_CTX_FLAG_CPU_A14 | KRW_CTX_FLAG_CPU_A15_A16_MASK,
KRW_CTX_FLAG_CPU_A15_A16_A17_MASK = KRW_CTX_FLAG_CPU_A15_A16_MASK | KRW_CTX_FLAG_CPU_A17,
+23 -28
View File
@@ -16806,7 +16806,7 @@ LABEL_27:
{
LABEL_54:
if ( !strcmp(&v27->i8[8], "__KLD") )
v31 = 1;
v31 = KRW_CTX_FLAG_CPU_A12;
}
if ( v32 != 384 )
{
@@ -23767,16 +23767,11 @@ LABEL_33:
// DONE: this matches the orig asm
bool __fastcall dmaFail_map_dbgwrap(struct_krwCtx *a1, __int64 a2, _OWORD *a3)
{
int v5; // w21
a3[2] = 0u;
a3[3] = 0u;
*a3 = 0u;
a3[1] = 0u;
v5 = physmap_map_cached(a1, a2 + DMAFAIL_DBGWRAP_MAP_OFFSET, (__int64)a3);
if ( v5 )
physmap_unmap_cached((__int64)a1, (__int64)a3);
return v5 == 0;
bzero(a3, 64);
int v5 = physmap_map_cached(a1, a2 + DMAFAIL_DBGWRAP_MAP_OFFSET, (__int64)a3);
if ( v5 )
physmap_unmap_cached((__int64)a1, (__int64)a3);
return v5 == 0;
}
//----- (0000000000023700) ----------------------------------------------------
@@ -44537,7 +44532,7 @@ LABEL_17:
cpuFamily = 0;
if ( !(unsigned int)comm_page_get_cpu_family((_DWORD *)&cpuFamily) )
return 0x28022;
if ( (_DWORD)cpuFamily == 0x92FB37C8 || (_DWORD)cpuFamily == 0x37A09642 || (_DWORD)cpuFamily == 0x2C91A47E )
if ( (_DWORD)cpuFamily == CPUFamily_A9 || (_DWORD)cpuFamily == CPUFamily_ARM_CYCLONE || (_DWORD)cpuFamily == CPUFamily_A8 )
{
if ( (*(_QWORD *)(commPageBase + COMM_PAGE_CPU_CAPABILITIES64_OFFSET) & 0x4000000) == 0 )
goto LABEL_23;
@@ -44575,7 +44570,7 @@ LABEL_33:
{
if ( (_DWORD)cpuFamily == CPUFamily_A12 )
{
v31 = 1;
v31 = KRW_CTX_FLAG_CPU_A12;
}
else
{
@@ -44583,16 +44578,16 @@ LABEL_33:
goto LABEL_69;
if ( (int)number_of_cpus() >= 8 && krwCtx->someLargeNumber >= 0x22580A06C00000LL )
krw_ctx_set_flag(krwCtx, KRW_CTX_FLAG_CPU_HIGH_CORE_CLUSTER);
v31 = 0x80000;
v31 = KRW_CTX_FLAG_CPU_A14;
}
goto LABEL_68;
}
if ( (_DWORD)cpuFamily != CPUFamily_A11 )
{
v26 = -97304226;
v26 = CPUFamily_ARM_IBIZA;
goto LABEL_64;
}
v31 = 512;
v31 = KRW_CTX_FLAG_CPU_A11;
LABEL_68:
krw_ctx_set_flag(krwCtx, v31);
goto LABEL_69;
@@ -44602,12 +44597,12 @@ LABEL_68:
LABEL_65:
if ( krwCtx->someLargeNumber > 0x2711FFFFFFFFFFLL )
krw_ctx_set_flag(krwCtx, KRW_CTX_FLAG_PAC_KERNEL_LAYOUT);
v31 = 0x1000000;
v31 = KRW_CTX_FLAG_CPU_A16;
goto LABEL_68;
}
if ( (_DWORD)cpuFamily == CPUFamily_A9 )
{
v31 = 0x2000;
v31 = KRW_CTX_FLAG_CPU_A9;
goto LABEL_68;
}
if ( (_DWORD)cpuFamily != CPUFamily_A15 )
@@ -44618,17 +44613,17 @@ LABEL_65:
{
if ( someLargeNumber > 0x2711FFFFFFFFFFLL )
{
v30 = 32;
v30 = KRW_CTX_FLAG_PAC_KERNEL_LAYOUT;
goto LABEL_118;
}
}
else if ( someLargeNumber >> 43 > 0x44A )
{
v30 = 8;
v30 = KRW_CTX_FLAG_CPU_HIGH_CORE_CLUSTER;
LABEL_118:
krw_ctx_set_flag(krwCtx, v30);
}
v31 = 0x100000;
v31 = KRW_CTX_FLAG_CPU_A15;
goto LABEL_68;
}
if ( (int)cpuFamily <= 0x573B5EEB )
@@ -44637,13 +44632,13 @@ LABEL_118:
{
case CPUFamily_A17:
krw_ctx_set_flag(krwCtx, KRW_CTX_FLAG_PAC_KERNEL_LAYOUT);
v31 = 0x4000000;
v31 = KRW_CTX_FLAG_CPU_A17;
break;
case CPUFamily_A8:
v31 = 0x8000;
v31 = KRW_CTX_FLAG_CPU_A8;
break;
case CPUFamily_A13:
v31 = 0x4000;
v31 = KRW_CTX_FLAG_CPU_A13;
break;
default:
goto LABEL_69;
@@ -44654,18 +44649,18 @@ LABEL_118:
{
if ( (_DWORD)cpuFamily == CPUFamily_A10 )
{
v31 = 64;
v31 = KRW_CTX_FLAG_CPU_A10;
goto LABEL_68;
}
v26 = 1912690738;
v26 = CPUFamily_ARM_PALMA;
LABEL_64:
if ( (_DWORD)cpuFamily != v26 )
goto LABEL_69;
goto LABEL_65;
}
if ( (_DWORD)cpuFamily != 1463508716 )
if ( (_DWORD)cpuFamily != CPUFamily_ARM_UNKNOWN_573B5EEC )
{
v26 = 1598941843;
v26 = CPUFamily_ARM_LOBOS;
goto LABEL_64;
}
krw_ctx_set_flag(krwCtx, KRW_CTX_FLAG_CPU_A14);