Commit Graph

445 Commits

Author SHA1 Message Date
Michael Scire
993ffbfdcd kern: unify all waiting semantics to use single api 2021-09-19 10:35:39 -07:00
Michael Scire
ecb607bade kern/svc: implement IoPool/Region svc support 2021-09-19 10:35:39 -07:00
Michael Scire
b579a6d75e svc/kern/dd: remove MapDeviceAddressSpace() 2021-09-19 10:35:39 -07:00
Michael Scire
3e328eae72 kern: update Initialize0 for new arguments/randomization semantics 2021-09-19 10:35:38 -07:00
Michael Scire
f103b6876b kern: KMemoryManager/KPageGroup use physical addresses instead of virtual, now 2021-09-19 10:35:38 -07:00
Michael Scire
1ac249dd13 kern: support dynamic resource expansion for system heaps/events/sessions. 2021-09-19 10:35:38 -07:00
Michael Scire
5a41163576 kern: improve kdebug attach semantics 2021-09-19 10:35:38 -07:00
Michael Scire
ccdee05857 kern: update KPageTable::Unmap block closing logic 2021-09-19 10:35:38 -07:00
Michael Scire
62655a9e3b kern: optimize logging for release kernel strings (saves printf space in .text) 2021-09-19 10:35:37 -07:00
Michael Scire
22bb619873 kern: add new KMemoryState 2021-09-19 10:35:37 -07:00
Michael Scire
010fb5986e kern: KWorkerTaskManager no longer tracks id 2021-09-19 10:35:37 -07:00
Michael Scire
2913096bc4 kern: kill the interrupt task manager thread 2021-09-19 10:35:36 -07:00
Michael Scire
ccbca5fb57 kern: remove per-KInterruptEventTask locks 2021-09-19 10:35:36 -07:00
Michael Scire
2361bee5fe kern: delete KWritableEvent, devirtualize KReadableEvent Signal/Clear 2021-09-19 10:35:36 -07:00
Michael Scire
cbec3828bf kern: KConditionVariable arbiter functions now static 2021-09-19 10:35:36 -07:00
Michael Scire
94fa7524ff kern: KAutoObject doesn't need (virtual) destructor 2021-09-19 10:35:35 -07:00
Michael Scire
8939693d33 kern: optimize handle table layout 2021-09-19 10:35:35 -07:00
Michael Scire
e9a80d95e7 kern: optimize hw-single-step management 2021-09-19 10:35:29 -07:00
Michael Scire
33d58424c7 kern: add hardware single step extension 2021-09-19 10:35:28 -07:00
Michael Scire
525254b32b kern: update initial cache management to match latest kernel 2021-08-20 13:33:58 -07:00
Michael Scire
2a98931260 kern: fix handling of is_aligned parameter in DevicePageTable 2021-07-06 07:28:32 -07:00
Michael Scire
765c854768 kern: implement improved [new page tables are zero] invariant 2021-07-06 07:28:30 -07:00
Michael Scire
5785447252 kern: ensure InitArguments do not cross page boundaries 2021-07-06 07:28:29 -07:00
Michael Scire
d8e35f2277 exo/meso: update for gcc 11 compatibility 2021-04-29 03:04:54 -07:00
Michael Scire
c34109718f kern: fix initial process binary load on 2.0.0-4.1.0 (closes #1460) 2021-04-29 03:04:54 -07:00
Michael Scire
2ccba9adbb util: implement red black trees as templates over macros 2021-04-29 03:04:53 -07:00
Michael Scire
049c56f75a kern: fix constant evaluation correctness, codegen tweak 2021-04-29 03:04:53 -07:00
Michael Scire
71e8931b89 kern: tweak KHandleTable codegen 2021-04-29 03:04:52 -07:00
Michael Scire
c8ca3ecccd kern: tweak KAutoObject::Open/Close codegen 2021-04-29 03:04:52 -07:00
Michael Scire
53693dfb17 kern: add names/links to kern_assembly_offsets.h 2021-04-29 03:04:52 -07:00
Michael Scire
e238fa426d kern: mostly kill magic numbers in assembly, fix SVCs >= 0x80 2021-04-29 03:04:51 -07:00
Michael Scire
f863ad0a32 kern: mesosphere now implements kernel/sdk 12.3 2021-04-11 03:59:20 -07:00
Michael Scire
e9d44eb71a kern: fuck the KPolice^H^H^H^H^H^HPageGroups 2021-04-11 03:59:20 -07:00
Michael Scire
44621eeb57 kern: who needs __purecall? 2021-04-11 03:59:19 -07:00
Michael Scire
0162133f1e kern: update pinning semantics for terminating threads 2021-04-11 03:59:19 -07:00
Michael Scire
863008ab54 kern: ensure handle table is finalized when deferring termination 2021-04-11 03:59:19 -07:00
Michael Scire
b1b8944ccd kern: update port/session state semantics 2021-04-11 03:59:17 -07:00
Michael Scire
94dce392ff kern: update KLightConditionVariable 2021-04-11 03:59:17 -07:00
Michael Scire
f9cd04c7c4 kern: optimize KHandleTable to use indices instead of pointers 2021-04-11 03:59:17 -07:00
Michael Scire
7c35303c62 kern: KAutoObject destruction is now scheduled for next dpc-time 2021-04-11 03:59:16 -07:00
Michael Scire
13ddcae970 kern: update for new slab resource counts/extents 2021-04-11 03:59:16 -07:00
Michael Scire
cf19a7b64d kern: load initial process binary from user pool, rather than from pt heap 2021-04-11 03:59:15 -07:00
Michael Scire
3ebf91304e kern: update Initialize0 for new changes 2021-04-11 03:59:15 -07:00
Michael Scire
50ce41adf2 kern: use KScopedLightLockPair helper for page table pair-locks 2021-04-11 03:59:12 -07:00
Michael Scire
43900d4765 kern: track mapped ipc server memory in page table 2021-04-11 03:59:12 -07:00
Michael Scire
8df6062a1d kern: add KPageTableBase::Read/WriteDebugIoMemory 2021-04-11 03:59:12 -07:00
Michael Scire
6eda131ab6 kern: update KMemoryBlockManagerUpdaterAllocator for new ctor/init semantics 2021-04-11 03:59:11 -07:00
Michael Scire
e2f21cbd84 kern: swap tpidr_el1/cntv_cval_el0 as scratch vs exception stack 2021-04-11 03:59:11 -07:00
Michael Scire
c39bce4620 kern: support immortal processes 2021-04-11 03:59:10 -07:00
Michael Scire
ec7e3fb07f kern: update process/thread for new running/termination semantics 2021-04-11 03:59:10 -07:00
Michael Scire
be127dfc4b kern: update KInterruptEvent to store core id 2021-04-11 03:59:09 -07:00
Michael Scire
f11f6ec313 kern: update pinned thread priority rules 2021-04-11 03:59:09 -07:00
Michael Scire
d44aa9cb5d kern: update KInitialPageTable/KInitialPageAllocator 2021-04-11 03:59:08 -07:00
Michael Scire
e597eb5411 kern: KLinkedList no longer exists 2021-04-11 03:59:08 -07:00
Michael Scire
af72072313 kern: bump svc limit to 192 from 128 2021-04-11 03:59:07 -07:00
Michael Scire
9b47aa6e08 ams: prefer construct_at/destroy_at over placement new/explicit destructor 2021-04-11 03:59:04 -07:00
Michael Scire
1861791c1c ams: remove TYPED_STORAGE() macro in favor of template 2021-04-11 03:59:03 -07:00
Michael Scire
832f0f441d kern: fix support for virtual core IDs 2021-02-15 19:51:57 -08:00
Michael Scire
b3eef9315b kern: further codegen tweaks 2021-01-13 10:41:27 -08:00
Michael Scire
ca5e69f16d kern: greatly improve codegen for atomics, scheduler 2021-01-13 10:41:26 -08:00
Michael Scire
d247e742b8 kern: remove target-firmware logic for kernel loader 2020-12-29 13:07:57 -08:00
Michael Scire
bb30453d43 kern: fix KTrace buffer memory region type to match official kernel 2020-12-28 17:34:07 -08:00
Michael Scire
4ddacf3384 kern: refactor to use m_ for member variables 2020-12-19 10:21:52 -08:00
Michael Scire
a73cdcad21 kern: fix generic KDevicePageTable 2020-12-19 10:21:51 -08:00
Michael Scire
84ca5c4aab kern: fix LegacyNFiq interrupt ID 2020-12-19 10:21:50 -08:00
Michael Scire
c9933de735 kern: fix linear region printing output 2020-12-19 10:21:50 -08:00
Michael Scire
cdbf881e99 kern: implement process cpu utilization debug 2020-12-19 10:21:47 -08:00
Michael Scire
02453fc15f kern: add page table contents debug 2020-12-19 10:21:46 -08:00
Michael Scire
e80707f2df kern: update for 11.0.1 2020-12-11 03:49:02 -08:00
Michael Scire
eb621c6aae kern: implement memory debug 2020-12-11 03:49:02 -08:00
Michael Scire
7519d17941 kern: add kernel object debug 2020-12-11 03:49:01 -08:00
Michael Scire
4c0b780017 kern: implement port debug 2020-12-11 03:49:01 -08:00
Michael Scire
f3882fa0f7 kern: add handle table/process/suspend/resume debug 2020-12-11 03:49:01 -08:00
Michael Scire
9784530bcf kern: implement thread call stack debug 2020-12-11 03:49:00 -08:00
Michael Scire
a7b7dd1257 kern: add debug thread dump 2020-12-11 03:49:00 -08:00
Michael Scire
3355f97275 exo/meso/fusee: support dynamic control of log port/baud rate 2020-12-11 03:48:58 -08:00
Michael Scire
45c1b044d3 kern: tweak KScopedAutoObject 2020-12-02 06:53:23 -08:00
Michael Scire
7901f15d20 kern: allow non-inline GetObjectForIpc 2020-12-02 06:53:23 -08:00
Michael Scire
8cac1203be kern: fix KHandleTable null deref in ipc 2020-12-02 06:53:22 -08:00
Michael Scire
b53ee81bab kern: session mapping getters are on the hotpath 2020-12-02 06:53:22 -08:00
Michael Scire
9d51004a9b kern: fix bugs caused by UB + transition to -Os 2020-12-02 06:53:19 -08:00
Michael Scire
ca24d0ed9f kern: allow non-inline KSchedulerLock::Lock 2020-12-02 06:53:19 -08:00
Michael Scire
a911d2da7e kern: build as -Os instead of -O2 2020-12-02 06:53:18 -08:00
Michael Scire
b5eb0bb978 kern: assume that uart has been setup by secmon 2020-12-02 06:53:18 -08:00
Michael Scire
a15f3ba468 kern: update Initialize0 to account for new ordering 2020-12-02 06:53:17 -08:00
Michael Scire
0eb6e0a963 kern: add new overflow checks on KMemoryRegions 2020-12-02 06:53:17 -08:00
Michael Scire
2db30d4d46 kern: improve KMemoryManager pool detection 2020-12-02 06:53:17 -08:00
Michael Scire
0b36215bfa kern: update KMemoryRegion to store last address rather than size 2020-12-02 06:53:16 -08:00
Michael Scire
2d1ebf4406 kern: add KAlpha/KBeta 2020-12-02 06:53:16 -08:00
Michael Scire
02bea1a3f2 kern: remove now unused SetupFor*Compare funcs 2020-12-02 06:53:16 -08:00
Michael Scire
c24ba715b4 KConditionVariable/KAddressArbiter: no need for global compare thread 2020-12-02 06:53:15 -08:00
Michael Scire
e4774a2685 kern: implement 64-virtual-core interface 2020-12-02 06:53:15 -08:00
Michael Scire
a57c7f7a48 kern: cleanup KThread, optimize/normalize KThreadQueue/KWaitObject 2020-12-02 06:53:14 -08:00
Michael Scire
a01f7ab1c9 kern: improve KSynchronizationObject, kill KSynchronization 2020-12-02 06:53:14 -08:00
Michael Scire
1806dc45ee kern: update for new interrupt event locking scheme 2020-12-02 06:53:13 -08:00
Michael Scire
1582110af7 kern: KObjectContainer::Register -> void 2020-12-02 06:53:12 -08:00
Michael Scire
0c73792282 kern: Kill KCoreLocalRegion 2020-12-02 06:53:12 -08:00
Michael Scire
43a0706e96 kern: remove more of clc 2020-12-02 06:53:12 -08:00
Michael Scire
7b9b9b7a7a kern: move scheduler/interrupt task manager out of core local region 2020-12-02 06:53:12 -08:00
Michael Scire
f36d24e1ed kern: update KHardwareTimer, move out of KCoreLocalRegion 2020-12-02 06:53:11 -08:00
Michael Scire
8ec3f47a80 kern: use single interrupt manager object 2020-12-02 06:53:11 -08:00
Michael Scire
d0b05d0e4e kern: fix re-order/assert in KMemoryBlock 2020-12-02 06:53:10 -08:00
Michael Scire
f8999a2318 kern: remove KPageTableBase::MakeAndOpenContiguousPageGroup 2020-12-02 06:53:10 -08:00
Michael Scire
397d317a6c kern: implement DisableDeviceAddressSpaceMerge 2020-12-02 06:53:10 -08:00
Michael Scire
0063ede635 kern: SvcGetResourceLimitPeakValue 2020-12-02 06:53:10 -08:00
Michael Scire
396dc066e9 kern: KMemoryManager::Allocate -> AllocateAndOpen 2020-12-02 06:53:09 -08:00
Michael Scire
1260d85bb9 kern: implement kmemoryblock/kmemoryinfo merge disable 2020-12-02 06:53:09 -08:00
Michael Scire
dd799d3909 kern: remove KMemoryAttribute_AnyLocked 2020-12-02 06:53:09 -08:00
Michael Scire
f152b16639 kern: update KMemoryBlockManagerUpdateAllocator api 2020-12-02 06:53:09 -08:00
Michael Scire
5f885a3b22 kern: implement new software-reserved page table bits 2020-12-02 06:53:08 -08:00
Michael Scire
394112f9ac kern: update KPageTableBase for new disable-merge attrs 2020-12-02 06:53:08 -08:00
Michael Scire
0f3085b8f6 kern: perform rescheduling on dispatch re-enable (closes #1169) 2020-10-26 16:03:08 -07:00
Michael Scire
0b7648e7fc kern: default to release config 2020-09-17 08:34:22 -07:00
Michael Scire
ba45f73e40 kern: generate fatal error on panic 2020-09-17 08:34:22 -07:00
Michael Scire
b4dbd97381 kern: skeleton legacy lps driver 2020-09-07 10:51:51 -07:00
Michael Scire
22f2946671 kern: begin 1.0.0 backwards compat changes (kips run, full boot fails) 2020-09-07 10:51:50 -07:00
Michael Scire
1aedaa0f91 kern: support 2-pool layout on 2.x-4.x instead of modern 4-pool layout 2020-09-07 10:51:50 -07:00
Michael Scire
6cf1e0cece kern: change terminology metadata -> management 2020-09-07 10:51:50 -07:00
Michael Scire
0c246b88bd kern: pool management should be within carveout 2020-09-07 10:51:49 -07:00
Michael Scire
d61f1ddef7 kern: fix phys/virt pool management mixup 2020-09-07 10:51:49 -07:00
Michael Scire
00a43ac776 kern: revamp KMemoryRegionType to better encode derivation hierarchies 2020-09-07 10:51:49 -07:00
Michael Scire
ae14cf51b5 kern: PMC must be user-mappable for 1.0.0 compat 2020-09-07 10:51:48 -07:00
Michael Scire
ec6535bd4b kern: fix warn-errors 2020-09-07 10:51:47 -07:00
Michael Scire
8b88149742 kern: fix KTypedAddress, strengthen assertions 2020-09-07 10:51:46 -07:00
Michael Scire
658b92e17a kern: add version bounds checking 2020-09-07 10:51:45 -07:00
Michael Scire
576892ff32 kern: avoid hardcoding maximum board memory size 2020-09-07 10:51:45 -07:00
Michael Scire
5bc3307ffa kern: improve resource region size definitions/calculations 2020-09-07 10:51:45 -07:00
fincs
e1876a293f kern: add stubbed KDevicePageTable implementation for systems without iommu 2020-09-07 10:51:42 -07:00
fincs
ec558b3828 kern: make GetTargetFirmware a compile-time constant when not building for Switch 2020-09-07 10:51:42 -07:00
Michael Scire
78161021f4 kern: use common GIC implementation for arm/arm64 2020-09-07 10:51:41 -07:00
Michael Scire
4a50b00cab kern: correct flushing of init arguments 2020-09-07 10:51:41 -07:00
Michael Scire
888f5cdd20 kern: fix multicore instruction cache invalidation 2020-09-07 10:51:40 -07:00
Michael Scire
d2dd922f47 kern: add tracing for irq/scheduling 2020-09-07 10:51:39 -07:00
Michael Scire
b876337ffd kern: cleanup some KMemoryManager functions 2020-09-07 10:51:39 -07:00
Michael Scire
f0b455de83 kern: refactor KMemoryLayout 2020-09-07 10:51:39 -07:00
Michael Scire
3d800b407e kern: mark KThread/KProcess.GetId() final to save virtual calls 2020-09-07 10:51:38 -07:00
Michael Scire
6f177e3e84 kern: fix missing scheduler updates in KLightLock/Exception, fix RequestScheduleOnInterrupt 2020-09-07 10:51:38 -07:00
Michael Scire
4a91046154 kern: implement svc trace 2020-09-07 10:51:37 -07:00
Michael Scire
db93ab974d kern: SvcChangeKernelTraceState 2020-09-07 10:51:37 -07:00
Michael Scire
dc59a2d2e5 kern: build with -Wextra 2020-09-07 10:51:36 -07:00
Michael Scire
9f7bc49438 ams: avoid UB infinite loops 2020-08-14 17:36:37 -07:00
Michael Scire
227b9603cd kern: SvcReturnFromException 2020-08-01 15:31:46 -07:00
Michael Scire
f80eb2c26f kern SvcGetDebugThreadContext, SvcSetDebugThreadContext 2020-08-01 15:31:45 -07:00
Michael Scire
ff9d3ee1d6 kern: SvcGetDebugThreadParam 2020-08-01 15:31:45 -07:00
Michael Scire
bb044b1934 kern: clean up majority of TODOs 2020-08-01 15:31:44 -07:00
Michael Scire
1c733577b4 kern: SvcGetDebugEventInfo64From32 2020-08-01 15:31:44 -07:00
Michael Scire
c7f108082b kern: resolve MESOSPHERE_UNIMPLEMENTEDs other than UserException 2020-08-01 15:31:44 -07:00
Michael Scire
3d5f2b7258 kern: Add real SvcBreak implementation 2020-08-01 15:31:43 -07:00
Michael Scire
b576737418 kern: SvcBreakDebugProcess, SvcTerminateDebugProcess 2020-08-01 15:31:43 -07:00
Michael Scire
179427687b kern: SvcSetHardwareBreakPoint 2020-08-01 15:31:43 -07:00