Commit Graph

199 Commits

Author SHA1 Message Date
Michael Scire
2409222dd0 kern: be a little more consistent about pragma GCC location 2021-11-30 16:34:45 -08:00
Michael Scire
17ceca9140 kern: fix minor assembly bugs, avoid unnecessary function call in KScheduler hotloop 2021-10-29 17:47:13 -07:00
Michael Scire
e5756ca0b0 kern: fix 32-bit light ipc svc handler asm
Nintendo used to do what we were doing because the function wasn't directly in the handler table,
but we've always been directly in the handler table, so we were trashing the last four arguments to light ipc
when called from aarch32. Nothing uses this, but needed to be fixed.
2021-10-29 17:47:13 -07:00
Michael Scire
cb7f4e7757 kern: optimize and bring into line with N our pstate.i management 2021-10-27 22:57:18 -07:00
Michael Scire
610e99b277 kern: audit (and fix) our hardware maintenance instructions to match official kernel 2021-10-27 22:57:18 -07:00
Michael Scire
695a99183b kern: other dmbs in kernel were already dmb ish 2021-10-26 01:11:19 -07:00
Michael Scire
5f0eb19a41 kernel_ldr: bring initial cache flush in line with Nintendo 2021-10-26 01:11:16 -07:00
Michael Scire
89f01cb068 kern: KCacheHelper: better reflect nintendo coremask clearing logic 2021-10-26 01:11:14 -07:00
SciresM
823c0df6b9 kern: avoid constexpr init for many objects (avoids unnecessary memory clear) (#1668) 2021-10-26 01:11:13 -07:00
Michael Scire
0d1ec0739f util: better match true std::atomic semantics 2021-10-26 01:11:13 -07:00
Michael Scire
d3b358bbb9 kern/util: use custom atomics wrapper to substantially improve codegen 2021-10-26 01:11:12 -07:00
Michael Scire
2827f6300e kern: fix use of plr vs plr_heap, fix close/unlock order in ArbitrateLock 2021-10-26 01:11:11 -07:00
Michael Scire
960c5c19f9 ams: improve offsetof style consistency 2021-10-26 01:11:10 -07:00
Michael Scire
002422d5dc ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-07 23:06:25 -07:00
Michael Scire
204b389252 kern: devirtualize page table operations 2021-09-24 09:17:11 -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
0a262ed268 kern: improve single-step around user-exception entry 2021-09-19 10:35:29 -07:00
Michael Scire
2b91674b42 kern: fix spsr register in RestoreContext 2021-09-19 10:35:29 -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
42ef588bf4 kern: improve some debug output 2021-08-20 13:34:02 -07:00
Michael Scire
68e98575be kern: fix hardware watchpoint detection 2021-08-20 13:34:00 -07:00
Michael Scire
5bad58cb8f kern: fix inverted condition in context breakpoint validation 2021-08-20 13:34:00 -07:00
Michael Scire
4f66af77b0 kern: since 10.0.0, KDebug::GetThreadContext always returns X0-X7 2021-08-20 13:33:59 -07:00
Michael Scire
525254b32b kern: update initial cache management to match latest kernel 2021-08-20 13:33:58 -07:00
Michael Scire
765c854768 kern: implement improved [new page tables are zero] invariant 2021-07-06 07:28:30 -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
0162133f1e kern: update pinning semantics for terminating threads 2021-04-11 03:59:19 -07:00
Michael Scire
3ebf91304e kern: update Initialize0 for new changes 2021-04-11 03:59:15 -07:00
Michael Scire
438fc774ba kern: trivially optimize userspace io memory write 2021-04-11 03:59:14 -07:00
Michael Scire
324ec34f5c kern: update set/way cache operations for new semantics 2021-04-11 03:59:13 -07:00
Michael Scire
43900d4765 kern: track mapped ipc server memory in page table 2021-04-11 03:59:12 -07:00
Michael Scire
be127dfc4b kern: update KInterruptEvent to store core id 2021-04-11 03:59:09 -07:00
Michael Scire
af72072313 kern: bump svc limit to 192 from 128 2021-04-11 03:59:07 -07:00
Michael Scire
ca5e69f16d kern: greatly improve codegen for atomics, scheduler 2021-01-13 10:41:26 -08:00
Michael Scire
4ddacf3384 kern: refactor to use m_ for member variables 2020-12-19 10:21:52 -08:00
Michael Scire
02453fc15f kern: add page table contents debug 2020-12-19 10:21:46 -08:00
Michael Scire
59b4e75021 kern: cfi fix pt 2 2020-12-11 05:02:36 -08:00
Michael Scire
da89824925 kern: fix cfi (requires x18 not cleared on return to userland) 2020-12-11 05:02:35 -08:00
Michael Scire
7519d17941 kern: add kernel object 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
98c80d487b meso: properly initialize per-thread CFI-value for 11.x 2020-12-11 03:48:59 -08:00
Michael Scire
9586142e90 kern: tweak optimization settings for hot paths 2020-12-02 06:53:22 -08:00
Michael Scire
a57c7f7a48 kern: cleanup KThread, optimize/normalize KThreadQueue/KWaitObject 2020-12-02 06:53:14 -08:00
Michael Scire
b0c96b3bb6 kern: fix race-crash on interrupt controller save, improve fatal output 2020-12-02 06:53:13 -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
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
843e2b08fe kern: fix unnecessary align-down 2020-12-02 06:53:11 -08:00
Michael Scire
c21e43f7e1 kern: fix error in SeparatePages 2020-12-02 06:53:11 -08:00
Michael Scire
397d317a6c kern: implement DisableDeviceAddressSpaceMerge 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
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
ba45f73e40 kern: generate fatal error on panic 2020-09-17 08:34:22 -07:00
Michael Scire
00a43ac776 kern: revamp KMemoryRegionType to better encode derivation hierarchies 2020-09-07 10:51:49 -07:00
Michael Scire
78161021f4 kern: use common GIC implementation for arm/arm64 2020-09-07 10:51:41 -07:00
Michael Scire
d7e420c895 kern: SvcLegacyGetFutureThreadInfo 2020-09-07 10:51:40 -07:00
Michael Scire
4cafc6acb9 kern: rename CacheHelper operation for accuracy 2020-09-07 10:51:40 -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
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
dc59a2d2e5 kern: build with -Wextra 2020-09-07 10:51:36 -07:00
Michael Scire
b5c915a6f2 kern: complete final SVC stubs (KernelDebug/Trace debug-impl still TODO) 2020-08-01 15:31:46 -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
bb044b1934 kern: clean up majority of TODOs 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
179427687b kern: SvcSetHardwareBreakPoint 2020-08-01 15:31:43 -07:00
Michael Scire
a0de667005 kern: SvcGetLastThreadInfo, SvcGetDebugFutureThreadInfo 2020-08-01 15:31:41 -07:00
Michael Scire
641e92e6a0 kern: SvcFlushDataCache, SvcFlushEntireDataCache 2020-08-01 15:31:41 -07:00
Michael Scire
ef6ede3aeb kern: SvcReadDebugProcessMemory, SvcWriteDebugProcessMemory 2020-08-01 15:31:40 -07:00
Michael Scire
8019804c7f kern: automatic PC alignment on ERET is implementation defined 2020-08-01 15:31:39 -07:00
Michael Scire
85932bb91e kern: fix ARM vs THUMB mode selection on 32-bit entry 2020-08-01 15:31:38 -07:00
Michael Scire
e8021705d8 kern: SendSyncRequestLight, ReplyAndReceiveLight 2020-08-01 15:31:37 -07:00
Michael Scire
c64e490663 kern: implement SvcGetThreadContext3 2020-08-01 15:31:35 -07:00
Michael Scire
2cee81697c kern: correct behavior when setting activity/core mask for pinned thread 2020-08-01 15:31:35 -07:00
Michael Scire
be1314cb88 kern: implement thread pinning/SvcSynchronizePreemptionState 2020-08-01 15:31:34 -07:00
Michael Scire
b98450c9cf kern: Map L1/L2 blocks when possible 2020-08-01 15:31:34 -07:00
Michael Scire
52e5e0866a kern: fix bug in page table mapping calculations 2020-08-01 15:31:33 -07:00
Michael Scire
a56e8ca4b0 kern: General system stability improvements to enhance the user's experience. 2020-08-01 15:31:32 -07:00
Michael Scire
c624611487 kern: update interrupt manager 2020-08-01 15:31:32 -07:00
Michael Scire
10415aefee kern: SvcUnmapPhysicalMemory, cleanup thread pinning 2020-08-01 15:31:31 -07:00
Michael Scire
dc8fccd168 kern: implement SvcMapPhysicalMemory 2020-08-01 15:31:31 -07:00
Michael Scire
a22d1d04f2 kern: implement SvcSleepSystem 2020-08-01 15:31:30 -07:00
Michael Scire
670824fa0a kern: implement process exit 2020-08-01 15:31:27 -07:00
Michael Scire
0013041509 kern: KConditionVariable::SignalImpl 2020-08-01 15:31:26 -07:00
Michael Scire
69274df795 kern: dump page table on user exception 2020-08-01 15:31:23 -07:00
Michael Scire
767a3fca3a kern: fix incorrect cache routines, implement SvcSetProcessMemoryPermission 2020-08-01 15:31:22 -07:00
Michael Scire
29a3bafb6f kern: fix kscheduler interrupt api, adjust debug logging 2020-08-01 15:31:20 -07:00
Michael Scire
a22c0a84dd kern: implement SvcSignalToAddress, SvcWaitForAddress 2020-08-01 15:31:19 -07:00