66c66,67
< uint64_t _dest, uint64_t _src1, uint64_t _src2) const
---
> uint64_t _dest, uint64_t _src1, uint64_t _src2,
> bool subtract) const
67a69
> DPRINTF(Sparc, "flagMask = %#x\n", flagMask);
69,71c71,76
< if(flagMask & CFBit && findCarry(dataSize, _dest, _src1, _src2))
< flags |= CFBit;
< if(flagMask & PFBit && findParity(dataSize, _dest))
---
> if(flagMask & CFBit)
> if(findCarry(dataSize*8, _dest, _src1, _src2))
> flags |= CFBit;
> if(subtract)
> flags ^= CFBit;
> if(flagMask & PFBit && findParity(dataSize*8, _dest))
73c78
< if(flagMask & ECFBit && findCarry(dataSize, _dest, _src1, _src2))
---
> if(flagMask & ECFBit && findCarry(dataSize*8, _dest, _src1, _src2))
75,77c80,85
< if(flagMask & AFBit && findCarry(4, _dest, _src1, _src2))
< flags |= AFBit;
< if(flagMask & EZFBit && findZero(dataSize, _dest))
---
> if(flagMask & AFBit)
> if(findCarry(4, _dest, _src1, _src2))
> flags |= AFBit;
> if(subtract)
> flags ^= AFBit;
> if(flagMask & EZFBit && findZero(dataSize*8, _dest))
79c87
< if(flagMask & ZFBit && findZero(dataSize, _dest))
---
> if(flagMask & ZFBit && findZero(dataSize*8, _dest))
81c89
< if(flagMask & SFBit && findNegative(dataSize, _dest))
---
> if(flagMask & SFBit && findNegative(dataSize*8, _dest))
83c91
< if(flagMask & OFBit && findOverflow(dataSize, _dest, _src1, _src2))
---
> if(flagMask & OFBit && findOverflow(dataSize*8, _dest, _src1, _src2))