diff options
Diffstat (limited to 'src/AtomBios')
-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; |