Fix ARM and ARM64 build errors.
This commit is contained in:
parent
3f2d9ecf87
commit
a73081f0bd
4 changed files with 12 additions and 12 deletions
|
|
@ -77,7 +77,7 @@ static void build_load_routine(codeblock_t *block, int size, int is_float)
|
||||||
MOV R1, #0
|
MOV R1, #0
|
||||||
MOV PC, LR
|
MOV PC, LR
|
||||||
* STR LR, [SP, -4]!
|
* STR LR, [SP, -4]!
|
||||||
BL readmemb386l
|
BL readmembl
|
||||||
LDRB R1, cpu_state.abrt
|
LDRB R1, cpu_state.abrt
|
||||||
LDR PC, [SP], #4
|
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;
|
*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);
|
host_arm_STR_IMM_WB(block, REG_LR, REG_HOST_SP, -4);
|
||||||
if (size == 1)
|
if (size == 1)
|
||||||
host_arm_BL(block, (uintptr_t)readmemb386l);
|
host_arm_BL(block, (uintptr_t)readmembl);
|
||||||
else if (size == 2)
|
else if (size == 2)
|
||||||
host_arm_BL(block, (uintptr_t)readmemwl);
|
host_arm_BL(block, (uintptr_t)readmemwl);
|
||||||
else if (size == 4)
|
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 R1, #0
|
||||||
MOV PC, LR
|
MOV PC, LR
|
||||||
* STR LR, [SP, -4]!
|
* STR LR, [SP, -4]!
|
||||||
BL readmemb386l
|
BL readmembl
|
||||||
LDRB R1, cpu_state.abrt
|
LDRB R1, cpu_state.abrt
|
||||||
LDR PC, [SP], #4
|
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)
|
else if (size == 8)
|
||||||
host_arm_VMOV_64_D(block, REG_R2, REG_R3, REG_D_TEMP);
|
host_arm_VMOV_64_D(block, REG_R2, REG_R3, REG_D_TEMP);
|
||||||
if (size == 1)
|
if (size == 1)
|
||||||
host_arm_BL(block, (uintptr_t)writememb386l);
|
host_arm_BL(block, (uintptr_t)writemembl);
|
||||||
else if (size == 2)
|
else if (size == 2)
|
||||||
host_arm_BL(block, (uintptr_t)writememwl);
|
host_arm_BL(block, (uintptr_t)writememwl);
|
||||||
else if (size == 4)
|
else if (size == 4)
|
||||||
|
|
@ -304,7 +304,7 @@ void codegen_backend_init()
|
||||||
block_current = 0;
|
block_current = 0;
|
||||||
block_pos = 0;
|
block_pos = 0;
|
||||||
block = &codeblock[block_current];
|
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->data = codeblock_allocator_get_ptr(block->head_mem_block);
|
||||||
block_write_data = block->data;
|
block_write_data = block->data;
|
||||||
build_loadstore_routines(&codeblock[block_current]);
|
build_loadstore_routines(&codeblock[block_current]);
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ static void build_load_routine(codeblock_t *block, int size, int is_float)
|
||||||
MOV W1, #0
|
MOV W1, #0
|
||||||
RET
|
RET
|
||||||
* STP X29, X30, [SP, #-16]
|
* STP X29, X30, [SP, #-16]
|
||||||
BL readmemb386l
|
BL readmembl
|
||||||
LDRB R1, cpu_state.abrt
|
LDRB R1, cpu_state.abrt
|
||||||
LDP X29, X30, [SP, #-16]
|
LDP X29, X30, [SP, #-16]
|
||||||
RET
|
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_branch_set_offset(misaligned_offset, &block_write_data[block_pos]);
|
||||||
host_arm64_STP_PREIDX_X(block, REG_X29, REG_X30, REG_SP, -16);
|
host_arm64_STP_PREIDX_X(block, REG_X29, REG_X30, REG_SP, -16);
|
||||||
if (size == 1)
|
if (size == 1)
|
||||||
host_arm64_call(block, (uintptr_t)readmemb386l);
|
host_arm64_call(block, (uintptr_t)readmembl);
|
||||||
else if (size == 2)
|
else if (size == 2)
|
||||||
host_arm64_call(block, (uintptr_t)readmemwl);
|
host_arm64_call(block, (uintptr_t)readmemwl);
|
||||||
else if (size == 4)
|
else if (size == 4)
|
||||||
|
|
@ -151,7 +151,7 @@ static void build_store_routine(codeblock_t *block, int size, int is_float)
|
||||||
MOV W1, #0
|
MOV W1, #0
|
||||||
RET
|
RET
|
||||||
* STP X29, X30, [SP, #-16]
|
* STP X29, X30, [SP, #-16]
|
||||||
BL writememb386l
|
BL writemembl
|
||||||
LDRB R1, cpu_state.abrt
|
LDRB R1, cpu_state.abrt
|
||||||
LDP X29, X30, [SP, #-16]
|
LDP X29, X30, [SP, #-16]
|
||||||
RET
|
RET
|
||||||
|
|
@ -189,7 +189,7 @@ static void build_store_routine(codeblock_t *block, int size, int is_float)
|
||||||
else if (size == 8)
|
else if (size == 8)
|
||||||
host_arm64_FMOV_Q_D(block, REG_X1, REG_V_TEMP);
|
host_arm64_FMOV_Q_D(block, REG_X1, REG_V_TEMP);
|
||||||
if (size == 1)
|
if (size == 1)
|
||||||
host_arm64_call(block, (uintptr_t)writememb386l);
|
host_arm64_call(block, (uintptr_t)writemembl);
|
||||||
else if (size == 2)
|
else if (size == 2)
|
||||||
host_arm64_call(block, (uintptr_t)writememwl);
|
host_arm64_call(block, (uintptr_t)writememwl);
|
||||||
else if (size == 4)
|
else if (size == 4)
|
||||||
|
|
@ -301,7 +301,7 @@ void codegen_backend_init()
|
||||||
block_current = 0;
|
block_current = 0;
|
||||||
block_pos = 0;
|
block_pos = 0;
|
||||||
block = &codeblock[block_current];
|
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->data = codeblock_allocator_get_ptr(block->head_mem_block);
|
||||||
block_write_data = block->data;
|
block_write_data = block->data;
|
||||||
build_loadstore_routines(block);
|
build_loadstore_routines(block);
|
||||||
|
|
|
||||||
|
|
@ -282,7 +282,7 @@ static inline void codegen_addlong(codeblock_t *block, uint32_t val)
|
||||||
static void codegen_allocate_new_block(codeblock_t *block)
|
static void codegen_allocate_new_block(codeblock_t *block)
|
||||||
{
|
{
|
||||||
/*Current block is full. Allocate a new 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);
|
uint8_t *new_ptr = codeblock_allocator_get_ptr(new_block);
|
||||||
uint32_t offset = (uintptr_t)new_ptr - (uintptr_t)&block_write_data[block_pos];
|
uint32_t offset = (uintptr_t)new_ptr - (uintptr_t)&block_write_data[block_pos];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@ static inline void codegen_addlong(codeblock_t *block, uint32_t val)
|
||||||
static void codegen_allocate_new_block(codeblock_t *block)
|
static void codegen_allocate_new_block(codeblock_t *block)
|
||||||
{
|
{
|
||||||
/*Current block is full. Allocate a new 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);
|
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;
|
uint32_t offset = ((uintptr_t)new_ptr - (uintptr_t)&block_write_data[block_pos]) - 8;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue