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
3852d02696
kern: enable lto for global instants (saves about a page in deduplicated code)
2021-10-26 01:11:15 -07:00
Michael Scire
5217e6b9f3
kern: devirtualize KAutoObjectWithList::GetId()
2021-10-26 01:11:15 -07:00
Michael Scire
4aefb1163c
kern: fix reorder-init in KHandleTable
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
d9d6d52575
kern: remove spurious assertion
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
e9c82af25f
kern: remove need for explicit reserved member in KAutoObject
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
f6c9839eae
kern: tidy up capability calc
2021-10-15 23:54:32 -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
8ecddf498a
kern: use util::BitFlagSet for capability flags
2021-10-07 23:06:18 -07:00
Michael Scire
dbbd04fd2c
kern: fix/update thread permissions on pin
2021-10-07 23:06:18 -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
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
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
e96b24f842
ams-libs: fix change detection for library building
2021-07-12 01:59:51 -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
5785447252
kern: ensure InitArguments do not cross page boundaries
2021-07-06 07:28:29 -07:00
Michael Scire
54618ff03a
kern: fix enormous whoops
2021-06-08 08:09:22 -07:00
Michael Scire
fa17887706
kern: slightly improve genericity of debugger break event
2021-06-08 08:09:22 -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
40f3724891
kern: simplify handle table registration for port/session
2021-04-11 03:59:18 -07:00
Michael Scire
82c67b4c54
kern: update kdebug process management semantics
2021-04-11 03:59:18 -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
400137d06b
kern: reallocate pool distributions for 8GB units
2021-04-11 03:59:16 -07:00
Michael Scire
0357a98972
kern: simplify global rng initialization
2021-04-11 03:59:15 -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
a1abde34a9
kern: update KConditionVariable::WaitForAddress/Wait
2021-04-11 03:59:14 -07:00
Michael Scire
438fc774ba
kern: trivially optimize userspace io memory write
2021-04-11 03:59:14 -07:00
Michael Scire
e4b271b9bc
kern: add bounds checking to KHandleTable::Register/Unreserve
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
2b10401498
kern: if a page table region is zero-size, nothing overlaps it
2021-04-11 03:59:13 -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
a9f81928f7
kern: flush memory before reading in KPageTableBase::ReadDebugMemory
2021-04-11 03:59:11 -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
1328f17fb1
kern: unconditionally set thread state when appropriate
2021-04-11 03:59:10 -07:00
Michael Scire
d31612974a
kern: update kernel waiter management rules
2021-04-11 03:59:09 -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
e40ccfb4ca
kern: add new checks to SetThreadPriority/CoreMask
2021-04-11 03:59:08 -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
f09107ff50
kern: add extension InfoType for retrieving current process handle.
2021-04-11 03:59:01 -07:00
Michael Scire
5daccda627
kern: use fix usage of incorrect page table for UserBuffer ipc
2021-04-11 03:59:00 -07:00
Michael Scire
3888feb3fb
kern: fix inverted conditional in KDebugBase::SetThreadContext
2021-04-11 03:59:00 -07:00
Michael Scire
c766cc8347
kern: Increase reserved system memory, require mesosphere for htc/tma
2021-04-11 03:58:54 -07:00
Michael Scire
e1cc9f25a9
kern: alleviate a little KPort pressure.
2021-04-11 03:58:27 -07:00
Michael Scire
832f0f441d
kern: fix support for virtual core IDs
2021-02-15 19:51:57 -08:00
Michael Scire
a8d1eab91a
meso: update for new fatal encoding
2021-02-02 12:16:29 -08:00
Michael Scire
6166a74c12
kern: fix scheduler update semantics in KLightLock::LockSlowPath
2021-02-02 12:16:27 -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
514756094b
kern: fix svc bounds checking for main memory size 4GB -> 8GB ( closes #1320 )
2021-01-13 10:41:26 -08:00
Michael Scire
b05ba02f04
libmeso: explicitly blacklist ::sdmmc::, instead of relying on incorrect board tricks
2020-12-29 13:07:58 -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
ameerj
e7f5e95d04
fix typo in KServerPort::Destroy()
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
85e817da3e
kern: fix inverted conditional in waiter debug print
2020-12-19 10:21:48 -08:00
Michael Scire
15189e577e
kern: fix some typos/naming semantics
2020-12-19 10:21:47 -08:00
Michael Scire
cdbf881e99
kern: implement process cpu utilization debug
2020-12-19 10:21:47 -08:00
Michael Scire
69333c7fc0
kern: add kernel thread 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