Commit Graph

553 Commits

Author SHA1 Message Date
Michael Scire
e4825cc879 kern: Implement new PageTable operations/PhysicalMemory reference semantics 2022-10-12 09:15:49 -07:00
Michael Scire
cfe81a7eb3 kern: update for new device map semantics 2022-10-12 09:15:49 -07:00
Michael Scire
4c74021035 kern: merge/simplify KInterruptEventTask into KInterruptEvent 2022-10-12 09:15:48 -07:00
Michael Scire
8ca94db643 kern: implement K(Secure)SystemResource 2022-10-12 09:15:48 -07:00
Michael Scire
dcf2d7ff9b kern: optimize postfix-compare to prefix-compare, result logic is identical but breaks earlier in some paths 2022-10-12 09:15:39 -07:00
Michael Scire
35e1208092 kern: mea culpa (some time since 7.x) 2022-10-12 09:15:39 -07:00
Michael Scire
8022175f5f kern: implement revised IPI/SGI semantics 2022-03-23 09:16:07 -07:00
Michael Scire
d066ac3d69 kern: update for new hw maintenance semantics 2022-03-23 09:16:06 -07:00
Michael Scire
f38d589516 kern: implement new thread context/fpu semantics 2022-03-23 09:16:06 -07:00
Michael Scire
52e51c0634 kern: implement additional randomness in KPageHeap allocations 2022-03-23 09:16:05 -07:00
Michael Scire
692742b434 kern: enforce end of dram == end of partitions (move our probably outdated KTraceBuffer to new location) 2022-03-23 09:16:04 -07:00
Michael Scire
3be59053ca kern: add new KCapability checks before creating process 2022-03-23 09:16:04 -07:00
Michael Scire
a3b74aece9 kern: add InfoType_IsSvcPermitted 2022-03-23 09:16:04 -07:00
Michael Scire
8bbfe8d277 kern: enforce maximum secure region size 2022-03-23 09:16:04 -07:00
Michael Scire
11cedaf353 kern: print kernel backtrace on panic 2022-03-23 09:16:03 -07:00
Michael Scire
ab25a959f2 pm/kern: update for 14.0.0 2022-03-23 09:15:57 -07:00
merry
a2e891d5e8 KThreadContext: Use El0PsrMask constant in GetUserContext 2022-03-23 09:15:46 -07:00
SciresM
00203fd7c3 Integrate new result macros. (#1780)
* result: try out some experimental shenanigans

* result: sketch out some more shenanigans

* result: see what it looks like to convert kernel to use result conds instead of guards

* make rest of kernel use experimental new macro-ing
2022-03-23 09:15:40 -07:00
Michael Scire
ee45932d52 kern: add missing debug mode check to WriteDebugProcessMemory 2022-01-19 16:28:54 -08:00
Michael Scire
9436b9a555 ams: deduplicate static initialization logic 2022-01-19 16:28:54 -08:00
Michael Scire
a1b462adda kern: fix vi devicename missing in HsSupported device list 2022-01-19 16:28:54 -08:00
Michael Scire
1271ae28e1 kern: correct TotalUserPhysicalMemorySize (closes #1710) 2021-11-30 16:34:45 -08:00
Michael Scire
2409222dd0 kern: be a little more consistent about pragma GCC location 2021-11-30 16:34:45 -08:00
Léo Lam
2916512fb7 Minor header fixes to reduce parsing issues with Clang (#1700)
* Work around Clang's incomplete C++20 support for omitting typename

* vapours: fix Clang error about missing return in constexpr function

* stratosphere: fix call to non-constexpr strlen in constexpr function

strlen being constexpr is a non-compliant GCC extension; Clang
explicitly rejects it: https://reviews.llvm.org/D23692

* stratosphere: add a bunch of missing override specifiers

* stratosphere: work around Clang consteval bug

Minimal example: https://godbolt.org/z/MoM64v93M

The issue seems to be that Clang does not consider f(x) to be a
constant expression if x comes from a template argument that isn't
a non-type auto template argument (???)

We can work around this by relaxing GetMessageHeaderForCheck (by using
constexpr instead of consteval). This produces no functional changes
because the result of GetMessageHeaderForCheck() is assigned to a
constexpr variable, so the result is guaranteed to be computed
at compile-time.

* stratosphere: fix missing require clauses in definitions

GCC not requiring the require clauses to be repeated for member
definitions is actually a compiler bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96830

Clang rejects declarations with missing require clauses.

* Fix ALWAYS_INLINE_LAMBDA and parameter list relative order

While GCC doesn't seem to care about the position of the always_inline
attribute relative to the parameter list, Clang is very picky
and requires the attribute to appear after the parameter list
(and before a trailing return type)

* stratosphere: fix static constexpr member variable with incomplete type

GCC accepts this for some reason (because of the lambda?) but Clang
correctly rejects this.
2021-11-30 16:34:43 -08:00
Michael Scire
24101aaa86 KScheduler big brain strat for mdscr_el1 cfg change 2021-11-30 16:34:43 -08:00
Michael Scire
54783b86f1 dmnt2: detect thread name, add monitor get mapping(s), increase buffer sizes 2021-11-03 23:59:55 -07:00
Michael Scire
1c7ae0d066 kern/dmnt2: allow retrieval of process info via extension
This also fixes ctrl-c break in gdbstub, and fixes crash on unknown monitor cmd.
2021-11-03 23:59:54 -07: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
3304c91dae kern: add (and use) generic KSystemControlBase 2021-10-26 01:11:18 -07:00
Michael Scire
de5b6169d6 kern: add toggleable support for 40-bit physaddr caps 2021-10-26 01:11:17 -07:00
Michael Scire
194e58a3e3 kern/test: add wip qemu-virt board support to mesosphere 2021-10-26 01:11:16 -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
38a4dadd9e kern: reflect nintendo cache management behavior for initial processes 2021-10-26 01:11:16 -07:00
Michael Scire
1713d12946 kern: devirtualize KReadableEvent::Reset, KWorkerTask::DoWorkerTask 2021-10-26 01:11:15 -07:00
Michael Scire
62bdae5b3f kern: devirtualize most things that are free to devirtualize (see #1672) 2021-10-26 01:11:15 -07:00
Michael Scire
6dbdfa0384 kern: use optimized red black tree finds for remaining holdouts 2021-10-26 01:11:14 -07:00
Michael Scire
7749ecabc4 kern: devirtualize several KAutoObject functions 2021-10-26 01:11:14 -07:00
Michael Scire
89f01cb068 kern: KCacheHelper: better reflect nintendo coremask clearing logic 2021-10-26 01:11:14 -07:00
Michael Scire
d3ad53a525 kern: devirtualize remaining vcall for class token/dyncast 2021-10-26 01:11:13 -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
00353a05e9 kern: use new AtomicRef, use Atomic<bool> 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
6f9d5ecd0d kern: use 13.0.0 revised KLightLock logic 2021-10-26 01:11:12 -07:00
Michael Scire
c77900d598 kern: fix capability check for thread priorities 2021-10-26 01:11:12 -07:00
Michael Scire
573769303b kern: update scheduler for 13.0.0 change, fix some ctz/clz bugs 2021-10-26 01:11:11 -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
f8d59254cf kern: devirtualize KAutoObject::DynamicCast<>()
This is an optimization that saves the most common type of virtual call in the kernel (DynamicCast)
by storing class token as a member, rather than getting it via virtual call every time.

This does not currently cost any memory space on 64-bit targets, due to pre-existing padding space.

This optimization can be turned off via a compile-time flag for accuracy.
2021-10-26 01:11:09 -07:00
Michael Scire
05c7ba6439 kern/util: update structure layouts to match Nintendo (saves 0x10 per KThread/KSession) 2021-10-26 01:11:09 -07:00
Michael Scire
65e89cf1b8 kern: fix some lingering non-m_ member variables 2021-10-15 23:54:35 -07:00
Michael Scire
3b5f56ab9f ams: replace most remaining operator & with std::addressof 2021-10-15 23:54:34 -07:00
Michael Scire
5c32ec11ea strat: refactor address taking of form &var[...] 2021-10-15 23:54:34 -07:00
Michael Scire
390ce66da1 svc: refactor/rename MemoryInfo fields 2021-10-07 23:06:28 -07:00
Michael Scire
782e449543 strat: remove map namespace, svc: add address space defs 2021-10-07 23:06:27 -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
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
99e78d285b kern: KSchedulerInterruptTask -> KSchedulerInterruptHandler 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
8939693d33 kern: optimize handle table layout 2021-09-19 10:35:35 -07:00
Michael Scire
b4c67d9c3b kern: update GetInfo logic for tick count InfoTypes 2021-09-19 10:35:35 -07:00
Michael Scire
b375041d9a kern: port limit is now 0x180 2021-09-19 10:35:35 -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
d81e2f981e kern: fix same is_current check in GetThreadContext 2021-08-20 13:34:02 -07:00
Michael Scire
4e0670485b kern: fix check for thread-is-current in KDebugBase::SetThreadContext 2021-08-20 13:34:01 -07:00
Michael Scire
d264381030 kern: remove firmare-specific SignalAndModify impl
Nintendo made this breaking change because there was zero official software relying on it,
so it's safe for us to make the same change.
2021-08-20 13:34:01 -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
1b378d8eb1 exo/daybreak: advertise (and check against) supported hos version 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
619fe0f222 kern: fix incorrect waiter management in KProcess::ReleaseUserException 2021-08-20 13:33:59 -07:00
Michael Scire
d32d5bef8c kern: fix bug in KConditionVariable::SignalImpl 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
3db4dbc181 kern: add missing abort on unmap failure 2021-07-12 01:59:51 -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
af4eb57268 kern: fix missing peak set in KResourceLimit::SetLimitValue 2021-07-06 07:28:29 -07:00
Michael Scire
54618ff03a kern: fix enormous whoops 2021-06-08 08:09:22 -07:00