X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fnew_dynarec%2Fassem_arm.c;h=b9dd3cf96a62833fd60b9a9f5637d5d48d6593b2;hb=53358c1d5b032cc7186b71e3cc14f0ad6c2d5468;hp=ef3219f4018f9020e4d22426485506a2bd0ce0a6;hpb=66ea165fc20153e117c903c874637251e2122374;p=pcsx_rearmed.git diff --git a/libpcsxcore/new_dynarec/assem_arm.c b/libpcsxcore/new_dynarec/assem_arm.c index ef3219f4..b9dd3cf9 100644 --- a/libpcsxcore/new_dynarec/assem_arm.c +++ b/libpcsxcore/new_dynarec/assem_arm.c @@ -522,12 +522,8 @@ static void emit_pcreladdr(u_int rt) static void emit_loadreg(int r, int hr) { - if(r&64) { - SysPrintf("64bit load in 32bit mode!\n"); - assert(0); - return; - } - if((r&63)==0) + assert(hr != EXCLUDE_REG); + if (r == 0) emit_zeroreg(hr); else { void *addr; @@ -545,18 +541,14 @@ static void emit_loadreg(int r, int hr) } u_int offset = (u_char *)addr - (u_char *)&dynarec_local; assert(offset<4096); - assem_debug("ldr %s,fp+%d\n",regname[hr],offset); + assem_debug("ldr %s,fp+%d # r%d\n",regname[hr],offset,r); output_w32(0xe5900000|rd_rn_rm(hr,FP,0)|offset); } } static void emit_storereg(int r, int hr) { - if(r&64) { - SysPrintf("64bit store in 32bit mode!\n"); - assert(0); - return; - } + assert(hr != EXCLUDE_REG); int addr = (int)&psxRegs.GPR.r[r]; switch (r) { //case HIREG: addr = &hi; break; @@ -566,7 +558,7 @@ static void emit_storereg(int r, int hr) } u_int offset = addr-(u_int)&dynarec_local; assert(offset<4096); - assem_debug("str %s,fp+%d\n",regname[hr],offset); + assem_debug("str %s,fp+%d # r%d\n",regname[hr],offset,r); output_w32(0xe5800000|rd_rn_rm(hr,FP,0)|offset); } @@ -1808,7 +1800,7 @@ static void inline_readstub(enum stub_type type, int i, u_int addr, { int rs=get_reg(regmap,target); int rt=get_reg(regmap,target); - if(rs<0) rs=get_reg(regmap,-1); + if(rs<0) rs=get_reg_temp(regmap); assert(rs>=0); u_int is_dynamic; uintptr_t host_addr = 0; @@ -1962,7 +1954,7 @@ static void do_writestub(int n) static void inline_writestub(enum stub_type type, int i, u_int addr, const signed char regmap[], int target, int adj, u_int reglist) { - int rs=get_reg(regmap,-1); + int rs=get_reg_temp(regmap); int rt=get_reg(regmap,target); assert(rs>=0); assert(rt>=0);