Fix ARM and ARM64 build errors.

This commit is contained in:
SarahW 2019-02-13 21:11:27 +00:00
commit a73081f0bd
4 changed files with 12 additions and 12 deletions

View file

@ -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]);

View file

@ -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);

View file

@ -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];

View file

@ -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;