PowerPC: properly mirror SO bit from XER into CR0 [R. Belmont]

This commit is contained in:
R. Belmont 2012-03-04 20:03:37 +00:00
parent 0d744978dc
commit b287db448d

View File

@ -2271,10 +2271,14 @@ static void generate_compute_flags(powerpc_state *ppc, drcuml_block *block, cons
{
UML_ROLAND(block, I0, I0, 31, 1); // roland i0,i0,31,0x0001
UML_OR(block, XERSO32, XERSO32, I0); // or [xerso],i0
UML_OR(block, CR32(0), I1, I0); // or [cr0],i1,i0
UML_AND(block, CR32(0), CR32(0), 0xfffffffe); // and [cr0], [cr0], 0xfffffffe (clear SO copy in CR32)
UML_OR(block, CR32(0), I1, XERSO32); // or [cr0],i1,[xerso]
}
else
UML_OR(block, CR32(0), I1, XERSO32); // or [cr0],i1,[xerso]
{
UML_AND(block, CR32(0), CR32(0), 0xfffffffe); // and [cr0], [cr0], 0xfffffffe (clear SO copy in CR32)
UML_OR(block, CR32(0), I1, XERSO32); // or [cr0],i1,[xerso] (OR in new value from XERSO)
}
}
/*-------------------------------------------------