Introduce the foundational support for emulating the AArch64 execution
state. This is the first major step towards running a guest operating
system.
1. vCPU State: A structure that models the architectural state of an
Arm64 vCPU. This includes the general-purpose registers, FP/SIMD
vector registers, and the essential EL1 system registers
(ELR_EL1, SPSR_EL1, ESR_EL1, FAR_EL1, VBAR_EL1) which are mandatory
for handling exceptions.
2. Guest Memory Model: A dedicated guest memory subsystem has been
created to manage the emulated physical address space.
3. Synchronous Exception Entry: This adds the core logic for taking
synchronous exceptions. The new take_synchronous_exception() function
emulates the hardware process of saving guest state, populating
syndrome registers, and preparing the vCPU to enter an exception
handler in EL1.
==========
GloriousTacoo (1):
aarch64/cpu: added system registers to vcpu_state_t (#67)
Ronald Caesar (9):
aarch64: Add core state structure for vCPU emulation
aarch64: Correct vCPU register state and add FP/SIMD support
aarch64/mem: Add fast GPA-to-HVA translation helper
aarch64/mem: Fixed pointer arithmatic warning
aarch64/mem: Introduce a dedicated guest memory access layer
memory: Move arena allocator into pound::memory namespace
aarch64/kernel: Add synchronous exception entry logic
arm64: Renames the aarch64 directory to arm64
arm64: Rename memory.h to guest.h
Sinan Karakaya (1):
feat(aarch64): added system registers to vcpu_state_t
Signed-off-by: Ronald Caesar <github43132@proton.me>
|
||
|---|---|---|
| .github/workflows | ||
| 3rd_Party | ||
| android/app/src/main/cpp/org/pound/poundemu | ||
| core | ||
| gui | ||
| resources | ||
| WIP/fs | ||
| .clang-format | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| CMakeSettings.json | ||
| Compatibility | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
Pound
“i think of getting pounded when i see that [name]” – Satisfied Customer
Note
This project is still being worked on, and we really need help as we only have a few developers.
If you know C++ and think you can help out, hop into the Discord and let us know. :)
Overview
Join the Pound Discord Server!
Pound is an early-stage emulator for the Nintendo Switch 2, targeting Windows, Linux and macOS ( Intel and Apple Silicon).
Initial focus is on implementing the architectural similarities to the original Nintendo Switch. Later stages of development will address differences in hardware between the two console generations.
Disclaimer
The goal of this project is to experiment, research, and educate on the topic of emulation of modern devices and operating systems. It is not for enabling illegal activity. All information is obtained via reverse engineering of legally purchased devices and games and information made public on the internet (you'd be surprised what's indexed on Google...). We are not any way affiliated with Nintendo or NVidia.
How to Compile Pound
See the compilation guide for detailed instructions on how to compile Pound.
Codebase
Pound reuses selected components from existing Nintendo Switch 1 emulators, primarily Yuzu.
All third-party code is clearly documented and properly attributed in the relevant parts of the repository.
Contributing
See here before submitting a pull request.
License
- Distributed under the GNU GPL-2.0 license
Credits
- Parts of the emulator are based on code from the Yuzu project.