[*] another preemptive linux fix. i missed a step in calculating the mask (i didnt calculate the mask at all)
This commit is contained in:
parent
53a29a6c13
commit
0c494cb99a
@ -436,14 +436,22 @@ namespace Aurora::Threading
|
|||||||
}
|
}
|
||||||
|
|
||||||
AuTuple<const void *, AuUInt8, AuOptionalEx<AuUInt32>> DecodeAddress(const void *pAddress,
|
AuTuple<const void *, AuUInt8, AuOptionalEx<AuUInt32>> DecodeAddress(const void *pAddress,
|
||||||
AuUInt32 uSizeMask)
|
AuUInt32 uWordSize)
|
||||||
{
|
{
|
||||||
#if defined(AURORA_IS_MODERNNT_DERIVED)
|
#if defined(AURORA_IS_MODERNNT_DERIVED)
|
||||||
return AuMakeTuple(pAddress, 0, AuOptionalEx<AuUInt32> {});
|
return AuMakeTuple(pAddress, 0, AuOptionalEx<AuUInt32> {});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (uWordSize == 8)
|
||||||
|
{
|
||||||
|
return AuMakeTuple(pAddress, 0xFFFFFFFF, 0xFFFFFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
auto pRounded = AuPageRound(AuUInt(pAddress), AuUInt(4));
|
auto pRounded = AuPageRound(AuUInt(pAddress), AuUInt(4));
|
||||||
auto uDelta = (AuUInt)(pAddress) - (AuUInt)(pRounded);
|
auto uDelta = (AuUInt)(pAddress) - (AuUInt)(pRounded);
|
||||||
|
|
||||||
|
AuUInt32 uSizeMask = std::pow(AuUInt64(2), AuUInt64(uWordSize * 8)) - 1ull;
|
||||||
|
|
||||||
switch (uDelta)
|
switch (uDelta)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
Loading…
Reference in New Issue
Block a user