mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	
						commit
						f2a7c2b3b7
					
				
					 1 changed files with 19 additions and 20 deletions
				
			
		|  | @ -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,56 +5976,53 @@ 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; | ||||
|                 } | ||||
|                 } | ||||
|                 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; | ||||
|                 } | ||||
|                 } | ||||
|                 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); | ||||
|         INC_PC(sizeof(ldst_inst)); | ||||
|         FETCH_INST; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue