mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-06-29 11:45:30 +02:00
[dynarmic, MacroHLE] Fix crashes on W^X systems (#4090)
should fix crashes on: - NetBSD - SELinux - OpenBSD - other W^X systems - some person trying to be funny with W^X on their system even if they dont have to perf impact should be minimal Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4090 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: Maufeat <sahyno1996@gmail.com>
This commit is contained in:
parent
b05463ee19
commit
c8c61a12c3
2 changed files with 6 additions and 0 deletions
|
|
@ -90,6 +90,8 @@ std::once_flag flag;
|
|||
std::optional<SpinLockImpl> impl;
|
||||
|
||||
void SpinLockImpl::Initialize() noexcept {
|
||||
// Needed for W^X systems (i.e SElinux, OpenBSD)
|
||||
code.setProtectMode(Xbyak::CodeArray::ProtectMode::PROTECT_RW);
|
||||
Xbyak::Reg64 const ABI_PARAM1 = Backend::X64::HostLocToReg64(Backend::X64::ABI_PARAM1);
|
||||
code.align();
|
||||
lock = code.getCurr<void (*)(volatile int*)>();
|
||||
|
|
@ -99,6 +101,7 @@ void SpinLockImpl::Initialize() noexcept {
|
|||
unlock = code.getCurr<void (*)(volatile int*)>();
|
||||
EmitSpinLockUnlock(code, ABI_PARAM1, code.eax);
|
||||
code.ret();
|
||||
code.setProtectMode(Xbyak::CodeArray::ProtectMode::PROTECT_RE);
|
||||
}
|
||||
|
||||
void SpinLockImpl::GlobalInitialize() noexcept {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue