Another 64-bit old recompiler change.
This commit is contained in:
@@ -309,6 +309,8 @@ void codegen_block_start_recompile(codeblock_t *block)
|
|||||||
addbyte(0xf6);
|
addbyte(0xf6);
|
||||||
#endif
|
#endif
|
||||||
call(block, (uintptr_t)x86gpf);
|
call(block, (uintptr_t)x86gpf);
|
||||||
|
while (block_pos < BLOCK_EXIT_OFFSET)
|
||||||
|
addbyte(0x90); /*NOP*/
|
||||||
#else
|
#else
|
||||||
addbyte(0xc6); /* mov byte ptr[&(cpu_state.abrt)],ABRT_GPF */
|
addbyte(0xc6); /* mov byte ptr[&(cpu_state.abrt)],ABRT_GPF */
|
||||||
addbyte(0x05);
|
addbyte(0x05);
|
||||||
@@ -320,8 +322,6 @@ void codegen_block_start_recompile(codeblock_t *block)
|
|||||||
addbyte(0xa3);
|
addbyte(0xa3);
|
||||||
addlong((uint32_t) (uintptr_t) &(abrt_error));
|
addlong((uint32_t) (uintptr_t) &(abrt_error));
|
||||||
#endif
|
#endif
|
||||||
while (block_pos < BLOCK_EXIT_OFFSET)
|
|
||||||
addbyte(0x90); /*NOP*/
|
|
||||||
block_pos = BLOCK_EXIT_OFFSET; /*Exit code*/
|
block_pos = BLOCK_EXIT_OFFSET; /*Exit code*/
|
||||||
addbyte(0x48); /*ADDL $40,%rsp*/
|
addbyte(0x48); /*ADDL $40,%rsp*/
|
||||||
addbyte(0x83);
|
addbyte(0x83);
|
||||||
|
|||||||
@@ -8,7 +8,11 @@
|
|||||||
#define HASH(l) ((l) & 0x1ffff)
|
#define HASH(l) ((l) & 0x1ffff)
|
||||||
|
|
||||||
#define BLOCK_EXIT_OFFSET 0x7e0
|
#define BLOCK_EXIT_OFFSET 0x7e0
|
||||||
|
#ifdef OLD_GPF
|
||||||
#define BLOCK_GPF_OFFSET (BLOCK_EXIT_OFFSET - 20)
|
#define BLOCK_GPF_OFFSET (BLOCK_EXIT_OFFSET - 20)
|
||||||
|
#else
|
||||||
|
#define BLOCK_GPF_OFFSET (BLOCK_EXIT_OFFSET - 15)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define BLOCK_MAX 1620
|
#define BLOCK_MAX 1620
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user