10.0.0: Difference between revisions
| (6 intermediate revisions by 2 users not shown) | |||
| Line 71: | Line 71: | ||
** The initial arguments now store an entrypoint invocation function pointer in addition to the entrypoint. | ** The initial arguments now store an entrypoint invocation function pointer in addition to the entrypoint. | ||
** Core 1/2/3 now panic if cpuactlr/cpuectlr hold a value different than the one in init argument. Previously, they they did if (real value != expected value) { real value = expected value }. | ** Core 1/2/3 now panic if cpuactlr/cpuectlr hold a value different than the one in init argument. Previously, they they did if (real value != expected value) { real value = expected value }. | ||
* The reserved memory size for slab heap aslr gaps was reduced by 64 KB from 2 MB to 0x1F0000. | |||
* Physical ASLR for certain backing regions (Kernel .text/.rodata/.rwdata/.bss + the Slab Heap region) was implemented. | * Physical ASLR for certain backing regions (Kernel .text/.rodata/.rwdata/.bss + the Slab Heap region) was implemented. | ||
** Physical randomization of the kernel image is done by KernelLdr. | ** Physical randomization of the kernel image is done by KernelLdr. | ||
| Line 110: | Line 111: | ||
** Next, the lambda is called with entry template = input entry template, bitflag parameter = 1. This changes all mappings to new permissions, and flushes data cache on all new mappings. | ** Next, the lambda is called with entry template = input entry template, bitflag parameter = 1. This changes all mappings to new permissions, and flushes data cache on all new mappings. | ||
** Finally, mappings are merged, and the function returns. | ** Finally, mappings are merged, and the function returns. | ||
* SvcQueryIoMapping's ABI was changed. | |||
** Previously signature was Result QueryIoMapping(uintptr_t *out_address, PhysicalAddress physical_address, size_t size). | |||
** New signature is Result QueryIoMapping(uintptr_t *out_address, size_t *out_size, PhysicalAddress physical_address, size_t size); | |||
** For normal IO, out_size is just written with the input size parameter. | |||
** For special debug regions (mapped using 8.0.0+ memory region descriptor, queried by passing 1/2/3 as phys_addr parameter), out_size is written with the real size of the queried region. | |||
* SvcQueryPhysicalAddress was stubbed, and now always returns ResultInvalidCurrentMemoryState. | |||
* KCurrentContext now stores a dereferencable pointer to the current thread's TLS. | |||
** This is used to check the user disable count (for thread pinning) in the SvcHandler instead of loading tls from tpidrro_el0. | |||
====FIRM Sysmodules==== | ====FIRM Sysmodules==== | ||
| Line 132: | Line 140: | ||
* [[Error_Upload_services|eupld]] now has access to srepo:u. | * [[Error_Upload_services|eupld]] now has access to srepo:u. | ||
* [[Glue_services|glue]] no longer has access to bpc, and access to time:al was added. | * [[Glue_services|glue]] no longer has access to bpc, and access to time:al was added. | ||
** Prior to this sysupdate, no retail system-titles used time:al. | |||
* [[GRC_services|grc]] now has access to time:su. | * [[GRC_services|grc]] now has access to time:su. | ||
* [[creport]] no longer has access to ns:dev, and access to pgl was added. | * [[creport]] no longer has access to ns:dev, and access to pgl was added. | ||
* [[Shared_Database_services|sdb]] no longer has access to prepo:s, and access to srepo:u was added. | * [[Shared_Database_services|sdb]] no longer has access to prepo:s, and access to srepo:u was added. | ||
* [[OLSC_services|olsc]] now hosts a new [[Services_API|service]], and access to arp:r was added. [[SVC]]s svcMapTransferMemory and svcUnmapTransferMemory are now accessible. | * [[OLSC_services|olsc]] now hosts a new [[Services_API|service]], and access to arp:r was added. [[SVC]]s svcMapTransferMemory and svcUnmapTransferMemory are now accessible. | ||
* All web-applets now have access to [[SVC]]s svcMapPhysicalMemoryUnsafe/svcUnmapPhysicalMemoryUnsafe. | * All web-applets now have access to [[SVC]]s svcMapPhysicalMemoryUnsafe/svcUnmapPhysicalMemoryUnsafe, but these aren't used in the main-codebin for any of these applets. | ||
* [[MyPage_Applet|LibraryAppletMyPage]] now has access to npns:s. | * [[MyPage_Applet|LibraryAppletMyPage]] now has access to npns:s. | ||