Michael Scire
383fc2cc99
kern: codegen tweaks, now that we're no longer -Os
2022-03-23 09:10:50 -07:00
Michael Scire
cdc619a8a6
kern: on second thought, gcc built ins are for chumps
2022-03-23 09:10:50 -07:00
Michael Scire
ff07ba4201
kern: implement revised IPI/SGI semantics
2022-03-23 09:10:50 -07:00
Michael Scire
9d89835ff8
kern: update for new hw maintenance semantics
2022-03-23 09:10:50 -07:00
Michael Scire
6e17317d5d
kern: implement new thread context/fpu semantics
2022-03-23 09:10:50 -07:00
Michael Scire
401047f603
kern: implement additional randomness in KPageHeap allocations
2022-03-23 09:10:50 -07:00
Michael Scire
24739f245e
kern: enforce end of dram == end of partitions (move our probably outdated KTraceBuffer to new location)
2022-03-23 09:10:50 -07:00
Michael Scire
8cb3cfd835
kern: add new KCapability checks before creating process
2022-03-23 09:10:50 -07:00
Michael Scire
14e768cd10
kern: add InfoType_IsSvcPermitted
2022-03-23 09:10:50 -07:00
Michael Scire
e05df99342
pm/kern: update for 14.0.0
2022-03-23 09:10:50 -07:00
Michael Scire
646f84bad1
abort/error: print backtrace, abuse templates, overhaul result/diag (macos not done yet)
2022-03-21 17:21:44 -07:00
Michael Scire
64a97576d0
ams: support building unit test programs on windows/linux/macos
2022-03-21 17:21:44 -07:00
Michael Scire
4c7fd70c10
kern: fix syntax in audit statement
2022-02-19 13:26:08 -08:00
SciresM
96f95b9f95
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-02-14 14:45:32 -08:00
Michael Scire
30fac905af
ams: deduplicate static initialization logic
2021-12-13 13:07:03 -08:00
Michael Scire
09074798cd
KScheduler big brain strat for mdscr_el1 cfg change
2021-11-05 23:38:43 -07:00
Michael Scire
4cc5e9cdfd
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:56:25 -07:00
Michael Scire
d1f3c4904b
kern: fix minor assembly bugs, avoid unnecessary function call in KScheduler hotloop
2021-10-28 19:16:23 -07:00
Michael Scire
4b7b33809f
kern: optimize and bring into line with N our pstate.i management
2021-10-27 15:00:07 -07:00
Michael Scire
e81a1ce5a8
kern: audit (and fix) our hardware maintenance instructions to match official kernel
2021-10-27 12:31:53 -07:00
Michael Scire
1d5f66be56
kern: implement 13.1.0 kernel changes
2021-10-25 17:34:47 -07:00
Michael Scire
ebca23305e
kern: simplify random bitmap selection to match latest Nintendo logic
2021-10-25 17:31:14 -07:00
Michael Scire
273f4a87ae
kern: add (and use) generic KSystemControlBase
2021-10-25 17:31:14 -07:00
Michael Scire
2a842791eb
kern: add toggleable support for 40-bit physaddr caps
2021-10-25 17:31:14 -07:00
Michael Scire
0a58e803be
kern/test: add wip qemu-virt board support to mesosphere
2021-10-25 17:31:14 -07:00
Michael Scire
54dde406bc
kern: devirtualize KReadableEvent::Reset, KWorkerTask::DoWorkerTask
2021-10-24 20:41:38 -07:00
Michael Scire
fd187f952e
kern: enable lto for global instants (saves about a page in deduplicated code)
2021-10-24 17:06:43 -07:00
Michael Scire
8a661cee6e
kern: devirtualize KAutoObjectWithList::GetId()
2021-10-24 17:00:05 -07:00
Michael Scire
3e4acc62f3
kern: fix reorder-init in KHandleTable
2021-10-24 13:08:08 -07:00
Michael Scire
d0cd511c0e
kern: devirtualize most things that are free to devirtualize (see #1672 )
2021-10-24 13:04:31 -07:00
Michael Scire
89926f44c6
kern: use optimized red black tree finds for remaining holdouts
2021-10-23 21:58:48 -07:00
Michael Scire
436613401a
kern: devirtualize several KAutoObject functions
2021-10-23 21:13:26 -07:00
Michael Scire
71e4313d0c
kern: devirtualize remaining vcall for class token/dyncast
2021-10-23 16:04:04 -07:00
SciresM
36e4914be8
kern: avoid constexpr init for many objects (avoids unnecessary memory clear) ( #1668 )
2021-10-23 15:25:20 -07:00
Michael Scire
20716cb3de
kern: use new AtomicRef, use Atomic<bool>
2021-10-20 13:29:38 -07:00
Michael Scire
aed9d3f535
util: better match true std::atomic semantics
2021-10-20 11:02:17 -07:00
Michael Scire
d74f364107
kern/util: use custom atomics wrapper to substantially improve codegen
2021-10-19 15:24:15 -07:00
Michael Scire
52332e8d75
kern: use 13.0.0 revised KLightLock logic
2021-10-19 02:45:29 -07:00
Michael Scire
d3eb1268bc
kern: remove spurious assertion
2021-10-19 01:21:23 -07:00
Michael Scire
f3b532070b
kern: update scheduler for 13.0.0 change, fix some ctz/clz bugs
2021-10-19 01:20:28 -07:00
Michael Scire
42b6c2dd95
kern: fix use of plr vs plr_heap, fix close/unlock order in ArbitrateLock
2021-10-19 01:19:31 -07:00
Michael Scire
889d843718
ams: improve offsetof style consistency
2021-10-18 00:17:13 -07:00
Michael Scire
96d3187f3e
kern: remove need for explicit reserved member in KAutoObject
2021-10-16 17:17:26 -07:00
Michael Scire
bfffe6b119
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-16 16:24:06 -07:00
Michael Scire
26c02e2019
kern/util: update structure layouts to match Nintendo (saves 0x10 per KThread/KSession)
2021-10-16 16:13:10 -07:00
Michael Scire
179d91a563
kern: fix some lingering non-m_ member variables
2021-10-09 15:46:04 -07:00
Michael Scire
9def4b5925
kern: tidy up capability calc
2021-10-08 12:29:41 -07:00
Michael Scire
4866e80769
svc: refactor/rename MemoryInfo fields
2021-10-05 15:16:54 -07:00
Michael Scire
77fe5cf6f5
ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals
2021-10-04 12:59:10 -07:00
Michael Scire
d00cec38b0
kern: use util::BitFlagSet for capability flags
2021-09-27 11:37:27 -07:00
Michael Scire
98f438e742
kern: fix/update thread permissions on pin
2021-09-26 14:51:54 -07:00
Michael Scire
3fe072a1d0
kern: devirtualize page table operations
2021-09-21 10:09:27 -07:00
Michael Scire
90732ff311
kern: unify all waiting semantics to use single api
2021-09-19 10:34:31 -07:00
Michael Scire
f6fb5f2c8d
kern/svc: implement IoPool/Region svc support
2021-09-19 10:34:31 -07:00
Michael Scire
ce7dd55257
svc/kern/dd: remove MapDeviceAddressSpace()
2021-09-19 10:34:31 -07:00
Michael Scire
481ce12b7b
kern: update Initialize0 for new arguments/randomization semantics
2021-09-19 10:34:31 -07:00
Michael Scire
2f2c36b22b
kern: KMemoryManager/KPageGroup use physical addresses instead of virtual, now
2021-09-19 10:34:31 -07:00
Michael Scire
2c4bd44d7e
kern: support dynamic resource expansion for system heaps/events/sessions.
2021-09-19 10:34:31 -07:00
Michael Scire
2b91956051
kern: improve kdebug attach semantics
2021-09-19 10:34:31 -07:00
Michael Scire
4c73c461f1
kern: update KPageTable::Unmap block closing logic
2021-09-19 10:34:31 -07:00
Michael Scire
8b49cea4a9
kern: optimize logging for release kernel strings (saves printf space in .text)
2021-09-19 10:34:31 -07:00
Michael Scire
fdf008108c
kern: add new KMemoryState
2021-09-19 10:34:31 -07:00
Michael Scire
252486913b
kern: KWorkerTaskManager no longer tracks id
2021-09-19 10:34:31 -07:00
Michael Scire
cb28150912
kern: kill the interrupt task manager thread
2021-09-19 10:34:31 -07:00
Michael Scire
29cc3d1c09
kern: remove per-KInterruptEventTask locks
2021-09-19 10:34:31 -07:00
Michael Scire
e6a6fe6f38
kern: delete KWritableEvent, devirtualize KReadableEvent Signal/Clear
2021-09-19 10:34:31 -07:00
Michael Scire
d80ad222cc
kern: KConditionVariable arbiter functions now static
2021-09-19 10:34:31 -07:00
Michael Scire
572cbd8619
kern: KAutoObject doesn't need (virtual) destructor
2021-09-19 10:34:31 -07:00
Michael Scire
183243bf16
kern: optimize handle table layout
2021-09-19 10:34:31 -07:00
Michael Scire
9e7b56b33c
kern: optimize hw-single-step management
2021-09-11 19:41:47 -07:00
Michael Scire
4075d24e0c
kern: add hardware single step extension
2021-09-11 19:41:47 -07:00
Michael Scire
14d458522d
kern: update initial cache management to match latest kernel
2021-07-12 18:30:01 -07:00
Michael Scire
2088c5a34a
kern: fix handling of is_aligned parameter in DevicePageTable
2021-07-04 10:45:14 -07:00
Michael Scire
4892ffae15
kern: implement improved [new page tables are zero] invariant
2021-06-17 13:03:46 -07:00
Michael Scire
e423aef033
kern: ensure InitArguments do not cross page boundaries
2021-06-17 12:49:25 -07:00
Michael Scire
4f16106702
exo/meso: update for gcc 11 compatibility
2021-04-26 20:06:18 -07:00
Michael Scire
19be54ff95
kern: fix initial process binary load on 2.0.0-4.1.0 ( closes #1460 )
2021-04-21 19:24:41 -07:00
Michael Scire
57b6c71c1c
util: implement red black trees as templates over macros
2021-04-20 16:56:33 -07:00
Michael Scire
0a11d341b7
kern: fix constant evaluation correctness, codegen tweak
2021-04-20 14:25:06 -07:00
Michael Scire
8010290472
kern: tweak KHandleTable codegen
2021-04-19 18:04:02 -07:00
Michael Scire
fbc526d163
kern: tweak KAutoObject::Open/Close codegen
2021-04-19 18:03:27 -07:00
Michael Scire
0a6219e6e0
kern: add names/links to kern_assembly_offsets.h
2021-04-15 15:43:29 -07:00
Michael Scire
037b04ac60
kern: mostly kill magic numbers in assembly, fix SVCs >= 0x80
2021-04-14 18:01:08 -07:00
Michael Scire
1d2be0a2eb
kern: mesosphere now implements kernel/sdk 12.3
2021-04-11 03:42:16 -07:00
Michael Scire
96937a611d
kern: fuck the KPolice^H^H^H^H^H^HPageGroups
2021-04-11 03:42:16 -07:00
Michael Scire
dc7862882f
kern: who needs __purecall?
2021-04-11 03:42:16 -07:00
Michael Scire
6faa3534bf
kern: update pinning semantics for terminating threads
2021-04-11 03:42:16 -07:00
Michael Scire
afb1d68d06
kern: ensure handle table is finalized when deferring termination
2021-04-11 03:42:16 -07:00
Michael Scire
cbdf33260e
kern: update port/session state semantics
2021-04-11 03:42:16 -07:00
Michael Scire
c62a7381f8
kern: update KLightConditionVariable
2021-04-11 03:42:16 -07:00
Michael Scire
b4498734e4
kern: optimize KHandleTable to use indices instead of pointers
2021-04-11 03:42:16 -07:00
Michael Scire
4407237f5b
kern: KAutoObject destruction is now scheduled for next dpc-time
2021-04-11 03:42:16 -07:00
Michael Scire
15956fcf9a
kern: update for new slab resource counts/extents
2021-04-11 03:42:16 -07:00
Michael Scire
0f8b7be2d2
kern: load initial process binary from user pool, rather than from pt heap
2021-04-11 03:42:16 -07:00
Michael Scire
a1e137cc1c
kern: update Initialize0 for new changes
2021-04-11 03:42:16 -07:00
Michael Scire
85f9355184
kern: use KScopedLightLockPair helper for page table pair-locks
2021-04-11 03:42:16 -07:00
Michael Scire
60b5bd73b7
kern: track mapped ipc server memory in page table
2021-04-11 03:42:16 -07:00
Michael Scire
53e7aa0a20
kern: add KPageTableBase::Read/WriteDebugIoMemory
2021-04-11 03:42:16 -07:00
Michael Scire
1fce7b08b1
kern: update KMemoryBlockManagerUpdaterAllocator for new ctor/init semantics
2021-04-11 03:42:16 -07:00
Michael Scire
c216f92a91
kern: swap tpidr_el1/cntv_cval_el0 as scratch vs exception stack
2021-04-11 03:42:16 -07:00