Commit Graph

30 Commits

Author SHA1 Message Date
Michael Scire
5d883f22c8 ams: fix compilation with gcc 13 2023-05-08 18:06:07 -07:00
Michael Scire
6c3eb5b121 lib: simplify pragma macros 2022-03-23 09:15:48 -07:00
Michael Scire
d7a9c7ec4c ams: support building unit test programs on windows/linux/macos 2022-03-23 09:15:46 -07: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
SciresM
823c0df6b9 kern: avoid constexpr init for many objects (avoids unnecessary memory clear) (#1668) 2021-10-26 01:11:13 -07:00
Michael Scire
191d2941b5 util: improve (and use) offsetof that's """standard compliant""" 2021-10-26 01:11:10 -07:00
Michael Scire
21cb300537 constexpr: resign ourselves to gcc dropping void -> T support 2021-10-26 01:11:10 -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
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
2d67f66c44 util: add compile-time validation tests for intrusive red black trees 2021-04-29 03:04:53 -07:00
Michael Scire
2ccba9adbb util: implement red black trees as templates over macros 2021-04-29 03:04:53 -07:00
Michael Scire
1861791c1c ams: remove TYPED_STORAGE() macro in favor of template 2021-04-11 03:59:03 -07:00
Michael Scire
b3eef9315b kern: further codegen tweaks 2021-01-13 10:41:27 -08:00
Michael Scire
9586142e90 kern: tweak optimization settings for hot paths 2020-12-02 06:53:22 -08:00
Michael Scire
4faa6940ce kern: more iterator adjustments 2020-12-02 06:53:22 -08:00
Michael Scire
8209a85205 hot path: just in case 2020-12-02 06:53:20 -08:00
Michael Scire
b9504f356f microkernel: hot paths are pretty fucking hot 2020-12-02 06:53:20 -08:00
Michael Scire
c24ba715b4 KConditionVariable/KAddressArbiter: no need for global compare thread 2020-12-02 06:53:15 -08:00
Michael Scire
8e2b81b55a util: follow 90fd771 to its natural conclusion (generic base rbtree) 2020-10-26 16:03:08 -07:00
Michael Scire
c99184e155 IntrusiveRedBlackTree: refactor to add ->GetPrev(), ->GetNext() to BaseNode inheritors 2020-09-07 10:51:39 -07:00
Michael Scire
811cf0768a kern: add KAddressArbiter::WaitIfEqual 2020-08-01 15:31:19 -07:00
Michael Scire
1e9368c770 ams: revamp assertion system 2020-03-02 19:51:04 -08:00
Michael Scire
868f2aa1b9 kern: implement page group unmapping 2020-03-02 19:50:58 -08:00
Michael Scire
7b58a368a9 kern: Implement KAutoObject, KSlabHeap, KLightLock 2020-03-02 19:50:45 -08:00
Michael Scire
c0e7bc5c9d kern: Implement most of memory init (all cores hit main, but still more to do) 2020-03-02 19:50:43 -08:00
Michael Scire
7ee4ae460e find -exec sed -i'' -e 's/2018-2019 Atmo/2018-2020 Atmo/g' {} + 2020-03-02 19:50:40 -08:00
Michael Scire
58236db55e util::IntrusiveList: assert member referencing is correct 2020-03-02 19:50:39 -08:00
Michael Scire
9d55fcabf5 fixes for previous two commits 2020-03-02 19:50:38 -08:00
Michael Scire
f78763455a util: make offsetof/parent-of-member actually constexpr 2020-03-02 19:50:38 -08:00
Michael Scire
ef5297acb3 Improve buildsystem, split out generic code 2019-12-08 19:17:05 -08:00