18.0.0: Difference between revisions
No edit summary |
|||
| (5 intermediate revisions by 2 users not shown) | |||
| Line 24: | Line 24: | ||
* ldn: Service access: added lm. | * ldn: Service access: added lm. | ||
* ns: Service access: added ldn:s. | * ns: Service access: added ldn:s. | ||
** ldn is currently unused in the main-codebin (on NX at least). | |||
* psc: Service access: added ovln:snd, psc:m. | * psc: Service access: added ovln:snd, psc:m. | ||
* ssl: Service access: added srepo:u, arp:r. | * ssl: Service access: added srepo:u, arp:r. | ||
| Line 91: | Line 92: | ||
** Added: 52 - inbytes: 0x8, outbytes: 0x0 | ** Added: 52 - inbytes: 0x8, outbytes: 0x0 | ||
* Interface Removed: nn::ts::server::IMeasurementServer | * Interface Removed: nn::ts::server::IMeasurementServer | ||
* | * Interface Added: nn::ts::server::ITsManager | ||
* Interface Changed: nn::psm::IPsmServer | * Interface Changed: nn::psm::IPsmServer | ||
** Added: 19 - inbytes: 0x0, outbytes: 0x0 | ** Added: 19 - inbytes: 0x0, outbytes: 0x0 | ||
** Added: 20 - inbytes: 0x0, outbytes: 0x0 | ** Added: 20 - inbytes: 0x0, outbytes: 0x0 | ||
* Interface Removed: nn::socket::sf::IClient_MC | * Interface Removed: nn::socket::sf::IClient_MC | ||
* Interface Added: nn::socket::resolver::IPrivateResolver | |||
* Interface Added: nn::socket::sf::IClient | * Interface Added: nn::socket::sf::IClient | ||
* Interface Changed: nn::hid::IHidDebugServer | * Interface Changed: nn::hid::IHidDebugServer | ||
** Added: 18 - buffer_entry_sizes: [0x28], buffers: [0x5], inbytes: 0x8, outbytes: 0x0, pid: True | ** Added: 18 - buffer_entry_sizes: [0x28], buffers: [0x5], inbytes: 0x8, outbytes: 0x0, pid: True | ||
| Line 146: | Line 147: | ||
* Interface Changed: nn::audioctrl::detail::IAudioController | * Interface Changed: nn::audioctrl::detail::IAudioController | ||
** Removed: 6 - inbytes: 0x4, outbytes: 0x1 | ** Removed: 6 - inbytes: 0x4, outbytes: 0x1 | ||
* | * Interface Added: nn::ldn::detail::IClientProcessMonitor | ||
* Interface Changed: nn::ldn::detail::ISystemLocalCommunicationService | * Interface Changed: nn::ldn::detail::ISystemLocalCommunicationService | ||
** Added: 106 - inbytes: 0x4, outbytes: 0x0 | ** Added: 106 - inbytes: 0x4, outbytes: 0x0 | ||
| Line 157: | Line 158: | ||
** Added: 601 - inbytes: 0x0, outbytes: 0x0 | ** Added: 601 - inbytes: 0x0, outbytes: 0x0 | ||
* Interface Changed: nn::ldn::detail::ISystemServiceCreator | * Interface Changed: nn::ldn::detail::ISystemServiceCreator | ||
** Added: 1 - inbytes: 0x0, outbytes: 0x0, outinterfaces: [' | ** Added: 1 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::ldn::detail::IClientProcessMonitor'] | ||
* Interface Changed: nn::ldn::detail::IUserLocalCommunicationService | * Interface Changed: nn::ldn::detail::IUserLocalCommunicationService | ||
** Added: 106 - inbytes: 0x4, outbytes: 0x0 | ** Added: 106 - inbytes: 0x4, outbytes: 0x0 | ||
| Line 168: | Line 169: | ||
** Added: 601 - inbytes: 0x0, outbytes: 0x0 | ** Added: 601 - inbytes: 0x0, outbytes: 0x0 | ||
* Interface Changed: nn::ldn::detail::IUserServiceCreator | * Interface Changed: nn::ldn::detail::IUserServiceCreator | ||
** Added: 1 - inbytes: 0x0, outbytes: 0x0, outinterfaces: [' | ** Added: 1 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::ldn::detail::IClientProcessMonitor'] | ||
* Unknown Interface prev-version: 0x7100005828 | * Unknown Interface prev-version: 0x7100005828 | ||
* Unknown Interface cur-version: 0x7100005438 | * Unknown Interface cur-version: 0x7100005438 | ||
| Line 177: | Line 178: | ||
** Added: 12 - inbytes: 0x8, outbytes: 0x0 | ** Added: 12 - inbytes: 0x8, outbytes: 0x0 | ||
** Added: 13 - inbytes: 0x8, outbytes: 0x0 | ** Added: 13 - inbytes: 0x8, outbytes: 0x0 | ||
* Interface Changed: nn::account::IAccountEntityServiceForAccountPolicy | * Interface Changed: nn::account::IAccountEntityServiceForAccountPolicy | ||
** Added: 400 - buffers: [0x5], inbytes: 0x10, outbytes: 0x0 | ** Added: 400 - buffers: [0x5], inbytes: 0x10, outbytes: 0x0 | ||
| Line 200: | Line 199: | ||
** Added: 402 - buffers: [0x6], inbytes: 0x10, outbytes: 0x4 | ** Added: 402 - buffers: [0x6], inbytes: 0x10, outbytes: 0x4 | ||
* Interface Changed: nn::account::baas::IAdministrator | * Interface Changed: nn::account::baas::IAdministrator | ||
** Added: 180 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x4, outbytes: 0x0 | ** Added: 180 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x4, outbytes: 0x0 | ||
* Interface Changed: nn::account::baas::IFloatingRegistrationRequest | * Interface Changed: nn::account::baas::IFloatingRegistrationRequest | ||
| Line 207: | Line 205: | ||
** Added: 16 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4 | ** Added: 16 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4 | ||
* Interface Changed: nn::account::baas::IManagerForSystemService | * Interface Changed: nn::account::baas::IManagerForSystemService | ||
** Added: 180 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x4, outbytes: 0x0 | ** Added: 180 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x4, outbytes: 0x0 | ||
* Interface Changed: nn::account::nas::IOAuthProcedureForExternalNsa | * Interface Changed: nn::account::nas::IOAuthProcedureForExternalNsa | ||
| Line 223: | Line 220: | ||
** Added: 30 - inbytes: 0x0, outbytes: 0x10 | ** Added: 30 - inbytes: 0x0, outbytes: 0x10 | ||
** Added: 110 - buffer_entry_sizes: [0x80, 0x0], buffers: [0x19, 0x5], inbytes: 0x38, outbytes: 0x0 | ** Added: 110 - buffer_entry_sizes: [0x80, 0x0], buffers: [0x19, 0x5], inbytes: 0x38, outbytes: 0x0 | ||
* Interface Changed: nn::account::IAccountServiceForAdministrator | * Interface Changed: nn::account::IAccountServiceForAdministrator | ||
** Added: 400 - buffers: [0x5], inbytes: 0x10, outbytes: 0x0 | ** Added: 400 - buffers: [0x5], inbytes: 0x10, outbytes: 0x0 | ||
| Line 236: | Line 231: | ||
** Added: 402 - buffers: [0x6], inbytes: 0x10, outbytes: 0x4 | ** Added: 402 - buffers: [0x6], inbytes: 0x10, outbytes: 0x4 | ||
* Interface Changed: nn::account::baas::IAdministrator | * Interface Changed: nn::account::baas::IAdministrator | ||
** Added: 180 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x4, outbytes: 0x0 | ** Added: 180 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x4, outbytes: 0x0 | ||
* Interface Changed: nn::account::baas::IFloatingRegistrationRequest | * Interface Changed: nn::account::baas::IFloatingRegistrationRequest | ||
| Line 243: | Line 237: | ||
** Added: 16 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4 | ** Added: 16 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4 | ||
* Interface Changed: nn::account::baas::IManagerForSystemService | * Interface Changed: nn::account::baas::IManagerForSystemService | ||
** Added: 180 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x4, outbytes: 0x0 | ** Added: 180 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x4, outbytes: 0x0 | ||
* Interface Changed: nn::account::nas::IOAuthProcedureForExternalNsa | * Interface Changed: nn::account::nas::IOAuthProcedureForExternalNsa | ||
| Line 289: | Line 282: | ||
** Added: 3101 - inbytes: 0x0, outbytes: 0x0, outhandles: [1], outinterfaces: ['nn::ns::detail::IAsyncResult'] | ** Added: 3101 - inbytes: 0x0, outbytes: 0x0, outhandles: [1], outinterfaces: ['nn::ns::detail::IAsyncResult'] | ||
** Added: 3102 - inbytes: 0x0, outbytes: 0x0 | ** Added: 3102 - inbytes: 0x0, outbytes: 0x0 | ||
* | * Interface Added: nn::hshl::IVsysVoltageSession | ||
* Interface Changed: nn::hshl::IChargeSetterSession | * Interface Changed: nn::hshl::IChargeSetterSession | ||
** Added: 4 - inbytes: 0x1, outbytes: 0x0 | ** Added: 4 - inbytes: 0x1, outbytes: 0x0 | ||
* Interface Changed: nn::hshl::IManager | * Interface Changed: nn::hshl::IManager | ||
** | ** Added: 11 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::hshl::IVsysVoltageSession'] | ||
** Added: 12 - inbytes: 0x0, outbytes: 0x1 | ** Added: 12 - inbytes: 0x0, outbytes: 0x1 | ||
* Interface Changed: nn::hshl::ISetterManager | * Interface Changed: nn::hshl::ISetterManager | ||
| Line 312: | Line 302: | ||
** Added: 2435 - inbytes: 0x10, outbytes: 0x0 | ** Added: 2435 - inbytes: 0x10, outbytes: 0x0 | ||
** Added: 5000 - inbytes: 0x8, outbytes: 0x8 | ** Added: 5000 - inbytes: 0x8, outbytes: 0x8 | ||
* | * Interface Added: nn::am::service::INotificationReceiver | ||
* | * Interface Added: nn::am::service::INotificationSender | ||
* | * Interface Added: nn::am::service::IReceiverService | ||
* | * Interface Added: nn::am::service::ISenderService | ||
* Interface Changed: nn::am::service::IAppletCommonFunctions | * Interface Changed: nn::am::service::IAppletCommonFunctions | ||
** Added: 82 - inbytes: 0x1, outbytes: 0x0 | ** Added: 82 - inbytes: 0x1, outbytes: 0x0 | ||
** Added: 160 - inbytes: 0x0, outbytes: 0x0, outinterfaces: [' | ** Added: 160 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::am::service::IReceiverService'] | ||
** Added: 161 - inbytes: 0x0, outbytes: 0x0, outinterfaces: [' | ** Added: 161 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::am::service::ISenderService'] | ||
* Interface Changed: nn::am::service::IDebugFunctions | * Interface Changed: nn::am::service::IDebugFunctions | ||
** Added: 53 - inbytes: 0x8, outbytes: 0x8 | ** Added: 53 - inbytes: 0x8, outbytes: 0x8 | ||
| Line 346: | Line 336: | ||
** Added: 145601 - inbytes: 0x0, outbytes: 0x36 | ** Added: 145601 - inbytes: 0x0, outbytes: 0x36 | ||
** Added: 195101 - inbytes: 0x36, outbytes: 0x0 | ** Added: 195101 - inbytes: 0x36, outbytes: 0x0 | ||
* | * Interface Added: nn::npns::ISetNetworkServiceAccountIdTokenContext | ||
* Interface Changed: nn::npns::INotificationReceiver | * Interface Changed: nn::npns::INotificationReceiver | ||
** Added: 5 - buffers: [0x9], inbytes: 0x0, outbytes: 0x0 | ** Added: 5 - buffers: [0x9], inbytes: 0x0, outbytes: 0x0 | ||
| Line 387: | Line 377: | ||
** Changed: 1 - inbytes: 0x20 -> 0x28 (final state: inbytes: 0x28, inhandles: [1], outbytes: 0x0, outinterfaces: ['nn::grcsrv::IContinuousRecorder']) | ** Changed: 1 - inbytes: 0x20 -> 0x28 (final state: inbytes: 0x28, inhandles: [1], outbytes: 0x0, outinterfaces: ['nn::grcsrv::IContinuousRecorder']) | ||
** Added: 10 - inbytes: 0x20, outbytes: 0x0, outinterfaces: ['nn::grcsrv::IContinuousRecorder'] | ** Added: 10 - inbytes: 0x20, outbytes: 0x0, outinterfaces: ['nn::grcsrv::IContinuousRecorder'] | ||
* Interface Added: nn::sf::hipc::detail::IHipcManager | * Interface Added: nn::sf::hipc::detail::IHipcManager | ||
* Interface Changed: nn::capsrv::sf::IDecoderControlService | * Interface Changed: nn::capsrv::sf::IDecoderControlService | ||
** Added: 4002 - buffers: [0x46, 0x5], inbytes: 0x30, outbytes: 0x8 | ** Added: 4002 - buffers: [0x46, 0x5], inbytes: 0x30, outbytes: 0x8 | ||
* | * Interface Added: nn::olsc::srv::IServiceGetter | ||
* Interface Changed: nn::spsm::detail::IPowerStateInterface | * Interface Changed: nn::spsm::detail::IPowerStateInterface | ||
** Added: 15 - inbytes: 0x4, outbytes: 0x0 | ** Added: 15 - inbytes: 0x4, outbytes: 0x0 | ||
** Added: 16 - inbytes: 0x8, outbytes: 0x0 | ** Added: 16 - inbytes: 0x8, outbytes: 0x0 | ||
* | * Interface Added: nn::fssrv::sf::IMemoryStressor | ||
* Interface Changed: nn::fssrv::sf::IDeviceOperator | * Interface Changed: nn::fssrv::sf::IDeviceOperator | ||
** Added: 222 - buffers: [0x6], inbytes: 0x10, outbytes: 0x0 | ** Added: 222 - buffers: [0x6], inbytes: 0x10, outbytes: 0x0 | ||
** Added: 302 - inbytes: 0x4, outbytes: 0x0 | ** Added: 302 - inbytes: 0x4, outbytes: 0x0 | ||
* Interface Changed: nn::fssrv::sf::IFileSystemProxy | * Interface Changed: nn::fssrv::sf::IFileSystemProxy | ||
** Added: 1020 - inbytes: 0x0, outbytes: 0x0, outinterfaces: [' | ** Added: 1020 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::fssrv::sf::IMemoryStressor'] | ||
** Removed: 1100 - buffers: [0x5], inbytes: 0x0, outbytes: 0x0 | ** Removed: 1100 - buffers: [0x5], inbytes: 0x0, outbytes: 0x0 | ||
** Added: 1101 - buffers: [0x5], inbytes: 0x4, outbytes: 0x0 | ** Added: 1101 - buffers: [0x5], inbytes: 0x4, outbytes: 0x0 | ||
| Line 417: | Line 403: | ||
* Interface Changed: nn::spl::detail::IEsInterface | * Interface Changed: nn::spl::detail::IEsInterface | ||
** Added: 33 - buffers: [0x9, 0x9, 0x9], inbytes: 0x4, outbytes: 0x10 | ** Added: 33 - buffers: [0x9, 0x9, 0x9], inbytes: 0x4, outbytes: 0x10 | ||
* | * Interface Added: nn::fssrv::sf::IMemoryStressor | ||
* Interface Changed: nn::fssrv::sf::IDeviceOperator | * Interface Changed: nn::fssrv::sf::IDeviceOperator | ||
** Added: 222 - buffers: [0x6], inbytes: 0x10, outbytes: 0x0 | ** Added: 222 - buffers: [0x6], inbytes: 0x10, outbytes: 0x0 | ||
** Added: 302 - inbytes: 0x4, outbytes: 0x0 | ** Added: 302 - inbytes: 0x4, outbytes: 0x0 | ||
* Interface Changed: nn::fssrv::sf::IFileSystemProxy | * Interface Changed: nn::fssrv::sf::IFileSystemProxy | ||
** Added: 1020 - inbytes: 0x0, outbytes: 0x0, outinterfaces: [' | ** Added: 1020 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::fssrv::sf::IMemoryStressor'] | ||
** Removed: 1100 - buffers: [0x5], inbytes: 0x0, outbytes: 0x0 | ** Removed: 1100 - buffers: [0x5], inbytes: 0x0, outbytes: 0x0 | ||
** Added: 1101 - buffers: [0x5], inbytes: 0x4, outbytes: 0x0 | ** Added: 1101 - buffers: [0x5], inbytes: 0x4, outbytes: 0x0 | ||
| Line 440: | Line 426: | ||
** Added: 12 - inbytes: 0x8, outbytes: 0x0 | ** Added: 12 - inbytes: 0x8, outbytes: 0x0 | ||
** Added: 13 - inbytes: 0x8, outbytes: 0x0 | ** Added: 13 - inbytes: 0x8, outbytes: 0x0 | ||
* | * Interface Added: nn::hshl::IVsysVoltageSession | ||
* Interface Changed: nn::hshl::IChargeSetterSession | * Interface Changed: nn::hshl::IChargeSetterSession | ||
** Added: 4 - inbytes: 0x1, outbytes: 0x0 | ** Added: 4 - inbytes: 0x1, outbytes: 0x0 | ||
* Interface Changed: nn::hshl::IManager | * Interface Changed: nn::hshl::IManager | ||
** | ** Added: 11 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::hshl::IVsysVoltageSession'] | ||
** Added: 12 - inbytes: 0x0, outbytes: 0x1 | ** Added: 12 - inbytes: 0x0, outbytes: 0x1 | ||
* Interface Changed: nn::hshl::ISetterManager | * Interface Changed: nn::hshl::ISetterManager | ||
| Line 454: | Line 437: | ||
* Interface Changed: nn::spl::detail::IEsInterface | * Interface Changed: nn::spl::detail::IEsInterface | ||
** Added: 33 - buffers: [0x9, 0x9, 0x9], inbytes: 0x4, outbytes: 0x10 | ** Added: 33 - buffers: [0x9, 0x9, 0x9], inbytes: 0x4, outbytes: 0x10 | ||
* | * Interface Added: nn::fssrv::sf::IMemoryStressor | ||
* Interface Changed: nn::fssrv::sf::IDeviceOperator | * Interface Changed: nn::fssrv::sf::IDeviceOperator | ||
** Added: 222 - buffers: [0x6], inbytes: 0x10, outbytes: 0x0 | ** Added: 222 - buffers: [0x6], inbytes: 0x10, outbytes: 0x0 | ||
** Added: 302 - inbytes: 0x4, outbytes: 0x0 | ** Added: 302 - inbytes: 0x4, outbytes: 0x0 | ||
* Interface Changed: nn::fssrv::sf::IFileSystemProxy | * Interface Changed: nn::fssrv::sf::IFileSystemProxy | ||
** Added: 1020 - inbytes: 0x0, outbytes: 0x0, outinterfaces: [' | ** Added: 1020 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::fssrv::sf::IMemoryStressor'] | ||
** Removed: 1100 - buffers: [0x5], inbytes: 0x0, outbytes: 0x0 | ** Removed: 1100 - buffers: [0x5], inbytes: 0x0, outbytes: 0x0 | ||
** Added: 1101 - buffers: [0x5], inbytes: 0x4, outbytes: 0x0 | ** Added: 1101 - buffers: [0x5], inbytes: 0x4, outbytes: 0x0 | ||
| Line 473: | Line 456: | ||
* Interface Changed: nn::spl::detail::IEsInterface | * Interface Changed: nn::spl::detail::IEsInterface | ||
** Added: 33 - buffers: [0x9, 0x9, 0x9], inbytes: 0x4, outbytes: 0x10 | ** Added: 33 - buffers: [0x9, 0x9, 0x9], inbytes: 0x4, outbytes: 0x10 | ||
* | * Interface Added: nn::fssrv::sf::IMemoryStressor | ||
* Interface Changed: nn::fssrv::sf::IDeviceOperator | * Interface Changed: nn::fssrv::sf::IDeviceOperator | ||
** Added: 222 - buffers: [0x6], inbytes: 0x10, outbytes: 0x0 | ** Added: 222 - buffers: [0x6], inbytes: 0x10, outbytes: 0x0 | ||
** Added: 302 - inbytes: 0x4, outbytes: 0x0 | ** Added: 302 - inbytes: 0x4, outbytes: 0x0 | ||
* Interface Changed: nn::fssrv::sf::IFileSystemProxy | * Interface Changed: nn::fssrv::sf::IFileSystemProxy | ||
** Added: 1020 - inbytes: 0x0, outbytes: 0x0, outinterfaces: [' | ** Added: 1020 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::fssrv::sf::IMemoryStressor'] | ||
** Removed: 1100 - buffers: [0x5], inbytes: 0x0, outbytes: 0x0 | ** Removed: 1100 - buffers: [0x5], inbytes: 0x0, outbytes: 0x0 | ||
** Added: 1101 - buffers: [0x5], inbytes: 0x4, outbytes: 0x0 | ** Added: 1101 - buffers: [0x5], inbytes: 0x4, outbytes: 0x0 | ||
| Line 496: | Line 479: | ||
** Added: 12 - inbytes: 0x8, outbytes: 0x0 | ** Added: 12 - inbytes: 0x8, outbytes: 0x0 | ||
** Added: 13 - inbytes: 0x8, outbytes: 0x0 | ** Added: 13 - inbytes: 0x8, outbytes: 0x0 | ||
* | * Interface Added: nn::hshl::IVsysVoltageSession | ||
* Interface Changed: nn::hshl::IChargeSetterSession | * Interface Changed: nn::hshl::IChargeSetterSession | ||
** Added: 4 - inbytes: 0x1, outbytes: 0x0 | ** Added: 4 - inbytes: 0x1, outbytes: 0x0 | ||
* Interface Changed: nn::hshl::IManager | * Interface Changed: nn::hshl::IManager | ||
** | ** Added: 11 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::hshl::IVsysVoltageSession'] | ||
** Added: 12 - inbytes: 0x0, outbytes: 0x1 | ** Added: 12 - inbytes: 0x0, outbytes: 0x1 | ||
* Interface Changed: nn::hshl::ISetterManager | * Interface Changed: nn::hshl::ISetterManager | ||
| Line 515: | Line 495: | ||
Using updated master-key: master_key_11 (previously master_key_10). See [[NCA]] for the KeyGeneration listing. | Using updated master-key: master_key_11 (previously master_key_10). See [[NCA]] for the KeyGeneration listing. | ||
==== Kernel ==== | |||
* Compiler/libc was upgraded, this results in various minor optimizations throughout the whole kernel. | |||
** Many, many minor changes that this is almost certainly the cause for, e.g. KThread::SuspendRequest now calculates requested value as (0x10 << suspend_type) instead of (1 << (suspend_type + 4)). | |||
** Biggest one is that sp/lr are now much more commonly not saved to stack until actually needed, if a function has a return path which does not make calls/does not need lr/sp saved. | |||
* Initialize0 changes: | |||
** The physical base address of the kernel is now passed by KernelLdr for use during KernelSlab virtual memory region setup. | |||
*** This replaces the previous call to KInitialPageTable::GetPhysicalAddress. | |||
* SVC-handler accesses to the thread local region's disable count now use userspace access instructions. | |||
* SvcSetHeapSize now only sets the output address on success. | |||
** This wasn't a vulnerability before, because prior to this the ABI meant userland would receive whatever was in the userland register at call time. | |||
* CreateProcessParameter now zeroes many fields before performing initialization. | |||
* When making a deep copy of the KPageGroup for loading InitialProcess segments, a new helper with full error checking/etc is now used instead of doing the copy inline | |||
* New CreateProcessFlag 0x2000 is "EnableReservedRegionExtraSize", when set the reserved region size is increased by (AddressSpaceSize / 8). | |||
** Currently, CreateProcess will return svc::ResultInvalidState() unless all the following conditions are met: | |||
*** Address space type must be 39-bit | |||
*** System resource size must be > 0 | |||
*** KTargetSystem::IsDebugMode() must be true. | |||
** New InfoType (0x1C) "InfoType_ReservedRegionExtraSize" retrieves the extra size, which is a member of KPageTableBase. | |||
** Loader does not currently support passing this flag in any capacity yet. | |||
** nn::os::VammManager currently calculates the reserved region as [start, end - extra size], and will not map to the extra part of the region. | |||
* Various KPageTable(Base/Impl) changes: | |||
** InitializeForProcess now takes in the create process flags directly instead of parsing as a bunch of bools. | |||
** InitializeForProcess now performs much more complicated initialization/randomization of the four aslr'd regions, dividing them up before/after the process code using largest-region first selection for randomization order. | |||
** KPageTableImpl's traversal functions now take an additional output byte (which is also a new member at +0x11 in the traversal block and in KMemoryRange), this is always set to zero. | |||
*** This byte is checked when traversing by ::Finalize and ::GetContiguousRangeWithMemoryState, but not other page table functions. | |||
*** This byte is also stored as a new member of the memory range struct returned by GetContiguousRangeWithMemoryState | |||
** AllocateAndMapPagesImpl now takes in the page properties by reference instead of by value. | |||
** Read/WriteReadDebugIoMemory now use simpler logic for determining the current readable size. | |||
* The KMemoryBlock helper "ConvertToKMemoryPermission" was changed to only copy the user-write bit to KernelWrite. | |||
** This fixes a longstanding bug where the input was AND'd with KMemoryPermission_UserReadWrite, and these bits were then ORR'd into the final permission <<='d with KernelShift. | |||
** The intent here was to copy the user read/write permissions into the kernel read/write permissions, but KMemoryPermission_UserReadWrite is not bitmask 0x3, it's bitmask 0x1B (including the KernelRead/Write bits). | |||
** Thus, previously this would allow an input with KernelRead bit to spuriously set the NotMapped bit, and an input with KernelWrite bit to spuriously set the unused top bit. | |||
** This was unexploitable, except maybe for causing a kernel-mode access exception. | |||
* HandleException now handles EsrEc_DataAbortEl0 specially when determining the debug exception type. | |||
** When ESR_EL1.IFSC is 0b100001 ("Alignment Fault"), ExceptionType_UnalignedData is selected instead of ExceptionType_DataAbort. | |||
* KMemoryManager(Impl)/KPageHeap changes: | |||
** KPageHeap's heap_virtual_address member is now removed and is a part of KMemoryManagerImpl now (this is still unused in non-debug kernel). | |||
** KMemoryManager::AllocatePageGroup now takes a parameter for the required minimum alignment for the page group. | |||
*** This is currently passed as 1 page (minimum alignment) at all callsites. | |||
* SecureMonitor access was refactored, actual smc invocation is now in its own helper separate from interrupt disable/enable (and helpers which invoke without interrupt disable now exist). | |||
=== [[Audio_services|audio]] === | |||
Besides IPC changes, vulns were [[Switch_System_Flaws|fixed]]. | |||
=== [[JIT_services|jit]] === | === [[JIT_services|jit]] === | ||