Commit Graph

470 Commits

Author SHA1 Message Date
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
ff28833612 ams: overhaul fs.mitm romfs ownership, bump to 1.2.4 2021-11-04 13:40:36 -07:00
Michael Scire
e7b84767c6 git subrepo pull (merge) libraries
subrepo:
  subdir:   "libraries"
  merged:   "8764bd406"
upstream:
  origin:   "https://github.com/Atmosphere-NX/Atmosphere-libs"
  branch:   "master"
  commit:   "12d0ba172"
git-subrepo:
  version:  "0.4.1"
  origin:   "???"
  commit:   "???"
2021-11-03 23:59:56 -07:00
Michael Scire
a0ca502b3a ams: bump api version to 1.2.3 2021-11-03 23:59:56 -07:00
Michael Scire
bb16bb0d8d ams: update for awareness of architecture revision 2021-11-03 23:59:53 -07:00
Léo Lam
12d0ba172f util/string_view: fix nonnull attribute argument number
Argument 1 is the this pointer, not the string.
2021-11-02 17:19:35 -07:00
Michael Scire
4d0f1b7924 ams: bump version to 1.2.2 2021-10-29 17:47:14 -07:00
Michael Scire
f8e294d6fc sprofile: various correctness fixes. 2021-10-29 17:47:14 -07:00
Michael Scire
13c6987cc4 ams: bump version to 1.2.1 2021-10-26 01:11:19 -07:00
Michael Scire
f68bae342c sprof: update for 13.1.0 (format version 1) 2021-10-26 01:11:19 -07:00
Michael Scire
a0f0dc3ba1 crypto: implement md5, which now used by sprof 2021-10-26 01:11:19 -07:00
Michael Scire
dfba6af22c kern: implement 13.1.0 kernel changes 2021-10-26 01:11:18 -07:00
Michael Scire
2eab77fe5a util: add trait/macro for is_constexpr_constructible 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
8f761e928c kern: optimize timespan -> tick codegen, improve .text layout 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
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
573769303b kern: update scheduler for 13.0.0 change, fix some ctz/clz bugs 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
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
96190af3dc util: fix consteval CountTrailingZeroes impl 2021-10-15 23:54:38 -07:00
Michael Scire
3744ee6fff ams: bump api verrsion pre-emptively to 1.2.0 2021-10-15 23:54:37 -07:00
Michael Scire
3218308524 loader: refactor ro manager/improve accuracy 2021-10-15 23:54:36 -07:00
Michael Scire
0abb1e474e spl: refactor for accuracy/move into libstrat 2021-10-15 23:54:36 -07:00
Michael Scire
5872a51c18 svc: use m_ for member variables 2021-10-15 23:54:35 -07:00
Michael Scire
bb1a22a631 sdmmc: use m_ for member variables 2021-10-15 23:54:35 -07:00
Michael Scire
116e41f790 exo/vapours: refactor member variables to m_ over this-> 2021-10-15 23:54:34 -07:00
Michael Scire
3b5f56ab9f ams: replace most remaining operator & with std::addressof 2021-10-15 23:54:34 -07:00
Adubbz
ea0bb620f2 settings: implement KeyValueStore (#1659)
* settings: implement KeyValueStore and dependencies

* settings: update KeyValueStore for recent refactoring

* settings: address feedback
2021-10-15 23:54:33 -07:00
Michael Scire
fd1b6d4578 libstrat: enable -Wextra, -Werror
This caught an embarrassingly large number of bugs.
2021-10-07 23:06:28 -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
612b9e2f01 strat: prefer os::NativeHandle to Handle/svc::Handle where sensible 2021-10-07 23:06:26 -07:00
Michael Scire
5a71876ca8 strat: use svc:: over ::svc 2021-10-07 23:06:26 -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
57f439afe7 result: improve Includes codegen 2021-10-07 23:06:24 -07:00
Michael Scire
6125281acd os: adopt multiwait naming over waitable 2021-10-07 23:06:23 -07:00
Michael Scire
c68298a00e stratosphere: use SdkMutex/SdkRecursiveMutex over Mutex 2021-10-07 23:06:22 -07:00
Michael Scire
7665721e03 ams-libs: AMS_ASSERT no longer invokes expression 2021-10-07 23:06:21 -07:00
Michael Scire
8ecddf498a kern: use util::BitFlagSet for capability flags 2021-10-07 23:06:18 -07:00
Michael Scire
e05183a6f4 ams: bump version to 1.1.1 2021-09-24 09:17:12 -07:00
Michael Scire
33ae401bc8 svc: bump supported version 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
22bb619873 kern: add new KMemoryState 2021-09-19 10:35:37 -07:00
Michael Scire
b4c67d9c3b kern: update GetInfo logic for tick count InfoTypes 2021-09-19 10:35:35 -07:00
Adubbz
66104b830a ncm: skeleton new commands 2021-09-19 10:35:34 -07:00
Michael Scire
a8bccc95ab sprofile: fully reimplement sprof:bg + sprof:sp 2021-09-19 10:35:33 -07:00
Michael Scire
8a35d51406 sprofile: implement non-importer bgagent commands 2021-09-19 10:35:33 -07:00
Michael Scire
196c524768 sprofile: implement OpenProfileUpdateObserver 2021-09-19 10:35:33 -07:00
Michael Scire
6c012b8371 ams: update current target firmware 2021-09-19 10:35:32 -07:00
Michael Scire
a669f3dcfa fusee/exo: update for recognition of 13.0.0 2021-09-19 10:35:31 -07:00
Michael Scire
33d58424c7 kern: add hardware single step extension 2021-09-19 10:35:28 -07:00
Michael Scire
7bb3153938 osdbg: implement thread info api 2021-09-19 10:35:27 -07:00
SciresM
277d2193e2 LogManager: implement system module, client api, logging api (#1617)
Some notes:

* Unless `atmosphere!enable_log_manager` is true, Nintendo's log manager will be used instead.
  * This prevents paying memory costs for LM when not enabling logging.
  * To facilitate this, Atmosphere's log manager has a different program id from Nintendo's.
  * `atmosphere!enable_htc` implies `atmosphere!enable_log_manager`.
* LogManager logs to tma, and the SD card (if `lm!enable_sd_card_logging` is true, which it is by default).
* Binary logs are saved to `lm!sd_card_log_output_directory`, which is `atmosphere/binlogs` by default.
2021-09-19 10:35:25 -07:00
Michael Scire
7375d583c6 fusee: tactically don't trash PLLA1, fixes audio corruption on boot 2021-09-06 16:32:49 -07:00
Michael Scire
9c523b98fd ams-1.0.0: bump version number well ahead of time 2021-09-06 16:32:48 -07:00
Michael Scire
95eca16642 fusee_cpp: import mariko mtc 2021-09-06 16:32:43 -07:00
Michael Scire
6c6694d2c9 fusee_cpp: begin mariko mtc work 2021-09-06 16:32:43 -07:00
Michael Scire
a64b838b9c fusee_cpp: implement cpu startup 2021-09-06 16:32:42 -07:00
Michael Scire
0d31962902 fusee_cpp: import full erista mtc logic 2021-09-06 16:32:39 -07:00
Michael Scire
91d23d9634 fusee_cpp: implement erista pll selection logic for mtc 2021-09-06 16:32:38 -07:00
Michael Scire
797c61b066 fusee_cpp: implement bpmp overclock 2021-09-06 16:32:37 -07:00
Michael Scire
ba768c7f62 fusee_cpp: cache cleanup, confirmed working on hardware 2021-09-06 16:32:36 -07:00
Michael Scire
30725cfdec fusee_cpp: implement bpmp cache driver 2021-09-06 16:32:36 -07:00
Michael Scire
08b7808b2a fusee_cpp: implement sd card init 2021-09-06 16:32:36 -07:00
Michael Scire
6016ab3447 fusee_cpp: implement sdram lp0 scratch param save 2021-09-06 16:32:35 -07:00
Michael Scire
fdab233923 fusee_cpp: implement SDRAM initialization 2021-09-06 16:32:35 -07:00
Michael Scire
26d94b940e fusee-cpp: a little more init in SecureInitialize 2021-09-06 16:32:34 -07:00
Michael Scire
660f1c61f2 fusee-cpp: finish SecureInitialize 2021-09-06 16:32:34 -07:00
Michael Scire
98df0a1906 fusee-cpp: implement SecureInitialize besides InitializeClock() 2021-09-06 16:32:34 -07:00
Michael Scire
6550e73754 fusee-cpp: sketch out remainder of secure initialize 2021-09-06 16:32:33 -07:00
Michael Scire
bc3bcb02ce fusee-cpp: Implement mbist workaround 2021-09-06 16:32:33 -07:00
Michael Scire
2d2f6d4237 ams: bump version to 0.20.1 2021-09-06 16:32:32 -07:00
Michael Scire
87a1de0b1d ams: bump to 0.2.0
NOTE: Release will not occur until hekate is ready to handle new sept-less release format.
2021-08-20 13:34:02 -07:00
Michael Scire
dc3f54a713 ams: std::optional -> util::optional 2021-07-12 01:59:51 -07:00
Michael Scire
eb667fea51 ams: basic support for 12.1.0 2021-07-06 07:28:33 -07:00
Michael Scire
11ea38a7d7 ams: bump version to 0.19.4 2021-06-08 08:09:23 -07:00
Michael Scire
9ac6f527e2 ams: update for 12.0.2 2021-05-12 09:09:44 -07:00
Michael Scire
acee57e888 loader: avoid UB when doing count trailing zeros 2021-04-30 10:04:09 -07:00
Michael Scire
d78e6dfd60 ams: bump api version to 0.19.2 2021-04-30 08:56:10 -07:00
Michael Scire
5deb52d1eb erpt: implement forced shutdown detection 2021-04-30 08:56:10 -07:00
Michael Scire
888b39fa50 ams: assume gcc 11 2021-04-29 03:04:54 -07:00
Michael Scire
d8e35f2277 exo/meso: update for gcc 11 compatibility 2021-04-29 03:04:54 -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
7111b5cce6 strat: no longer materially constrained by sm session limit 2021-04-29 03:04:50 -07:00
Michael Scire
86c2eec8e9 ams: bump to 0.19.1 2021-04-12 17:14:19 -07:00
Michael Scire
2542f282e0 sm: reimplement using tipc instead of cmif (probably broken, untested) 2021-04-11 03:59:24 -07:00
Michael Scire
8301b868fd tipc: fix compilation issues with core serialization routines 2021-04-11 03:59:21 -07:00
Michael Scire
7145b887bd tipc: tentative core serialization logic (missing imports, won't compile) 2021-04-11 03:59:21 -07:00
Michael Scire
4346c028a8 ams: add target firmware 12.0.0, fusee recognition 2021-04-11 03:59:20 -07:00
Michael Scire
f863ad0a32 kern: mesosphere now implements kernel/sdk 12.3 2021-04-11 03:59:20 -07:00
Michael Scire
3ebf91304e kern: update Initialize0 for new changes 2021-04-11 03:59:15 -07:00
Michael Scire
afaccc9576 svc: sanitize booleans in autogenerated abi stubs 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
db61376b5b ams: bump version to 0.19.0.
Release (probably) not actually imminent, I just don't want to forget.
2021-04-11 03:59:02 -07:00
Michael Scire
f09107ff50 kern: add extension InfoType for retrieving current process handle. 2021-04-11 03:59:01 -07:00
SciresM
e000dc9745 [tma2] [Ongoing] Continue implementing modules for tma2. (#1388)
* cs: add stub sysmodule to host command shell server

* cs: implement logic for main (linker error paradise, for now)

* cs: implement more of the system module's skeleton

* htcs: update client type names for libnx pr merge
2021-04-11 03:59:01 -07:00
Michael Scire
09f34b1323 ams: implement socket api for htclow socket driver 2021-04-11 03:58:55 -07:00
Michael Scire
7d528a30df htc: implement socket driver (socket api not really impl'd yet) 2021-04-11 03:58:54 -07:00
Michael Scire
353e7f1a2c htc: implement htcmisc service object commands 2021-04-11 03:58:54 -07:00
Michael Scire
013a073a34 htcs: implement rpc tasks 2021-04-11 03:58:51 -07:00
Michael Scire
2850786a0b htcs: hook up HtcsService to rpc client 2021-04-11 03:58:51 -07:00
Michael Scire
4006c4e7b9 htcs: fix magic template argument deduction, do Close/Connect/Bind 2021-04-11 03:58:51 -07:00
Michael Scire
a14d7222d0 htcs: hook up CreateSocket/RpcClient Begin<>/End<> 2021-04-11 03:58:50 -07:00
Michael Scire
9c78a955ce htcs: hook up manager impl to (unimplemented) service 2021-04-11 03:58:50 -07:00
Michael Scire
98b482a766 htcs: hook manager up to (unimplemented) manager impl 2021-04-11 03:58:49 -07:00
Michael Scire
099594469b htcs: hook service objects up to (unimplemented) manager apis 2021-04-11 03:58:49 -07:00
Michael Scire
149cfe4abc htc: Implement (almost) all host-directory commands 2021-04-11 03:58:47 -07:00
Michael Scire
1af323f5b8 htcfs: implement OpenDirectory/CloseDirectory 2021-04-11 03:58:47 -07:00
Michael Scire
b56c5aaaeb htc: implement htcfs protocol bringup 2021-04-11 03:58:46 -07:00
Michael Scire
435211a044 htclow: add Channel wrapper class 2021-04-11 03:58:44 -07:00
Michael Scire
bd05b91eb0 htc: Implement RpcClient::ReceiveThread + SendThread 2021-04-11 03:58:41 -07:00
Michael Scire
8d3f11796a htc: add RpcTaskQueue/RpcTaskIdFreeList 2021-04-11 03:58:40 -07:00
Michael Scire
3d4fa15b09 htc: implement htcmisc rpc tasks 2021-04-11 03:58:39 -07:00
Michael Scire
6a99b7fcd5 htc: implement mux side of connecting (and more) 2021-04-11 03:58:38 -07:00
Michael Scire
fda4ddca62 htc: declare and begin impl of HtclowManagerImpl interface 2021-04-11 03:58:37 -07:00
Michael Scire
042de46692 htc: implement HtclowDriver 2021-04-11 03:58:35 -07:00
Michael Scire
e1b47dab0e htc: implement remaining worker thread send logic (for channel mux) 2021-04-11 03:58:34 -07:00
Michael Scire
cb8ed30517 htc: add remaining worker receive thread logic 2021-04-11 03:58:32 -07:00
Michael Scire
c44177cbcc htc: implement service channel parsing (ReceiveReadyPacket) 2021-04-11 03:58:32 -07:00
Michael Scire
c19e50bff1 htc: implement much of worker receive logic 2021-04-11 03:58:31 -07:00
Michael Scire
9fd6ed27af htc: implement htclow listener thread 2021-04-11 03:58:30 -07:00
Michael Scire
a56a4aed77 htc: implement complete usb driver 2021-04-11 03:58:29 -07:00
Michael Scire
7f16e202eb htc: implement (fixing linker errors) through HtclowManagerImpl::OpenDriver 2021-04-11 03:58:29 -07:00
Michael Scire
bc08912dd3 ams: bump version to 0.18.1 2021-02-15 19:51:59 -08:00
Michael Scire
570e5ceccb usb: add ds client api 2021-02-15 19:51:58 -08:00
Michael Scire
e4d44fb376 util: add FixedSet 2021-02-15 19:51:57 -08:00
Michael Scire
5f5b9a2831 util: add FixedMap::clear 2021-02-15 19:51:57 -08:00
Michael Scire
663e99d1f3 util: various FixedMap fixes 2021-02-15 19:51:56 -08:00
Michael Scire
6f7afd1812 util: add FixedMap/FixedTree 2021-02-15 19:51:56 -08:00
Michael Scire
8827c7da7b util: impl::AvailableIndexFinder 2021-02-15 19:51:56 -08:00
Michael Scire
90d85295bb ams: bump version to 0.18.0 2021-02-02 12:16:31 -08:00
Michael Scire
66212b7926 dns.mitm: support % in hosts file as stand-in for environment identifier 2021-02-02 12:16:30 -08:00
Michael Scire
bdb87ff590 ams: take three tries to edit a structure 2021-02-02 12:16:29 -08:00
Michael Scire
eb0b06b201 ams: afsr0 -> 32 bits in fatal error 2021-02-02 12:16:29 -08:00
Michael Scire
280dd79270 ams: fix fatal error context 2021-02-02 12:16:28 -08:00
Michael Scire
36616d6e0b timespan: explicitly require TimeSpanType as is_pod 2021-02-02 12:16:25 -08:00
Michael Scire
ae4243e412 boot: update for new sf-semantics 2021-02-02 12:16:24 -08:00
Michael Scire
0b2c4bb70e util::unique_lock, update loader to new sf semantics 2021-02-02 12:16:22 -08:00
Michael Scire
29b3baf678 util::string_view, update pgl for new sf semantics 2021-02-02 12:16:21 -08:00
Michael Scire
637c44f64d libstrat: convert to experimental new (super-accurate) sf allocation semantics 2021-02-02 12:16:20 -08:00
Michael Scire
6c11c07e2a ams: bump version to 0.17.1 2021-01-13 10:41:30 -08:00
Michael Scire
f62751fe0f os: implement 11.x SdkReplyAndReceive 2021-01-13 10:41:29 -08:00