if (psxCP2[i] != psxNULL)
gte_handlers[i] = psxCP2[i];
- psxHLEt_addr = (void *)psxHLEt; // FIXME: rm
return 0;
}
unsigned char byte;
int pending_exception;
unsigned int next_interupt;
-void *psxHLEt_addr;
void new_dynarec_init() {}
int new_dyna_start() {}
void new_dynarec_cleanup() {}
.global memory_map
/* psx */
.global psxRegs
- .global psxHLEt_addr
.bss
.align 4
.size intCycle, 128
psxRegs_end = intCycle + 128
-psxHLEt_addr = psxRegs_end
- .type psxHLEt_addr, %object
- .size psxHLEt_addr, 4
-align0 = psxHLEt_addr + 4 /* just for alignment */
+align0 = psxRegs_end /* just for alignment */
.type align0, %object
- .size align0, 4
-branch_target = align0 + 4
+ .size align0, 8
+branch_target = align0 + 8
.type branch_target, %object
.size branch_target, 4
mini_ht = branch_target + 4
jump_hlecall:
ldr r2, [fp, #last_count-dynarec_local]
str r0, [fp, #pcaddr-dynarec_local]
- and r1, r1, #7
add r2, r2, r10
- ldr r3, [fp, #psxHLEt_addr-dynarec_local] /* psxHLEt */
str r2, [fp, #cycle-dynarec_local] /* PCSX cycle counter */
adr lr, pcsx_return
- ldr pc, [r3, r1, lsl #2] @ FIXME
+ bx r1
.size jump_hlecall, .-jump_hlecall
new_dyna_leave:
assert(ccreg==HOST_CCREG);
assert(!is_delayslot);
emit_movimm(start+i*4+4,0); // Get PC
- emit_movimm(source[i],1); // opcode
+ emit_movimm((int)psxHLEt[source[i]&7],1);
emit_addimm(HOST_CCREG,CLOCK_DIVIDER*ccadj[i],HOST_CCREG); // XXX
- emit_jmp((int)jump_hlecall); // XXX
+ emit_jmp((int)jump_hlecall);
}
void ds_assemble(int i,struct regstat *i_regs)