1
0
Fork 0
forked from suyu/suyu
suyu/src/common
ReinUsesLisp b3587102d1 core/memory: Read and write page table atomically
Squash attributes into the pointer's integer, making them an uintptr_t
pair containing 2 bits at the bottom and then the pointer. These bits
are currently unused thanks to alignment requirements.

Configure Dynarmic to mask out these bits on pointer reads.

While we are at it, remove some unused attributes carried over from
Citra.

Read/Write and other hot functions use a two step unpacking process that
is less readable to stop MSVC from emitting an extra AND instruction in
the hot path:

 mov         rdi,rcx
 shr         rdx,0Ch
 mov         r8,qword ptr [rax+8]
 mov         rax,qword ptr [r8+rdx*8]
 mov         rdx,rax
-and         al,3
 and         rdx,0FFFFFFFFFFFFFFFCh
 je          Core::Memory::Memory::Impl::Read<unsigned char>
 mov         rax,qword ptr [vaddr]
 movzx       eax,byte ptr [rdx+rax]
2020-12-29 21:54:49 -03:00
..
logging Merge pull request #4451 from slashiee/extended-logging 2020-11-23 13:34:15 -08:00
x64 xbyak_abi: Shorten std::size_t to size_t 2020-12-05 00:43:55 -05:00
algorithm.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
alignment.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
assert.h common/assert: Make use of C++ attribute syntax 2020-08-24 04:15:10 -04:00
atomic_ops.cpp common/atomic_ops: Don't cast away volatile from pointers 2020-07-28 04:36:53 -04:00
atomic_ops.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
bit_cast.h common/bit_cast: Add function matching std::bit_cast without constexpr 2020-11-20 01:52:37 -03:00
bit_field.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
bit_set.h common: BitSet: Various style fixes based on code review feedback. 2020-12-06 00:27:13 -08:00
bit_util.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
cityhash.cpp Port #4182 from Citra: "Prefix all size_t with std::" 2018-09-15 15:21:06 +02:00
cityhash.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
CMakeLists.txt Merge pull request #5131 from bunnei/scheduler-rewrite 2020-12-20 20:57:54 -08:00
color.h common/color: Migrate code over to the Common namespace 2020-08-18 14:27:41 -04:00
common_funcs.h common_funcs: Add missing XOR operators to DECLARE_ENUM_FLAG_OPERATORS 2020-08-24 04:42:43 -04:00
common_paths.h common: Add a screenshots directory 2020-07-20 22:51:02 -04:00
common_types.h gpu: Move GPUVAddr definition to common_types. 2019-03-20 22:36:02 -04:00
concepts.h common/concepts: Move <type_traits> include out of the Common namespace 2020-08-18 14:24:54 -04:00
detached_tasks.cpp General: Tidy up clang-format warnings part 2 2020-08-13 14:19:08 -04:00
detached_tasks.h Review comments - part 5 2018-10-02 16:04:10 +02:00
div_ceil.h common: Add Common::DivCeil and Common::DivCeilLog2 2020-11-25 23:37:56 -03:00
dynamic_library.cpp common: Silence two discarded result warnings 2020-08-16 06:17:33 -04:00
dynamic_library.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
fiber.cpp common: fiber: Use VirtualBuffer for stack memory. 2020-11-29 01:31:52 -08:00
fiber.h common: fiber: Use boost::context instead of native fibers on Windows. 2020-11-29 01:31:51 -08:00
file_util.cpp Revert "Merge pull request #5173 from lioncash/common-fs" 2020-12-11 20:24:22 -05:00
file_util.h Revert "Merge pull request #5173 from lioncash/common-fs" 2020-12-11 20:24:22 -05:00
hash.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
hex_util.cpp partition_data_manager: Make data arrays constexpr 2020-08-06 02:41:58 -04:00
hex_util.h core/CMakeLists: Make some warnings errors 2020-10-13 13:16:49 -04:00
lz4_compression.cpp common/compression: Roll back std::span changes 2020-08-15 17:17:56 -04:00
lz4_compression.h common/compression: Roll back std::span changes 2020-08-15 17:17:56 -04:00
math_util.h core: Fix clang build pt.3 2020-10-21 22:14:23 -04:00
memory_detect.cpp common: switch to nullptr for sysctl's empty new value 2020-06-30 23:00:18 +00:00
memory_detect.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
memory_hook.cpp core: Move PageTable struct into Common. 2019-03-16 22:05:40 -04:00
memory_hook.h core: Move PageTable struct into Common. 2019-03-16 22:05:40 -04:00
microprofile.cpp Integrate the MicroProfile profiling library 2015-08-24 22:16:28 -03:00
microprofile.h Sources: Run clang-format on everything. 2016-09-18 09:38:01 +09:00
microprofileui.h Common: Remove section measurement from profiler (#1731) 2016-04-29 00:07:10 -07:00
misc.cpp General: Make ignoring a discarded return value an error 2020-10-30 00:13:21 -04:00
page_table.cpp core/memory: Read and write page table atomically 2020-12-29 21:54:49 -03:00
page_table.h core/memory: Read and write page table atomically 2020-12-29 21:54:49 -03:00
param_package.cpp citra_qt/configuration: misc input tab improvements 2018-10-06 15:43:49 +02:00
param_package.h Project Mjölnir: Part 1 2020-08-26 02:32:32 -04:00
quaternion.h Implement a basic class for motion devices 2020-08-27 17:19:21 -05:00
ring_buffer.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
scm_rev.cpp.in common: Add additional SCM revision fields 2019-10-05 00:09:49 -04:00
scm_rev.h common: Add additional SCM revision fields 2019-10-05 00:09:49 -04:00
scope_exit.h video_core: Resolve more variable shadowing scenarios pt.3 2020-12-05 16:02:23 -05:00
spin_lock.cpp Core/Common: Address Feedback. 2020-06-27 18:20:06 -04:00
spin_lock.h General: Fix clang build 2020-11-05 10:07:16 -05:00
stream.cpp video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
stream.h common/stream: Be explicit with copy and move operators 2020-10-29 22:57:35 -04:00
string_util.cpp common: Enable warnings as errors 2020-11-02 15:50:58 -05:00
string_util.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
swap.h Revert "core: Fix clang build" 2020-10-20 19:07:39 -07:00
telemetry.cpp common/telemetry: Migrate namespace into the Common namespace 2020-08-18 15:08:32 -04:00
telemetry.h video_core: Resolve more variable shadowing scenarios pt.3 2020-12-05 16:02:23 -05:00
thread.cpp Fix thread naming on Linux, which limits names to 15 bytes. 2020-08-05 20:34:49 -07:00
thread.h common/thread: Fix data race in is_set 2020-08-26 02:50:51 +00:00
thread_queue_list.h Revert "core: Fix clang build" 2020-10-20 19:07:39 -07:00
threadsafe_queue.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
time_zone.cpp Revert "common/time_zone: Simplify GetOsTimeZoneOffset()" 2020-08-19 18:27:31 -04:00
time_zone.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
timer.cpp common: Enable warnings as errors 2020-11-02 15:50:58 -05:00
timer.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
uint128.cpp Common/uint128: Correct MSVC Compilation in old versions. 2020-06-18 16:29:26 -04:00
uint128.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
uuid.cpp mii_manager: Cleanup and optimization 2019-04-25 08:07:57 -04:00
uuid.h common: Make use of [[nodiscard]] where applicable 2020-08-15 17:17:52 -04:00
vector_math.h input_common/CMakeLists: Make some warnings errors 2020-10-15 19:37:51 -04:00
virtual_buffer.cpp page_table: Allow page tables to be moved 2020-11-17 20:08:20 -05:00
virtual_buffer.h core/memory: Read and write page table atomically 2020-12-29 21:54:49 -03:00
wall_clock.cpp audio_core: Make shadowing and unused parameters errors 2020-12-03 00:54:31 -05:00
wall_clock.h audio_core: Make shadowing and unused parameters errors 2020-12-03 00:54:31 -05:00
zstd_compression.cpp common/compression: Roll back std::span changes 2020-08-15 17:17:56 -04:00
zstd_compression.h common/compression: Roll back std::span changes 2020-08-15 17:17:56 -04:00