diff options
Diffstat (limited to 'src/dynarec')
| -rw-r--r-- | src/dynarec/dynablock.c | 3 | ||||
| -rw-r--r-- | src/dynarec/dynarec_native_functions.c | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c index 4c703167..bfe10758 100644 --- a/src/dynarec/dynablock.c +++ b/src/dynarec/dynablock.c @@ -19,6 +19,7 @@ #include "dynarec_private.h" #include "elfloader.h" #include "bridge.h" +#include "signals.h" #include "dynarec_native.h" #include "native_lock.h" @@ -198,6 +199,8 @@ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t { if(hasAlternate((void*)addr)) return NULL; + if((getProtection(addr)&(PROT_EXEC|PROT_READ))!=(PROT_EXEC|PROT_READ)) // cannot be run, get out of the Dynarec + return NULL; dynablock_t* block = getDB(addr); if(block || !create) return block; diff --git a/src/dynarec/dynarec_native_functions.c b/src/dynarec/dynarec_native_functions.c index 5a086018..c6ea65b0 100644 --- a/src/dynarec/dynarec_native_functions.c +++ b/src/dynarec/dynarec_native_functions.c @@ -172,7 +172,7 @@ void native_ud(x64emu_t* emu) void native_priv(x64emu_t* emu) { emu->test.test = 0; - emit_signal(emu, SIGSEGV, (void*)R_RIP, 0); + emit_signal(emu, SIGSEGV, (void*)R_RIP, 0xbad0); } void native_int(x64emu_t* emu, int num) |