Skip to content
  1. Dec 30, 2020
    • ReinUsesLisp's avatar
      core/memory: Read and write page table atomically · b3587102
      ReinUsesLisp authored
      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]
      b3587102
  2. Dec 29, 2020
  3. Dec 28, 2020
  4. Dec 27, 2020
  5. Dec 26, 2020
  6. Dec 25, 2020
  7. Dec 23, 2020
  8. Dec 22, 2020
  9. Dec 21, 2020
  10. Dec 20, 2020
  11. Dec 19, 2020
  12. Dec 18, 2020
Loading