From 4401a8d0297e001802d72109f4d1a1c680824b11 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 16 Jan 2020 05:48:56 +0100 Subject: [PATCH] Ported some small fixes from PCem that only apply to the new recompiler. --- src/cpu_new/codegen_backend_x86-64_ops.c | 2 +- src/cpu_new/codegen_backend_x86_ops.c | 2 +- src/cpu_new/codegen_backend_x86_ops_sse.c | 2 +- src/mem_new.c | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/cpu_new/codegen_backend_x86-64_ops.c b/src/cpu_new/codegen_backend_x86-64_ops.c index 74173e626..8bb91da1c 100644 --- a/src/cpu_new/codegen_backend_x86-64_ops.c +++ b/src/cpu_new/codegen_backend_x86-64_ops.c @@ -1018,7 +1018,7 @@ void host_x86_MOV32_STACK_IMM(codeblock_t *block, int32_t offset, uint32_t imm_d codegen_addbyte3(block, 0xc7, 0x04, 0x24); /*MOV [ESP], imm_data*/ codegen_addlong(block, imm_data); } - else if (offset >= -80 || offset < 0x80) + else if (offset >= -0x80 && offset < 0x80) { codegen_alloc_bytes(block, 8); codegen_addbyte4(block, 0xc7, 0x44, 0x24, offset & 0xff); /*MOV offset[ESP], imm_data*/ diff --git a/src/cpu_new/codegen_backend_x86_ops.c b/src/cpu_new/codegen_backend_x86_ops.c index 18f0171a5..f5010e356 100644 --- a/src/cpu_new/codegen_backend_x86_ops.c +++ b/src/cpu_new/codegen_backend_x86_ops.c @@ -763,7 +763,7 @@ void host_x86_MOV32_STACK_IMM(codeblock_t *block, int32_t offset, uint32_t imm_d codegen_addbyte3(block, 0xc7, 0x04, 0x24); /*MOV [ESP], imm_data*/ codegen_addlong(block, imm_data); } - else if (offset >= -80 || offset < 0x80) + else if (offset >= -0x80 && offset < 0x80) { codegen_alloc_bytes(block, 8); codegen_addbyte4(block, 0xc7, 0x44, 0x24, offset & 0xff); /*MOV offset[ESP], imm_data*/ diff --git a/src/cpu_new/codegen_backend_x86_ops_sse.c b/src/cpu_new/codegen_backend_x86_ops_sse.c index 641d16532..d829e4097 100644 --- a/src/cpu_new/codegen_backend_x86_ops_sse.c +++ b/src/cpu_new/codegen_backend_x86_ops_sse.c @@ -204,7 +204,7 @@ void host_x86_MOVQ_STACK_OFFSET_XREG(codeblock_t *block, int offset, int src_reg codegen_addbyte4(block, 0x66, 0x0f, 0xd6, 0x04 | (src_reg << 3)); /*MOVQ [ESP], src_reg*/ codegen_addbyte(block, 0x24); } - else if (offset >= -80 || offset < 0x80) + else if (offset >= -0x80 && offset < 0x80) { codegen_alloc_bytes(block, 6); codegen_addbyte4(block, 0x66, 0x0f, 0xd6, 0x44 | (src_reg << 3)); /*MOVQ offset[ESP], src_reg*/ diff --git a/src/mem_new.c b/src/mem_new.c index 4fd4dbc91..84f3aa597 100644 --- a/src/mem_new.c +++ b/src/mem_new.c @@ -1688,6 +1688,9 @@ mem_log("MEM: reset: new pages=%08lx, pages_sz=%i\n", pages, pages_sz); mem_mapping_disable(&ram_remapped_mapping); mem_a20_init(); + + purgable_page_list_head = 0; + purgeable_page_count = 0; }