From 574281b6ea14c8534582f088b1cbf128ba6b1d76 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Thu, 1 Jan 2015 17:31:59 -0800 Subject: Fix some issues with 68K instruction retranslation --- gen.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gen.h') diff --git a/gen.h b/gen.h index e1492fc..b0fe5e1 100644 --- a/gen.h +++ b/gen.h @@ -17,6 +17,8 @@ typedef struct { code_ptr last; } code_info; +void check_alloc_code(code_info *code, uint32_t inst_size); + void init_code_info(code_info *code); void call(code_info *code, code_ptr fun); void jmp(code_info *code, code_ptr dest); -- cgit v1.2.3 From dac14d1f29445b77fee5b570e6eb73c28b1860a4 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Thu, 1 Jan 2015 19:15:05 -0800 Subject: Added 2 new functions to gen_x86.c for handling passing args according to the C abi of the host system and adapted the code in m68k_core_x86.c to use that instead of doing everything by hand --- gen.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gen.h') diff --git a/gen.h b/gen.h index b0fe5e1..e6ed928 100644 --- a/gen.h +++ b/gen.h @@ -23,5 +23,9 @@ void init_code_info(code_info *code); void call(code_info *code, code_ptr fun); void jmp(code_info *code, code_ptr dest); void jmp_r(code_info *code, uint8_t dst); +//call a function and put the arguments in the appropriate place according to the host ABI +void call_args(code_info *code, code_ptr fun, uint32_t num_args, ...); +//like the above, but follows other aspects of the ABI like stack alignment +void call_args_abi(code_info *code, code_ptr fun, uint32_t num_args, ...); #endif //GEN_H_ -- cgit v1.2.3 From af8bf7f7f18861ef1235e85a72ca100e755d9859 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Fri, 2 Jan 2015 13:14:09 -0800 Subject: Added functions to gen_x86 for saving and restoring callee save registers to better abstract over ABI differences between x86 and x86-64 --- gen.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gen.h') diff --git a/gen.h b/gen.h index e6ed928..5087b57 100644 --- a/gen.h +++ b/gen.h @@ -27,5 +27,7 @@ void jmp_r(code_info *code, uint8_t dst); void call_args(code_info *code, code_ptr fun, uint32_t num_args, ...); //like the above, but follows other aspects of the ABI like stack alignment void call_args_abi(code_info *code, code_ptr fun, uint32_t num_args, ...); +void save_callee_save_regs(code_info *code); +void restore_callee_save_regs(code_info *code); #endif //GEN_H_ -- cgit v1.2.3