commit
						f2a7c2b3b7
					
				@ -4362,6 +4362,8 @@ unsigned InterpreterMainLoop(ARMul_State* state) {
 | 
			
		||||
                        cpu->Reg[14] = Memory::Read32(addr);
 | 
			
		||||
                    else
 | 
			
		||||
                        cpu->Reg_usr[1] = Memory::Read32(addr);
 | 
			
		||||
 | 
			
		||||
                    addr += 4;
 | 
			
		||||
                }
 | 
			
		||||
            } else if (!BIT(inst, 22)) {
 | 
			
		||||
                for(int i = 0; i < 16; i++ ){
 | 
			
		||||
@ -5974,54 +5976,51 @@ unsigned InterpreterMainLoop(ARMul_State* state) {
 | 
			
		||||
            ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
 | 
			
		||||
            unsigned int inst = inst_cream->inst;
 | 
			
		||||
 | 
			
		||||
            int i;
 | 
			
		||||
            unsigned int Rn = BITS(inst, 16, 19);
 | 
			
		||||
            unsigned int old_RN = cpu->Reg[Rn];
 | 
			
		||||
 | 
			
		||||
            inst_cream->get_addr(cpu, inst_cream->inst, addr, 0);
 | 
			
		||||
            if (BIT(inst_cream->inst, 22) == 1) {
 | 
			
		||||
                for (i = 0; i < 13; i++) {
 | 
			
		||||
                    if(BIT(inst_cream->inst, i)) {
 | 
			
		||||
                for (int i = 0; i < 13; i++) {
 | 
			
		||||
                    if (BIT(inst_cream->inst, i)) {
 | 
			
		||||
                        Memory::Write32(addr, cpu->Reg[i]);
 | 
			
		||||
                        addr += 4;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                if (BIT(inst_cream->inst, 13)) {
 | 
			
		||||
                    if (cpu->Mode == USER32MODE) {
 | 
			
		||||
                        Memory::Write32(addr, cpu->Reg[i]);
 | 
			
		||||
                        addr += 4;
 | 
			
		||||
                    } else {
 | 
			
		||||
                    if (cpu->Mode == USER32MODE)
 | 
			
		||||
                        Memory::Write32(addr, cpu->Reg[13]);
 | 
			
		||||
                    else
 | 
			
		||||
                        Memory::Write32(addr, cpu->Reg_usr[0]);
 | 
			
		||||
                        addr += 4;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    addr += 4;
 | 
			
		||||
                }
 | 
			
		||||
                if (BIT(inst_cream->inst, 14)) {
 | 
			
		||||
                    if (cpu->Mode == USER32MODE) {
 | 
			
		||||
                        Memory::Write32(addr, cpu->Reg[i]);
 | 
			
		||||
                        addr += 4;
 | 
			
		||||
                    } else {
 | 
			
		||||
                    if (cpu->Mode == USER32MODE)
 | 
			
		||||
                        Memory::Write32(addr, cpu->Reg[14]);
 | 
			
		||||
                    else
 | 
			
		||||
                        Memory::Write32(addr, cpu->Reg_usr[1]);
 | 
			
		||||
                        addr += 4;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    addr += 4;
 | 
			
		||||
                }
 | 
			
		||||
                if (BIT(inst_cream->inst, 15)) {
 | 
			
		||||
                    Memory::Write32(addr, cpu->Reg_usr[1] + 8);
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                for( i = 0; i < 15; i++ ) {
 | 
			
		||||
                    if(BIT(inst_cream->inst, i)) {
 | 
			
		||||
                        if(i == Rn)
 | 
			
		||||
                for (int i = 0; i < 15; i++) {
 | 
			
		||||
                    if (BIT(inst_cream->inst, i)) {
 | 
			
		||||
                        if (i == Rn)
 | 
			
		||||
                            Memory::Write32(addr, old_RN);
 | 
			
		||||
                        else
 | 
			
		||||
                            Memory::Write32(addr, cpu->Reg[i]);
 | 
			
		||||
 | 
			
		||||
                        addr += 4;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Check PC reg
 | 
			
		||||
                if(BIT(inst_cream->inst, i)) {
 | 
			
		||||
                if (BIT(inst_cream->inst, 15))
 | 
			
		||||
                    Memory::Write32(addr, cpu->Reg_usr[1] + 8);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        cpu->Reg[15] += GET_INST_SIZE(cpu);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user