diff --git a/src/codegen_backend_arm.c b/src/codegen_backend_arm.c index fc77eba..0c1c2c8 100644 --- a/src/codegen_backend_arm.c +++ b/src/codegen_backend_arm.c @@ -77,7 +77,7 @@ static void build_load_routine(codeblock_t *block, int size, int is_float) MOV R1, #0 MOV PC, LR * STR LR, [SP, -4]! - BL readmemb386l + BL readmembl LDRB R1, cpu_state.abrt LDR PC, [SP], #4 */ @@ -116,7 +116,7 @@ static void build_load_routine(codeblock_t *block, int size, int is_float) *misaligned_offset |= ((((uintptr_t)&block_write_data[block_pos] - (uintptr_t)misaligned_offset) - 8) & 0x3fffffc) >> 2; host_arm_STR_IMM_WB(block, REG_LR, REG_HOST_SP, -4); if (size == 1) - host_arm_BL(block, (uintptr_t)readmemb386l); + host_arm_BL(block, (uintptr_t)readmembl); else if (size == 2) host_arm_BL(block, (uintptr_t)readmemwl); else if (size == 4) @@ -149,7 +149,7 @@ static void build_store_routine(codeblock_t *block, int size, int is_float) MOV R1, #0 MOV PC, LR * STR LR, [SP, -4]! - BL readmemb386l + BL readmembl LDRB R1, cpu_state.abrt LDR PC, [SP], #4 */ @@ -192,7 +192,7 @@ static void build_store_routine(codeblock_t *block, int size, int is_float) else if (size == 8) host_arm_VMOV_64_D(block, REG_R2, REG_R3, REG_D_TEMP); if (size == 1) - host_arm_BL(block, (uintptr_t)writememb386l); + host_arm_BL(block, (uintptr_t)writemembl); else if (size == 2) host_arm_BL(block, (uintptr_t)writememwl); else if (size == 4) @@ -304,7 +304,7 @@ void codegen_backend_init() block_current = 0; block_pos = 0; block = &codeblock[block_current]; - block->head_mem_block = codegen_allocator_allocate(NULL); + block->head_mem_block = codegen_allocator_allocate(NULL, block_current); block->data = codeblock_allocator_get_ptr(block->head_mem_block); block_write_data = block->data; build_loadstore_routines(&codeblock[block_current]); diff --git a/src/codegen_backend_arm64.c b/src/codegen_backend_arm64.c index 4a2885a..7497a0b 100644 --- a/src/codegen_backend_arm64.c +++ b/src/codegen_backend_arm64.c @@ -82,7 +82,7 @@ static void build_load_routine(codeblock_t *block, int size, int is_float) MOV W1, #0 RET * STP X29, X30, [SP, #-16] - BL readmemb386l + BL readmembl LDRB R1, cpu_state.abrt LDP X29, X30, [SP, #-16] RET @@ -116,7 +116,7 @@ static void build_load_routine(codeblock_t *block, int size, int is_float) host_arm64_branch_set_offset(misaligned_offset, &block_write_data[block_pos]); host_arm64_STP_PREIDX_X(block, REG_X29, REG_X30, REG_SP, -16); if (size == 1) - host_arm64_call(block, (uintptr_t)readmemb386l); + host_arm64_call(block, (uintptr_t)readmembl); else if (size == 2) host_arm64_call(block, (uintptr_t)readmemwl); else if (size == 4) @@ -151,7 +151,7 @@ static void build_store_routine(codeblock_t *block, int size, int is_float) MOV W1, #0 RET * STP X29, X30, [SP, #-16] - BL writememb386l + BL writemembl LDRB R1, cpu_state.abrt LDP X29, X30, [SP, #-16] RET @@ -189,7 +189,7 @@ static void build_store_routine(codeblock_t *block, int size, int is_float) else if (size == 8) host_arm64_FMOV_Q_D(block, REG_X1, REG_V_TEMP); if (size == 1) - host_arm64_call(block, (uintptr_t)writememb386l); + host_arm64_call(block, (uintptr_t)writemembl); else if (size == 2) host_arm64_call(block, (uintptr_t)writememwl); else if (size == 4) @@ -301,7 +301,7 @@ void codegen_backend_init() block_current = 0; block_pos = 0; block = &codeblock[block_current]; - block->head_mem_block = codegen_allocator_allocate(NULL); + block->head_mem_block = codegen_allocator_allocate(NULL, block_current); block->data = codeblock_allocator_get_ptr(block->head_mem_block); block_write_data = block->data; build_loadstore_routines(block); diff --git a/src/codegen_backend_arm64_ops.c b/src/codegen_backend_arm64_ops.c index 0a7e24d..eaf5089 100644 --- a/src/codegen_backend_arm64_ops.c +++ b/src/codegen_backend_arm64_ops.c @@ -282,7 +282,7 @@ static inline void codegen_addlong(codeblock_t *block, uint32_t val) static void codegen_allocate_new_block(codeblock_t *block) { /*Current block is full. Allocate a new block*/ - struct mem_block_t *new_block = codegen_allocator_allocate(block->head_mem_block); + struct mem_block_t *new_block = codegen_allocator_allocate(block->head_mem_block, get_block_nr(block)); uint8_t *new_ptr = codeblock_allocator_get_ptr(new_block); uint32_t offset = (uintptr_t)new_ptr - (uintptr_t)&block_write_data[block_pos]; diff --git a/src/codegen_backend_arm_ops.c b/src/codegen_backend_arm_ops.c index 17355cc..b6a6142 100644 --- a/src/codegen_backend_arm_ops.c +++ b/src/codegen_backend_arm_ops.c @@ -212,7 +212,7 @@ static inline void codegen_addlong(codeblock_t *block, uint32_t val) static void codegen_allocate_new_block(codeblock_t *block) { /*Current block is full. Allocate a new block*/ - struct mem_block_t *new_block = codegen_allocator_allocate(block->head_mem_block); + struct mem_block_t *new_block = codegen_allocator_allocate(block->head_mem_block, get_block_nr(block)); uint8_t *new_ptr = codeblock_allocator_get_ptr(new_block); uint32_t offset = ((uintptr_t)new_ptr - (uintptr_t)&block_write_data[block_pos]) - 8;