20.0.0: Difference between revisions
No edit summary |
improve kernel diff |
||
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. | ||
* 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 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 | ** The core helper is a KMemoryBlockManager function. | ||
** KMemoryBlockManager::FindFreeArea calls this helper twice (both inlined); KPageTable::FindFreeArea calls it once. | |||
==See Also== | ==See Also== |