X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fcarthw%2Fsvp%2Fcompiler.c;h=3632b919eaa6e1453246ecbeea7b092a3205a0e4;hb=e743be2070a13d14cae39a55b815b62b0edb6776;hp=b47484f4a222d71b0128f77c86874aa6b667ef7d;hpb=65c75cb07df9d27905dd166b876d5b6461cb656d;p=picodrive.git diff --git a/pico/carthw/svp/compiler.c b/pico/carthw/svp/compiler.c index b47484f..3632b91 100644 --- a/pico/carthw/svp/compiler.c +++ b/pico/carthw/svp/compiler.c @@ -35,6 +35,7 @@ void ssp_drc_next_patch(void){} void ssp_drc_end(void){} #endif +#define COUNT_OP #include "../../../cpu/drc/emit_arm.c" // ----------------------------------------------------- @@ -355,7 +356,7 @@ static void tr_mov16(int r, int val) static void tr_mov16_cond(int cond, int r, int val) { - emith_op_imm(cond, A_OP_MOV, r, val); + emith_op_imm(cond, 0, A_OP_MOV, r, val); hostreg_r[r] = -1; } @@ -1196,7 +1197,10 @@ static int tr_detect_set_pm(unsigned int op, int *pc, int imm) int reg = is_write ? ((tmpv>>4)&0x7) : (tmpv&0x7); if (reg > 4) tr_unhandled(); if ((tmpv & 0x0f) != 0 && (tmpv & 0xf0) != 0) tr_unhandled(); - known_regs.pmac_read[is_write ? reg + 5 : reg] = pmcv; + if (is_write) + known_regs.pmac_write[reg] = pmcv; + else + known_regs.pmac_read[reg] = pmcv; known_regb |= is_write ? (1 << (reg+25)) : (1 << (reg+20)); dirty_regb |= is_write ? (1 << (reg+25)) : (1 << (reg+20)); known_regs.emu_status &= ~SSP_PMC_SET; @@ -1787,7 +1791,9 @@ void *ssp_translate_block(int pc) exit(0); #endif - handle_caches(); +#ifdef ARM + cache_flush_d_inval_i(tcache, tcache_ptr); +#endif return block_start; }