diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-08-09 22:18:53 -0400 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2010-08-09 22:18:53 -0400 |
commit | bb7c77ca75e857f90791b0dd1c04c8e2f19d0e3c (patch) | |
tree | 11005146d6defa876a988daad587ae558f04ecbb | |
parent | cc0a167ff2db9b097891883ded147af1d67e4407 (diff) |
atom: upstream parser update
fixes digital output problems on evergreen asics
-rw-r--r-- | src/AtomBios/CD_Operations.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/AtomBios/CD_Operations.c b/src/AtomBios/CD_Operations.c index ae270492..9d399d54 100644 --- a/src/AtomBios/CD_Operations.c +++ b/src/AtomBios/CD_Operations.c @@ -505,13 +505,16 @@ VOID ProcessMove(PARSER_TEMP_DATA STACK_BASED * pParserTempData) VOID ProcessMask(PARSER_TEMP_DATA STACK_BASED * pParserTempData) { + UINT8 src; pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); + src = pParserTempData->CD_Mask.SrcAlignment; pParserTempData->SourceData32=GetParametersDirect(pParserTempData); pParserTempData->Index=GetSource[pParserTempData->ParametersType.Source](pParserTempData); pParserTempData->SourceData32 <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]; pParserTempData->SourceData32 |= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]); pParserTempData->DestData32 &= pParserTempData->SourceData32; + pParserTempData->Index >>= SourceAlignmentShift[src]; pParserTempData->Index &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment]; pParserTempData->Index <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]; pParserTempData->DestData32 |= pParserTempData->Index; |