From 4cd95df9594967ee8905b6c44716cab8329f8604 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 16 Jul 2020 01:39:55 +0200 Subject: [PATCH] Another 64-bit old recompiler change. --- src/codegen/codegen_x86-64.c | 4 ++-- src/codegen/codegen_x86-64.h | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/codegen/codegen_x86-64.c b/src/codegen/codegen_x86-64.c index bed8393b6..7fd1ddd47 100644 --- a/src/codegen/codegen_x86-64.c +++ b/src/codegen/codegen_x86-64.c @@ -309,6 +309,8 @@ void codegen_block_start_recompile(codeblock_t *block) addbyte(0xf6); #endif call(block, (uintptr_t)x86gpf); + while (block_pos < BLOCK_EXIT_OFFSET) + addbyte(0x90); /*NOP*/ #else addbyte(0xc6); /* mov byte ptr[&(cpu_state.abrt)],ABRT_GPF */ addbyte(0x05); @@ -320,8 +322,6 @@ void codegen_block_start_recompile(codeblock_t *block) addbyte(0xa3); addlong((uint32_t) (uintptr_t) &(abrt_error)); #endif - while (block_pos < BLOCK_EXIT_OFFSET) - addbyte(0x90); /*NOP*/ block_pos = BLOCK_EXIT_OFFSET; /*Exit code*/ addbyte(0x48); /*ADDL $40,%rsp*/ addbyte(0x83); diff --git a/src/codegen/codegen_x86-64.h b/src/codegen/codegen_x86-64.h index 648a30342..529be99ae 100644 --- a/src/codegen/codegen_x86-64.h +++ b/src/codegen/codegen_x86-64.h @@ -8,7 +8,11 @@ #define HASH(l) ((l) & 0x1ffff) #define BLOCK_EXIT_OFFSET 0x7e0 +#ifdef OLD_GPF #define BLOCK_GPF_OFFSET (BLOCK_EXIT_OFFSET - 20) +#else +#define BLOCK_GPF_OFFSET (BLOCK_EXIT_OFFSET - 15) +#endif #define BLOCK_MAX 1620