Line 1,112: |
Line 1,112: |
| ==== Kernel ==== | | ==== Kernel ==== |
| * No/minimal compiler update | | * No/minimal compiler update |
| + | * crt0 was restructured, Cache Invalidation/sctlr mmu disable are now different assembly functions. |
| * Inverted boolean(s) in system control/targetsystem logic | | * Inverted boolean(s) in system control/targetsystem logic |
| ** All KTargetSystem fields have inverted meaning | | ** All KTargetSystem fields have inverted meaning |
Line 1,120: |
Line 1,121: |
| ** All callers on NX are KPageTable::NoteUpdated | | ** All callers on NX are KPageTable::NoteUpdated |
| ** This causes TLB entries to be flushed/etc every time an entry is written instead of once at the end. | | ** This causes TLB entries to be flushed/etc every time an entry is written instead of once at the end. |
− | ** The callback is passed the disable-merge software-reserved bits from the entry, but this appears unused on NX.
| |
− | *** This is probably for something in the Switch2 kernel/ifdef'd out.
| |
| * KAddressSpaceInfo::GetBegin now takes a size as a third argument; this is unused on NX. | | * KAddressSpaceInfo::GetBegin now takes a size as a third argument; this is unused on NX. |
| + | ** This is presumably only for debug assertions, probably to assert size <= region size. |
| + | ** This code seems used incorrectly/bugged; it is passed a number of pages by one caller but a size by others. |
| * KAddressSpaceInfo::GetSize now performs more complicated logic based on the input type. | | * KAddressSpaceInfo::GetSize now performs more complicated logic based on the input type. |
| ** If address space not CreateProcessFlag_AddressSpace32BitWithoutAlias then the size is returned directly. | | ** If address space not CreateProcessFlag_AddressSpace32BitWithoutAlias then the size is returned directly. |
Line 1,157: |
Line 1,158: |
| ** This is also done in ReturnFromException | | ** This is also done in ReturnFromException |
| * Kernel::InitializeResourceManagers now initializes the managers in a different order. | | * Kernel::InitializeResourceManagers now initializes the managers in a different order. |
− | * KPageTableBase::FindFreeArea now uses a helper to compute the start and end of the guarded region to generate an address within. | + | * FindFreeArea was refactored in both KMemoryBlockManager and KPageTableBase to use shared common logic to compute the start and end of the guarded region to generate an address within. |
− | ** The same logic is used (without helper, possibly inlined) in KMemoryBlockManager::FindFreeArea. | + | ** The core helper is a KMemoryBlockManager function. |
| + | ** KMemoryBlockManager::FindFreeArea calls this helper twice (both inlined); KPageTable::FindFreeArea calls it once. |
| | | |
| ==See Also== | | ==See Also== |