From a4e9b08fe74a31f7a5997b9146627b5910947729 Mon Sep 17 00:00:00 2001 From: lizzie Date: Thu, 4 Jun 2026 19:39:21 +0200 Subject: [PATCH] [docs] clang-cl with MSVC, misc docs updates (#4034) - vtable bounce is all gone - factual corrections to HosKernel.md Signed-off-by: lizzie Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4034 Reviewed-by: crueter Reviewed-by: MaranBr --- docs/Build.md | 10 ++++++++++ docs/HosKernel.md | 4 ++-- docs/user/Settings.md | 1 - 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/Build.md b/docs/Build.md index 394fe4871d..ec99b20558 100644 --- a/docs/Build.md +++ b/docs/Build.md @@ -136,6 +136,16 @@ cmake -S . -B build -G "" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COM +#### Option D: Visual Studio with clang-cl + +
+1. Install `"x64 Native Tools Command Prompt"` for VS from the installer and also install `cmake-gui`. +2. Open `"x64 Native Tools Command Prompt"` and type `cmake-gui`. +3. Click configure choose ninja generator > specify native compilers. +4. Put `"C:/Program Files/Microsoft Visual Studio/18/Community/VC/Tools/Llvm/x64/bin/clang-cl.exe"` as your C/C++ compiler path. +5. Open `Visual studio > Open project` or Solution > Change to search for the CMake project file (`CMakeList.txt`) file on the cloned directory, and then build. +
+ ## Troubleshooting If your initial configure failed: diff --git a/docs/HosKernel.md b/docs/HosKernel.md index 399d4fb7b1..87df2072a5 100644 --- a/docs/HosKernel.md +++ b/docs/HosKernel.md @@ -1,6 +1,6 @@ # HOS Kernel -In brief, the HOS kernel is a microkernel, some services and programs run in userspace, the primary way to do communication between these is via `HIPC` (not covered here); otherwise most of the primitives reside in the forms of syscalls invoked via `svc #imm`. The kernel supports both 32-bit and 64-bit programs, and has the capacity to use 32, 36 and 39 bits of address space for spawned processes. Most of the networking stack is based off FreeBSD's network stack. +In brief, the HOS kernel is a microkernel, all services and programs run in userspace, the primary way to do communication between these is via `HIPC` (not covered here); otherwise most of the primitives reside in the forms of syscalls invoked via `svc #imm`. The kernel supports both 32-bit and 64-bit programs, and has the capacity to use 32, 36 and 39 bits of address space for spawned processes. Most of the networking stack is based off FreeBSD's network stack. The emulator implements the majority of the syscalls pertaining to the HOS kernel itself. When we talk about the HOS Kernel (in the context of the emulator) we are strictly speaking about the mechanisms from which syscalls are handled (and it's subsequent side effects, such as the page table book-keeping). The emulator at it's current state is unable to load a custom low-level kernel and do supervisor-level emulation. @@ -28,4 +28,4 @@ Every process keeps it's own tracking of the following structures: The emulator willingly restricts itself to only use 4 threads (to emulate 4 cores), this is because most existing applications do not benefit greatly from the added core count, and in fact can be detrimental due to extra contention. This translates equitatively to about 4 `ArmInterface` slots for each process, these are then redirected to whatever is the last `pc` of the last thread running on the core is meant to be; proceed to run it, then when returning (due to halt or interruption), proceed to reschedule the thread. -The scheduler as-is isn't 100% faithful to the original, and has great timing variance (especially due to the fact the emulator can run in systems with wildly different timings). +The scheduler as-is isn't 100% faithful to the original (for example the original is cooperative and not preemptive), and has great timing variance (especially due to the fact the emulator can run in systems with wildly different timings). diff --git a/docs/user/Settings.md b/docs/user/Settings.md index 9153a27e4d..a71972934c 100644 --- a/docs/user/Settings.md +++ b/docs/user/Settings.md @@ -30,7 +30,6 @@ Before touching the settings, please see the game boots with stock options. We t ## CPU -- `CPU/Virtual table bouncing`: Some games have the tendency to crash on loading due to an indirect bad jump (Pokemon ZA being the worst offender); this option lies to the game and tells it to just pretend it never executed a given function. This is fine for most casual users, but developers of switch applications **must** disable this. This temporary "hack" should hopefully be gone in 6-7 months from now on. - `Fastmem`, aka. `CPU/Enable Host MMU`: Enables "fastmem"; a detailed description of fastmem can be found [here](../dynarmic/Design.md#fast-memory-fastmem). - `CPU/Unsafe FMA`: Enables deliberate innacurate FMA behaviour which may affect how FMA returns any given operation - this may introduce tiny floating point errors which can cascade in sensitive code (i.e FFmpeg). - `CPU/Faster FRSQRTE and FRECPE`: Introduces accuracy errors on square root and reciprocals in exchange for less checks - this introduces inaccuracies with some cases but it's mostly safe.