mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 14:56:40 +08:00 
			
		
		
		
	Merge pull request #2015 from MerryMage/upstream-smla
dyncom: Read-after-write in SMLA
This commit is contained in:
		
						commit
						5b9e41bf1c
					
				| @ -2820,10 +2820,12 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) { | |||||||
|                 operand2 = (BIT(RS, 15)) ? (BITS(RS, 0, 15) | 0xffff0000) : BITS(RS, 0, 15); |                 operand2 = (BIT(RS, 15)) ? (BITS(RS, 0, 15) | 0xffff0000) : BITS(RS, 0, 15); | ||||||
|             else |             else | ||||||
|                 operand2 = (BIT(RS, 31)) ? (BITS(RS, 16, 31) | 0xffff0000) : BITS(RS, 16, 31); |                 operand2 = (BIT(RS, 31)) ? (BITS(RS, 16, 31) | 0xffff0000) : BITS(RS, 16, 31); | ||||||
|             RD = operand1 * operand2 + RN; |  | ||||||
| 
 | 
 | ||||||
|             if (AddOverflow(operand1 * operand2, RN, RD)) |             u32 product = operand1 * operand2; | ||||||
|  |             u32 result = product + RN; | ||||||
|  |             if (AddOverflow(product, RN, result)) | ||||||
|                 cpu->Cpsr |= (1 << 27); |                 cpu->Cpsr |= (1 << 27); | ||||||
|  |             RD = result; | ||||||
|         } |         } | ||||||
|         cpu->Reg[15] += cpu->GetInstructionSize(); |         cpu->Reg[15] += cpu->GetInstructionSize(); | ||||||
|         INC_PC(sizeof(smla_inst)); |         INC_PC(sizeof(smla_inst)); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user