Lines Matching defs:pParserTempData

49 VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
50 VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
51 VOID PutDataWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
52 VOID PutDataFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
53 VOID PutDataPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
54 VOID PutDataMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
56 UINT32 GetParametersDirect32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
57 UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
58 UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
60 UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
61 UINT32 GetParametersPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
62 UINT32 GetParametersWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
63 UINT32 GetParametersFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
64 UINT32 GetParametersPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
65 UINT32 GetParametersMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
67 VOID SkipParameters16(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
68 VOID SkipParameters8(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
70 UINT32 GetParametersIndirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
71 UINT32 GetParametersDirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
74 UINT8 GetTrueIndexInMasterTable(PARSER_TEMP_DATA STACK_BASED * pParserTempData, UINT8 IndexInMasterTable);
158 VOID IndirectIOCommand(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
159 VOID IndirectIOCommand_MOVE(PARSER_TEMP_DATA STACK_BASED * pParserTempData, UINT32 temp);
160 VOID IndirectIOCommand_MOVE_INDEX(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
161 VOID IndirectIOCommand_MOVE_ATTR(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
162 VOID IndirectIOCommand_MOVE_DATA(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
163 VOID IndirectIOCommand_SET(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
164 VOID IndirectIOCommand_CLEAR(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
181 VOID IndirectIOCommand(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
186 VOID IndirectIOCommand_MOVE_INDEX(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
188 pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[3]);
189 pParserTempData->IndirectData |=(((pParserTempData->Index >> pParserTempData->IndirectIOTablePointer[2]) &
190 (0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1]))) << pParserTempData->IndirectIOTablePointer[3]);
193 VOID IndirectIOCommand_MOVE_ATTR(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
195 pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[3]);
196 pParserTempData->IndirectData |=(((pParserTempData->AttributesData >> pParserTempData->IndirectIOTablePointer[2])
197 & (0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1]))) << pParserTempData->IndirectIOTablePointer[3]);
200 VOID IndirectIOCommand_MOVE_DATA(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
202 pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[3]);
203 pParserTempData->IndirectData |=(((pParserTempData->DestData32 >> pParserTempData->IndirectIOTablePointer[2])
204 & (0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1]))) << pParserTempData->IndirectIOTablePointer[3]);
208 VOID IndirectIOCommand_SET(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
210 pParserTempData->IndirectData |= ((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]);
213 VOID IndirectIOCommand_CLEAR(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
215 pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]);
246 UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
248 // if ((pParserTempData->IndirectData & 0x7f)==INDIRECT_IO_MM) pParserTempData->IndirectData|=pParserTempData->CurrentPortID;
249 // pParserTempData->IndirectIOTablePointer=pParserTempData->IndirectIOTable;
250 while (*pParserTempData->IndirectIOTablePointer)
252 if ((pParserTempData->IndirectIOTablePointer[0] == INDIRECTIO_ID) &&
253 (pParserTempData->IndirectIOTablePointer[1] == pParserTempData->IndirectData))
255 pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize;
256 while (*pParserTempData->IndirectIOTablePointer != INDIRECTIO_END_OF_ID)
258 IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].func(pParserTempData);
259 pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize;
261 pParserTempData->IndirectIOTablePointer-=UINT16LE_TO_CPU(ldw_u((uint16_t *)(pParserTempData->IndirectIOTablePointer+1)));
262 pParserTempData->IndirectIOTablePointer++;
263 return pParserTempData->IndirectData;
264 } else pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize;
271 VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
273 pParserTempData->Index=(UINT32)UINT16LE_TO_CPU(pParserTempData->pCmd->Parameters.WordXX.PA_Destination);
274 pParserTempData->Index+=pParserTempData->CurrentRegBlock;
275 switch(pParserTempData->Multipurpose.CurrentPort){
277 if (pParserTempData->CurrentPortID == INDIRECT_IO_MM)
279 if (pParserTempData->Index==0) pParserTempData->DestData32 <<= 2;
280 WriteReg32( pParserTempData);
283 pParserTempData->IndirectData=pParserTempData->CurrentPortID+INDIRECT_IO_WRITE;
284 IndirectInputOutput(pParserTempData);
288 WritePCIFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
291 WriteIOFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
296 VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
298 stl_u(CPU_TO_UINT32LE(pParserTempData->DestData32),
299 pParserTempData->pDeviceData->pParameterSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination);
302 VOID PutDataWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
304 if (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination < WS_QUOTIENT_C)
305 *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) = pParserTempData->DestData32;
307 switch (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination)
310 pParserTempData->MultiplicationOrDivision.Division.Reminder32=pParserTempData->DestData32;
313 pParserTempData->MultiplicationOrDivision.Division.Quotient32=pParserTempData->DestData32;
317 pParserTempData->CurrentDataBlock=(UINT16)pParserTempData->DestData32;
319 pParserTempData->CurrentDataBlock=(UINTN)pParserTempData->DestData32;
323 pParserTempData->Shift2MaskConverter=(UINT8)pParserTempData->DestData32;
326 pParserTempData->CurrentFB_Window=pParserTempData->DestData32;
329 pParserTempData->AttributesData=(UINT16)pParserTempData->DestData32;
332 pParserTempData->CurrentRegBlock=(UINT16)pParserTempData->DestData32;
338 VOID PutDataFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
340 pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.ByteXX.PA_Destination;
342 pParserTempData->Index+=(pParserTempData->CurrentFB_Window>>2);
343 WriteFrameBuffer32(pParserTempData);
346 VOID PutDataPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
348 pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.ByteXX.PA_Destination;
349 WritePLL32( pParserTempData );
352 VOID PutDataMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
354 pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.ByteXX.PA_Destination;
355 WriteMC32( pParserTempData );
359 VOID SkipParameters8(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
361 pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
364 VOID SkipParameters16(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
366 pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
370 UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
372 pParserTempData->Index=UINT16LE_TO_CPU(ldw_u((uint16_t *)pParserTempData->pWorkingTableData->IP));
373 pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
374 pParserTempData->Index+=pParserTempData->CurrentRegBlock;
375 switch(pParserTempData->Multipurpose.CurrentPort)
378 return ReadPCIFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
380 return ReadIOFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
383 if (pParserTempData->CurrentPortID == INDIRECT_IO_MM) return ReadReg32( pParserTempData );
386 pParserTempData->IndirectData=pParserTempData->CurrentPortID+INDIRECT_IO_READ;
387 return IndirectInputOutput(pParserTempData);
392 UINT32 GetParametersPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
395 pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
396 pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
397 data = UINT32LE_TO_CPU(ldl_u(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->Index));
401 UINT32 GetParametersWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
403 pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
404 pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
405 if (pParserTempData->Index < WS_QUOTIENT_C)
406 return *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->Index);
408 switch (pParserTempData->Index)
411 return pParserTempData->MultiplicationOrDivision.Division.Reminder32;
413 return pParserTempData->MultiplicationOrDivision.Division.Quotient32;
415 return (UINT32)pParserTempData->CurrentDataBlock;
417 return ((UINT32)1) << pParserTempData->Shift2MaskConverter;
419 return ~(((UINT32)1) << pParserTempData->Shift2MaskConverter);
421 return pParserTempData->CurrentFB_Window;
423 return pParserTempData->AttributesData;
425 return (UINT32)pParserTempData->CurrentRegBlock;
431 UINT32 GetParametersFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
433 pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
434 pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
435 pParserTempData->Index+=(pParserTempData->CurrentFB_Window>>2);
436 return ReadFrameBuffer32(pParserTempData);
439 UINT32 GetParametersPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
441 pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
442 pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
443 return ReadPLL32( pParserTempData );
446 UINT32 GetParametersMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
448 pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
449 pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
450 return ReadMC32( pParserTempData );
454 UINT32 GetParametersIndirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
458 pParserTempData->Index=UINT16LE_TO_CPU(ldw_u((uint16_t *)pParserTempData->pWorkingTableData->IP));
459 pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
460 ret = UINT32LE_TO_CPU(ldl_u((UINT32*)(RELATIVE_TO_BIOS_IMAGE(pParserTempData->Index)+pParserTempData->CurrentDataBlock)));
464 UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
466 pParserTempData->CD_Mask.SrcAlignment=alignmentByte0;
467 pParserTempData->Index=*(UINT8*)pParserTempData->pWorkingTableData->IP;
468 pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
469 return pParserTempData->Index;
472 UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
474 pParserTempData->CD_Mask.SrcAlignment=alignmentLowerWord;
475 pParserTempData->Index=UINT16LE_TO_CPU(ldw_u((uint16_t *)pParserTempData->pWorkingTableData->IP));
476 pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
477 return pParserTempData->Index;
480 UINT32 GetParametersDirect32(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
482 pParserTempData->CD_Mask.SrcAlignment=alignmentDword;
483 pParserTempData->Index=UINT32LE_TO_CPU(ldl_u((UINT32*)pParserTempData->pWorkingTableData->IP));
484 pParserTempData->pWorkingTableData->IP+=sizeof(UINT32);
485 return pParserTempData->Index;
489 UINT32 GetParametersDirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
491 return GetParametersDirectArray[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
495 VOID CommonSourceDataTransformation(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
497 pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
498 pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
499 pParserTempData->SourceData32 <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
502 VOID CommonOperationDataTransformation(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
504 pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
505 pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
506 pParserTempData->DestData32 >>= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
507 pParserTempData->DestData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
510 VOID ProcessMove(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
512 if (pParserTempData->CD_Mask.SrcAlignment!=alignmentDword)
514 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
517 SkipDestination[pParserTempData->ParametersType.Destination](pParserTempData);
519 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
521 if (pParserTempData->CD_Mask.SrcAlignment!=alignmentDword)
523 pParserTempData->DestData32 &= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]);
524 CommonSourceDataTransformation(pParserTempData);
525 pParserTempData->DestData32 |= pParserTempData->SourceData32;
528 pParserTempData->DestData32=pParserTempData->SourceData32;
530 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
533 VOID ProcessMask(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
537 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
538 src = pParserTempData->CD_Mask.SrcAlignment;
539 pParserTempData->SourceData32=GetParametersDirect(pParserTempData);
540 pParserTempData->Index=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
541 pParserTempData->SourceData32 <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
542 pParserTempData->SourceData32 |= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]);
543 pParserTempData->DestData32 &= pParserTempData->SourceData32;
544 pParserTempData->Index >>= SourceAlignmentShift[src];
545 pParserTempData->Index &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
546 pParserTempData->Index <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
547 pParserTempData->DestData32 |= pParserTempData->Index;
548 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
551 VOID ProcessAnd(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
553 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
554 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
555 pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
556 pParserTempData->SourceData32 <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
557 pParserTempData->SourceData32 |= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]);
558 pParserTempData->DestData32 &= pParserTempData->SourceData32;
559 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
562 VOID ProcessOr(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
564 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
565 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
566 CommonSourceDataTransformation(pParserTempData);
567 pParserTempData->DestData32 |= pParserTempData->SourceData32;
568 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
571 VOID ProcessXor(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
573 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
574 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
575 CommonSourceDataTransformation(pParserTempData);
576 pParserTempData->DestData32 ^= pParserTempData->SourceData32;
577 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
580 VOID ProcessShl(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
582 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
583 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
584 CommonSourceDataTransformation(pParserTempData);
585 pParserTempData->DestData32 <<= pParserTempData->SourceData32;
586 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
589 VOID ProcessShr(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
591 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
592 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
593 CommonSourceDataTransformation(pParserTempData);
594 pParserTempData->DestData32 >>= pParserTempData->SourceData32;
595 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
599 VOID ProcessADD(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
601 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
602 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
603 CommonSourceDataTransformation(pParserTempData);
604 pParserTempData->DestData32 += pParserTempData->SourceData32;
605 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
608 VOID ProcessSUB(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
610 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
611 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
612 CommonSourceDataTransformation(pParserTempData);
613 pParserTempData->DestData32 -= pParserTempData->SourceData32;
614 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
617 VOID ProcessMUL(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
619 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
620 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
621 CommonOperationDataTransformation(pParserTempData);
622 pParserTempData->MultiplicationOrDivision.Multiplication.Low32Bit=pParserTempData->DestData32 * pParserTempData->SourceData32;
625 VOID ProcessDIV(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
627 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
628 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
630 CommonOperationDataTransformation(pParserTempData);
631 pParserTempData->MultiplicationOrDivision.Division.Quotient32=
632 pParserTempData->DestData32 / pParserTempData->SourceData32;
633 pParserTempData->MultiplicationOrDivision.Division.Reminder32=
634 pParserTempData->DestData32 % pParserTempData->SourceData32;
638 VOID ProcessCompare(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
640 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
641 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
643 CommonOperationDataTransformation(pParserTempData);
646 if (pParserTempData->DestData32==pParserTempData->SourceData32)
647 pParserTempData->CompareFlags = Equal;
649 pParserTempData->CompareFlags =
650 (UINT8)((pParserTempData->DestData32<pParserTempData->SourceData32) ? Below : Above);
654 VOID ProcessClear(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
656 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
658 if (pParserTempData->ParametersType.Destination == 0 &&
659 pParserTempData->Multipurpose.CurrentPort == ATI_RegsPort &&
660 pParserTempData->Index == 0) {
661 pParserTempData->DestData32 = 0;
663 pParserTempData->DestData32 &= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]);
664 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
668 VOID ProcessShift(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
670 UINT32 mask = AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
671 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
672 pParserTempData->SourceData32=GetParametersDirect8(pParserTempData);
675 pParserTempData->Index = pParserTempData->DestData32 & ~mask;
676 pParserTempData->DestData32 &= mask;
678 if (pParserTempData->pCmd->Header.Opcode < SHIFT_RIGHT_REG_OPCODE)
679 pParserTempData->DestData32 <<= pParserTempData->SourceData32; else
680 pParserTempData->DestData32 >>= pParserTempData->SourceData32;
683 pParserTempData->DestData32 &= mask;
685 pParserTempData->DestData32 |= pParserTempData->Index;
688 PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
691 VOID ProcessTest(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
693 pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
694 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
695 CommonOperationDataTransformation(pParserTempData);
696 pParserTempData->CompareFlags =
697 (UINT8)((pParserTempData->DestData32 & pParserTempData->SourceData32) ? NotEqual : Equal);
701 VOID ProcessSetFB_Base(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
703 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
704 pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
705 pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
706 pParserTempData->CurrentFB_Window=pParserTempData->SourceData32;
709 VOID ProcessSwitch(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
710 pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
711 pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
712 pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
714 while ( UINT16LE_TO_CPU(ldw_u((uint16_t *)pParserTempData->pWorkingTableData->IP)) != (((UINT16)NOP_OPCODE << 8)+NOP_OPCODE))
716 if (*pParserTempData->pWorkingTableData->IP == 'c')
718 pParserTempData->pWorkingTableData->IP++;
719 pParserTempData->DestData32=GetParametersDirect(pParserTempData);
720 pParserTempData->Index=GetParametersDirect16(pParserTempData);
721 if (pParserTempData->SourceData32 == pParserTempData->DestData32)
723 pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(pParserTempData->Index);
728 pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
732 VOID cmdSetDataBlock(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
736 value=((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
737 if (value == 0) pParserTempData->CurrentDataBlock=0; else
741 pParserTempData->CurrentDataBlock= (UINT16)(pParserTempData->pWorkingTableData->pTableHead-pParserTempData->pDeviceData->pBIOS_Image);
744 pMasterDataTable = GetDataMasterTablePointer(pParserTempData->pDeviceData);
745 pParserTempData->CurrentDataBlock= UINT16LE_TO_CPU((TABLE_UNIT_TYPE)((PTABLE_UNIT_TYPE)pMasterDataTable)[value]);
748 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
751 VOID cmdSet_ATI_Port(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
753 pParserTempData->Multipurpose.CurrentPort=ATI_RegsPort;
754 pParserTempData->CurrentPortID = (UINT8)UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination);
755 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
758 VOID cmdSet_Reg_Block(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
760 pParserTempData->CurrentRegBlock = UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination);
761 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
766 VOID cmdSet_X_Port(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
767 pParserTempData->Multipurpose.CurrentPort=pParserTempData->ParametersType.Destination;
768 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_ONLY);
772 VOID cmdDelay_Millisec(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
773 pParserTempData->SourceData32 =
774 ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
775 DelayMilliseconds(pParserTempData);
776 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
778 VOID cmdDelay_Microsec(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
779 pParserTempData->SourceData32 =
780 ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
781 DelayMicroseconds(pParserTempData);
782 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
785 VOID ProcessPostChar(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
787 pParserTempData->SourceData32 =
788 ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
789 PostCharOutput(pParserTempData);
790 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
793 VOID ProcessDebug(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
795 pParserTempData->SourceData32 =
796 ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
797 CallerDebugFunc(pParserTempData);
798 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
802 VOID ProcessDS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
804 pParserTempData->pWorkingTableData->IP+=UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination)+sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
808 VOID cmdCall_Table(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
811 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
812 MasterTableOffset = GetCommandMasterTablePointer(pParserTempData->pDeviceData);
813 if(((PTABLE_UNIT_TYPE)MasterTableOffset)[((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value]!=0 ) // if the offset is not ZERO
817 pParserTempData->CommandSpecific.IndexInMasterTable=GetTrueIndexInMasterTable(pParserTempData,((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value);
819 lTableAttr = GetCommandTableAttribute(pParserTempData->pWorkingTableData->pTableHead);
820 pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable = (lTableAttr.PS_SizeInBytes >>2);
821 pParserTempData->pDeviceData->pParameterSpace+=
822 pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable;
823 pParserTempData->Status=CD_CALL_TABLE;
824 pParserTempData->pCmd=(GENERIC_ATTRIBUTE_COMMAND*)MasterTableOffset;
829 VOID cmdNOP_(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
834 static VOID NotImplemented(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
836 pParserTempData->Status = CD_NOT_IMPLEMENTED;
840 VOID ProcessJump(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
842 if ((pParserTempData->ParametersType.Destination == NoCondition) ||
843 (pParserTempData->ParametersType.Destination == pParserTempData->CompareFlags ))
846 pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16));
849 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
853 VOID ProcessJumpE(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
855 if ((pParserTempData->CompareFlags == Equal) ||
856 (pParserTempData->CompareFlags == pParserTempData->ParametersType.Destination))
859 pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16));
862 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
866 VOID ProcessJumpNE(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
868 if (pParserTempData->CompareFlags != Equal)
871 pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16));
874 pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);