コード例 #1
0
ファイル: interpreterOpsPS3.c プロジェクト: n1ckhr0/p64-ps3
void  r4300i_LW (void) {
	s32 Address =  GPR[Opcode.base].UW[0] + (short)Opcode.offset;
	if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); }

#if (!defined(EXTERNAL_RELEASE))
	Log_LW(PROGRAM_COUNTER,Address);
#endif
	if (Opcode.rt == 0) { return; }

	if (!r4300i_LW_VAddr(Address,&GPR[Opcode.rt].UW[0])) {
		if (ShowTLBMisses) {
			//DisplayError("LW TLB: %X",Address);
		}
		TLB_READ_EXCEPTION(Address);
	} else {
		GPR[Opcode.rt].DW = GPR[Opcode.rt].W[0];
		//TranslateVaddr(&Address);
		//if (Address == 0x00090AA0) {
		//	LogMessage("%X: Read %X from %X",PROGRAM_COUNTER,GPR[Opcode.rt].UW[0],GPR[Opcode.base].UW[0] + (short)Opcode.offset);
		//}
	}
}
コード例 #2
0
ファイル: interpreter_ops.c プロジェクト: derselbst/lazyusf
void r4300i_LW (void)
{
    uint32_t Address =  GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset;

    if (Opcode.rt == 0)
    {
        return;
    }


    if (!r4300i_LW_VAddr(Address,&GPR[Opcode.rt].UW[0]))
    {
        //if (ShowTLBMisses) {
        printf("LW TLB: %X",Address);
        //}
        TLB_READ_EXCEPTION(Address);
    }
    else
    {
        GPR[Opcode.rt].DW = GPR[Opcode.rt].W[0];
    }
}
コード例 #3
0
ファイル: interpreter_ops.c プロジェクト: derselbst/lazyusf
void r4300i_LWU (void)
{
    uint32_t Address =  GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset;
    if ((Address & 3) != 0)
    {
        ADDRESS_ERROR_EXCEPTION(Address,1);
    }
    if (Opcode.rt == 0)
    {
        return;
    }

    if (!r4300i_LW_VAddr(Address,&GPR[Opcode.rt].UW[0]))
    {
        //if (ShowTLBMisses) {
        DisplayError("LWU TLB: %X",Address);
        //}
        TLB_READ_EXCEPTION(Address);
    }
    else
    {
        GPR[Opcode.rt].UDW = GPR[Opcode.rt].UW[0];
    }
}