X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fcarthw%2Fsvp%2Fcompiler.c;h=b31197c2a364aaa34c1f531a5bbcd492806e2248;hb=HEAD;hp=0e616fd6d210a0e14ff0ec52eeeab6729a2028b8;hpb=3b7088981e85f80156199530fc810bba63d0ba7a;p=picodrive.git 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(); }