From: notaz Date: Mon, 29 Jul 2013 23:27:44 +0000 (+0300) Subject: drc: svp: some missed r9 handling for apple X-Git-Tag: v1.85~18 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=picodrive.git;a=commitdiff_plain;h=989ba52a01409e2d2967e17b2ecb2193cf85e88d drc: svp: some missed r9 handling for apple --- diff --git a/pico/carthw/svp/compiler.c b/pico/carthw/svp/compiler.c index 0e616fd..b31197c 100644 --- a/pico/carthw/svp/compiler.c +++ b/pico/carthw/svp/compiler.c @@ -689,6 +689,18 @@ static int tr_aop_ssp2arm(int op) return 0; } +#ifdef __MACH__ +/* spacial version of call for calling C needed on ios, since we use r9.. */ +static void emith_call_c_func(void *target) +{ + EOP_STMFD_SP(A_R7M|A_R9M); + emith_call(target); + EOP_LDMFD_SP(A_R7M|A_R9M); +} +#else +#define emith_call_c_func emith_call +#endif + // ----------------------------------------------------- //@ r4: XXYY @@ -839,7 +851,7 @@ static void tr_PMX_to_r0(int reg) tr_flush_dirty_ST(); //tr_flush_dirty_pmcrs(); tr_mov16(0, reg); - emith_call(ssp_pm_read); + emith_call_c_func(ssp_pm_read); hostreg_clear(); } @@ -1080,7 +1092,7 @@ static void tr_r0_to_PMX(int reg) tr_flush_dirty_ST(); //tr_flush_dirty_pmcrs(); tr_mov16(1, reg); - emith_call(ssp_pm_write); + emith_call_c_func(ssp_pm_write); hostreg_clear(); }