From 2dbc96b1c783a2cb147321f6131d67691d36e592 Mon Sep 17 00:00:00 2001 From: notaz Date: Mon, 29 Jul 2013 03:28:45 +0300 Subject: [PATCH] preserve r9 for apple --- cpu/sh2/compiler.c | 16 ++++++++++++++++ pico/carthw/svp/stub_arm.S | 27 +++++++++++++++++++-------- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/cpu/sh2/compiler.c b/cpu/sh2/compiler.c index d3eb3878..e9838978 100644 --- a/cpu/sh2/compiler.c +++ b/cpu/sh2/compiler.c @@ -270,6 +270,8 @@ typedef struct { #ifdef __arm__ #include "../drc/emit_arm.c" +#ifndef __MACH__ + static const int reg_map_g2h[] = { 4, 5, 6, 7, 8, -1, -1, -1, @@ -279,6 +281,20 @@ static const int reg_map_g2h[] = { -1, -1, -1, -1, // SHR_GBR, SHR_VBR, SHR_MACH, SHR_MACL, }; +#else + +// no r9.. +static const int reg_map_g2h[] = { + 4, 5, 6, 7, + -1, -1, -1, -1, + -1, -1, -1, -1, + -1, -1, -1, 8, // r12 .. sp + -1, -1, -1, 10, // SHR_PC, SHR_PPC, SHR_PR, SHR_SR, + -1, -1, -1, -1, // SHR_GBR, SHR_VBR, SHR_MACH, SHR_MACL, +}; + +#endif + static temp_reg_t reg_temp[] = { { 0, }, { 1, }, diff --git a/pico/carthw/svp/stub_arm.S b/pico/carthw/svp/stub_arm.S index d5c01bf4..9d5c5fa1 100644 --- a/pico/carthw/svp/stub_arm.S +++ b/pico/carthw/svp/stub_arm.S @@ -12,14 +12,6 @@ .text .align 2 -@ externals -#define cache_flush_d_inval_i ESYM(cache_flush_d_inval_i) -#define ssp_get_iram_context ESYM(ssp_get_iram_context) -#define ssp_pm_read ESYM(ssp_pm_read) -#define ssp_pm_write ESYM(ssp_pm_write) -#define ssp_translate_block ESYM(ssp_translate_block) -#define tr_unhandled ESYM(tr_unhandled) - @ SSP_GR0, SSP_X, SSP_Y, SSP_A, @ SSP_ST, SSP_STACK, SSP_PC, SSP_P, @ SSP_PM0, SSP_PM1, SSP_PM2, SSP_XST, @@ -613,4 +605,23 @@ hle_07_036_ending2: mov r0, #0x87 b ssp_drc_next @ let the dispatcher finish this + +@ ios stuff - preserving r9 on external calls +#ifdef __MACH__ + +#define APPLE_WRAP(f) \ + f:; \ + push {r9,lr}; \ + bl _##f; \ + pop {r9,pc} + +APPLE_WRAP(cache_flush_d_inval_i) +APPLE_WRAP(ssp_get_iram_context) +APPLE_WRAP(ssp_pm_read) +APPLE_WRAP(ssp_pm_write) +APPLE_WRAP(ssp_translate_block) +APPLE_WRAP(tr_unhandled) + +#endif + @ vim:filetype=armasm -- 2.39.5