Esempio n. 1
0
void r4300i_LL (void)
{
    uint32_t Address =  GPR[Opcode.base].UW[0] + (int16_t)Opcode.offset;
    uintptr_t ll = 0;
    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("LW TLB: %X",Address);
        //}
        TLB_READ_EXCEPTION(Address);
    }
    else
    {
        GPR[Opcode.rt].DW = GPR[Opcode.rt].W[0];
    }
    LLBit = 1;
    LLAddr = Address;
    ll = LLAddr;
    TranslateVaddr(&ll);
    LLAddr = ll;

}
void _fastcall r4300i_LL (void) {
	DWORD Address =  GPR[Opcode.base].UW[0] + (short)Opcode.offset;	
	if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); }

	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];
	}
	LLBit = 1;
	LLAddr = Address;
	TranslateVaddr(&LLAddr);
}