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.
<check back for more diffs later>
* 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.