void _fastcall r4300i_LD (void) {
	DWORD Address =  GPR[Opcode.base].UW[0] + (short)Opcode.offset;	
	if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); }
	if (!r4300i_LD_VAddr(Address,&GPR[Opcode.rt].UDW)) {
		DisplayError("LD TLB: %X",Address);
	}
}
void _fastcall r4300i_LDC1 (void) {
	DWORD Address =  GPR[Opcode.base].UW[0] + (short)Opcode.offset;

	TEST_COP1_USABLE_EXCEPTION
	if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); }
	if (!r4300i_LD_VAddr(Address,&*(unsigned __int64 *)FPRDoubleLocation[Opcode.ft])) {
		DisplayError("LD TLB: %X",Address);
	}
}
Exemplo n.º 3
0
void r4300i_LD (void)
{
    uint32_t Address =  GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset;
    if ((Address & 7) != 0)
    {
        ADDRESS_ERROR_EXCEPTION(Address,1);
    }
    if (!r4300i_LD_VAddr(Address,&GPR[Opcode.rt].UDW))
    {
    }
}
Exemplo n.º 4
0
void r4300i_LDC1 (void)
{
    uint32_t Address =  GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset;

    TEST_COP1_USABLE_EXCEPTION
    if ((Address & 7) != 0)
    {
        ADDRESS_ERROR_EXCEPTION(Address,1);
    }
    if (!r4300i_LD_VAddr(Address,&*(uint64_t *)FPRDoubleLocation[Opcode.ft]))
    {
    }
}
void _fastcall r4300i_LDL (void) {
	DWORD Offset, Address;
	QWORD Value;
	
	Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset;
	Offset  = Address & 7;

	if (!r4300i_LD_VAddr((Address & ~7),&Value)) {
		DisplayError("LDL TLB: %X",Address);
		return;
	}
	GPR[Opcode.rt].DW = GPR[Opcode.rt].DW & LDL_MASK[Offset];
	GPR[Opcode.rt].DW += Value << LDL_SHIFT[Offset];
}
Exemplo n.º 6
0
void _fastcall r4300i_LD (void) {
	DWORD Address =  GPR[Opcode.base].UW[0] + (short)Opcode.offset;	
	if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); }
	if (!r4300i_LD_VAddr(Address,&GPR[Opcode.rt].UDW)) {
#ifndef EXTERNAL_RELEASE
		DisplayError("LD TLB: %X",Address);
#endif
	}
#ifdef Interpreter_StackTest
	if (Opcode.rt == 29) {
		StackValue = GPR[Opcode.rt].W[0];
	}
#endif
}
Exemplo n.º 7
0
void r4300i_LDL (void)
{
    uint32_t Offset, Address;
    uint64_t Value;

    Address = GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset;
    Offset  = Address & 7;

    if (!r4300i_LD_VAddr((Address & ~7),&Value))
    {
        return;
    }
    GPR[Opcode.rt].DW = GPR[Opcode.rt].DW & LDL_MASK[Offset];
    GPR[Opcode.rt].DW += Value << LDL_SHIFT[Offset];
}
Exemplo n.º 8
0
void  r4300i_LDR (void) {
	s32 Offset, Address;
	u64 Value;

	Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset;
	Offset  = Address & 7;

	if (!r4300i_LD_VAddr((Address & ~7),&Value)) {
		//DisplayError("LDL TLB: %X",Address);
		return;
	}

	GPR[Opcode.rt].DW = GPR[Opcode.rt].DW & LDR_MASK[Offset];
	GPR[Opcode.rt].DW += Value >> LDR_SHIFT[Offset];

}
Exemplo n.º 9
0
void _fastcall r4300i_LDR (void) {
	DWORD Offset, Address;
	QWORD Value;
	
	Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset;
	Offset  = Address & 7;

	if (!r4300i_LD_VAddr((Address & ~7),&Value)) {
#ifndef EXTERNAL_RELEASE
		DisplayError("LDL TLB: %X",Address);
#endif
		return;
	}

	GPR[Opcode.rt].DW = GPR[Opcode.rt].DW & LDR_MASK[Offset];
	GPR[Opcode.rt].DW += Value >> LDR_SHIFT[Offset];

}
Exemplo n.º 10
0
void _fastcall r4300i_SDR (void) {
	DWORD Offset, Address;
	QWORD Value;
	
	Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset;
	Offset  = Address & 7;

	if (!r4300i_LD_VAddr((Address & ~7),&Value)) {
		DisplayError("SDL TLB: %X",Address);
		return;
	}
	
	Value &= SDR_MASK[Offset];
	Value += GPR[Opcode.rt].UDW << SDR_SHIFT[Offset];

	if (!r4300i_SD_VAddr((Address & ~7),Value)) {
		DisplayError("SDL TLB: %X",Address);
	}
}
Exemplo n.º 11
0
void  r4300i_SDL (void) {
	s32 Offset, Address;
	u64 Value;

	Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset;
	Offset  = Address & 7;

	if (!r4300i_LD_VAddr((Address & ~7),&Value)) {
		//DisplayError("SDL TLB: %X",Address);
		return;
	}

	Value &= SDL_MASK[Offset];
	Value += GPR[Opcode.rt].UDW >> SDL_SHIFT[Offset];

	if (!r4300i_SD_VAddr((Address & ~7),Value)) {
		//DisplayError("SDL TLB: %X",Address);
	}
}
Exemplo n.º 12
0
void r4300i_SDR (void)
{
    uint32_t Offset, Address;
    uint64_t Value;

    Address = GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset;
    Offset  = Address & 7;

    if (!r4300i_LD_VAddr((Address & ~7),&Value))
    {
        return;
    }

    Value &= SDR_MASK[Offset];
    Value += GPR[Opcode.rt].UDW << SDR_SHIFT[Offset];

    if (!r4300i_SD_VAddr((Address & ~7),Value))
    {
    }
}
Exemplo n.º 13
0
void _fastcall r4300i_SDL (void) {
	DWORD Offset, Address;
	QWORD Value;
	
	Address = GPR[Opcode.base].UW[0] + (short)Opcode.offset;
	Offset  = Address & 7;

	if (!r4300i_LD_VAddr((Address & ~7),&Value)) {
#ifndef EXTERNAL_RELEASE
		DisplayError("SDL TLB: %X",Address);
#endif
		return;
	}
	
	Value &= SDL_MASK[Offset];
	Value += GPR[Opcode.rt].UDW >> SDL_SHIFT[Offset];

	if (!r4300i_SD_VAddr((Address & ~7),Value)) {
#ifndef EXTERNAL_RELEASE
		DisplayError("SDL TLB: %X",Address);
#endif
	}
}