summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-08-09 22:18:53 -0400
committerAlex Deucher <alexdeucher@gmail.com>2010-08-09 22:18:53 -0400
commitbb7c77ca75e857f90791b0dd1c04c8e2f19d0e3c (patch)
tree11005146d6defa876a988daad587ae558f04ecbb
parentcc0a167ff2db9b097891883ded147af1d67e4407 (diff)
atom: upstream parser update
fixes digital output problems on evergreen asics
-rw-r--r--src/AtomBios/CD_Operations.c3
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;