diff options
Diffstat (limited to 'src/AtomBios/CD_Operations.c')
-rw-r--r-- | src/AtomBios/CD_Operations.c | 954 |
1 files changed, 0 insertions, 954 deletions
diff --git a/src/AtomBios/CD_Operations.c b/src/AtomBios/CD_Operations.c deleted file mode 100644 index 1e48f81..0000000 --- a/src/AtomBios/CD_Operations.c +++ /dev/null @@ -1,954 +0,0 @@ -/* - * Copyright 2006-2007 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - -Module Name: - - CD_Operations.c - -Abstract: - - Functions Implementing Command Operations and other common functions - -Revision History: - - NEG:27.09.2002 Initiated. ---*/ -#define __SW_4 - -#include "Decoder.h" -#include "atombios.h" - - - -VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID PutDataWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID PutDataFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID PutDataPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID PutDataMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData); - -UINT32 GetParametersDirect32(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData); - -UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -UINT32 GetParametersPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -UINT32 GetParametersWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -UINT32 GetParametersFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -UINT32 GetParametersPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -UINT32 GetParametersMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData); - -VOID SkipParameters16(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID SkipParameters8(PARSER_TEMP_DATA STACK_BASED * pParserTempData); - -UINT32 GetParametersIndirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -UINT32 GetParametersDirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData); - -UINT16* GetDataMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData); -UINT8 GetTrueIndexInMasterTable(PARSER_TEMP_DATA STACK_BASED * pParserTempData, UINT8 IndexInMasterTable); - - -WRITE_IO_FUNCTION WritePCIFunctions[8] = { - WritePCIReg32, - WritePCIReg16, WritePCIReg16, WritePCIReg16, - WritePCIReg8,WritePCIReg8,WritePCIReg8,WritePCIReg8 -}; -WRITE_IO_FUNCTION WriteIOFunctions[8] = { - WriteSysIOReg32, - WriteSysIOReg16,WriteSysIOReg16,WriteSysIOReg16, - WriteSysIOReg8,WriteSysIOReg8,WriteSysIOReg8,WriteSysIOReg8 -}; -READ_IO_FUNCTION ReadPCIFunctions[8] = { - (READ_IO_FUNCTION)ReadPCIReg32, - (READ_IO_FUNCTION)ReadPCIReg16, - (READ_IO_FUNCTION)ReadPCIReg16, - (READ_IO_FUNCTION)ReadPCIReg16, - (READ_IO_FUNCTION)ReadPCIReg8, - (READ_IO_FUNCTION)ReadPCIReg8, - (READ_IO_FUNCTION)ReadPCIReg8, - (READ_IO_FUNCTION)ReadPCIReg8 -}; -READ_IO_FUNCTION ReadIOFunctions[8] = { - (READ_IO_FUNCTION)ReadSysIOReg32, - (READ_IO_FUNCTION)ReadSysIOReg16, - (READ_IO_FUNCTION)ReadSysIOReg16, - (READ_IO_FUNCTION)ReadSysIOReg16, - (READ_IO_FUNCTION)ReadSysIOReg8, - (READ_IO_FUNCTION)ReadSysIOReg8, - (READ_IO_FUNCTION)ReadSysIOReg8, - (READ_IO_FUNCTION)ReadSysIOReg8 -}; -READ_IO_FUNCTION GetParametersDirectArray[8]={ - GetParametersDirect32, - GetParametersDirect16,GetParametersDirect16,GetParametersDirect16, - GetParametersDirect8,GetParametersDirect8,GetParametersDirect8, - GetParametersDirect8 -}; - -COMMANDS_DECODER PutDataFunctions[6] = { - PutDataRegister, - PutDataPS, - PutDataWS, - PutDataFB, - PutDataPLL, - PutDataMC -}; -CD_GET_PARAMETERS GetDestination[6] = { - GetParametersRegister, - GetParametersPS, - GetParametersWS, - GetParametersFB, - GetParametersPLL, - GetParametersMC -}; - -COMMANDS_DECODER SkipDestination[6] = { - SkipParameters16, - SkipParameters8, - SkipParameters8, - SkipParameters8, - SkipParameters8, - SkipParameters8 -}; - -CD_GET_PARAMETERS GetSource[8] = { - GetParametersRegister, - GetParametersPS, - GetParametersWS, - GetParametersFB, - GetParametersIndirect, - GetParametersDirect, - GetParametersPLL, - GetParametersMC -}; - -UINT32 AlignmentMask[8] = {0xFFFFFFFF,0xFFFF,0xFFFF,0xFFFF,0xFF,0xFF,0xFF,0xFF}; -UINT8 SourceAlignmentShift[8] = {0,0,8,16,0,8,16,24}; -UINT8 DestinationAlignmentShift[4] = {0,8,16,24}; - -#define INDIRECTIO_ID 1 -#define INDIRECTIO_END_OF_ID 9 - -VOID IndirectIOCommand(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID IndirectIOCommand_MOVE(PARSER_TEMP_DATA STACK_BASED * pParserTempData, UINT32 temp); -VOID IndirectIOCommand_MOVE_INDEX(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID IndirectIOCommand_MOVE_ATTR(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID IndirectIOCommand_MOVE_DATA(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID IndirectIOCommand_SET(PARSER_TEMP_DATA STACK_BASED * pParserTempData); -VOID IndirectIOCommand_CLEAR(PARSER_TEMP_DATA STACK_BASED * pParserTempData); - - -INDIRECT_IO_PARSER_COMMANDS IndirectIOParserCommands[10]={ - {IndirectIOCommand,1}, - {IndirectIOCommand,2}, - {ReadIndReg32,3}, - {WriteIndReg32,3}, - {IndirectIOCommand_CLEAR,3}, - {IndirectIOCommand_SET,3}, - {IndirectIOCommand_MOVE_INDEX,4}, - {IndirectIOCommand_MOVE_ATTR,4}, - {IndirectIOCommand_MOVE_DATA,4}, - {IndirectIOCommand,3} -}; - - -VOID IndirectIOCommand(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ -} - - -VOID IndirectIOCommand_MOVE_INDEX(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[3]); - pParserTempData->IndirectData |=(((pParserTempData->Index >> pParserTempData->IndirectIOTablePointer[2]) & - (0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1]))) << pParserTempData->IndirectIOTablePointer[3]); -} - -VOID IndirectIOCommand_MOVE_ATTR(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[3]); - pParserTempData->IndirectData |=(((pParserTempData->AttributesData >> pParserTempData->IndirectIOTablePointer[2]) - & (0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1]))) << pParserTempData->IndirectIOTablePointer[3]); -} - -VOID IndirectIOCommand_MOVE_DATA(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[3]); - pParserTempData->IndirectData |=(((pParserTempData->DestData32 >> pParserTempData->IndirectIOTablePointer[2]) - & (0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1]))) << pParserTempData->IndirectIOTablePointer[3]); -} - - -VOID IndirectIOCommand_SET(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->IndirectData |= ((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]); -} - -VOID IndirectIOCommand_CLEAR(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]); -} - - -UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - // if ((pParserTempData->IndirectData & 0x7f)==INDIRECT_IO_MM) pParserTempData->IndirectData|=pParserTempData->CurrentPortID; -// pParserTempData->IndirectIOTablePointer=pParserTempData->IndirectIOTable; - while (*pParserTempData->IndirectIOTablePointer) - { - if ((pParserTempData->IndirectIOTablePointer[0] == INDIRECTIO_ID) && - (pParserTempData->IndirectIOTablePointer[1] == pParserTempData->IndirectData)) - { - pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize; - while (*pParserTempData->IndirectIOTablePointer != INDIRECTIO_END_OF_ID) - { - IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].func(pParserTempData); - pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize; - } - pParserTempData->IndirectIOTablePointer-=*(UINT16*)(pParserTempData->IndirectIOTablePointer+1); - pParserTempData->IndirectIOTablePointer++; - return pParserTempData->IndirectData; - } else pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize; - } - return 0; -} - - - -VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.WordXX.PA_Destination; - pParserTempData->Index+=pParserTempData->CurrentRegBlock; - switch(pParserTempData->Multipurpose.CurrentPort){ - case ATI_RegsPort: - if (pParserTempData->CurrentPortID == INDIRECT_IO_MM) - { - if (pParserTempData->Index==0) pParserTempData->DestData32 <<= 2; - WriteReg32( pParserTempData); - } else - { - pParserTempData->IndirectData=pParserTempData->CurrentPortID+INDIRECT_IO_WRITE; - IndirectInputOutput(pParserTempData); - } - break; - case PCI_Port: - WritePCIFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData); - break; - case SystemIO_Port: - WriteIOFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData); - break; - } -} - -VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - *(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination)= - pParserTempData->DestData32; -} - -VOID PutDataWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - if (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination < WS_QUOTIENT_C) - *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) = pParserTempData->DestData32; - else - switch (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) - { - case WS_REMINDER_C: - pParserTempData->MultiplicationOrDivision.Division.Reminder32=pParserTempData->DestData32; - break; - case WS_QUOTIENT_C: - pParserTempData->MultiplicationOrDivision.Division.Quotient32=pParserTempData->DestData32; - break; - case WS_DATAPTR_C: -#ifndef UEFI_BUILD - pParserTempData->CurrentDataBlock=(UINT16)pParserTempData->DestData32; -#else - pParserTempData->CurrentDataBlock=(UINTN)pParserTempData->DestData32; -#endif - break; - case WS_SHIFT_C: - pParserTempData->Shift2MaskConverter=(UINT8)pParserTempData->DestData32; - break; - case WS_FB_WINDOW_C: - pParserTempData->CurrentFB_Window=pParserTempData->DestData32; - break; - case WS_ATTRIBUTES_C: - pParserTempData->AttributesData=(UINT16)pParserTempData->DestData32; - break; - } - -} - -VOID PutDataFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.ByteXX.PA_Destination; - //Make an Index from address first, then add to the Index - pParserTempData->Index+=(pParserTempData->CurrentFB_Window>>2); - WriteFrameBuffer32(pParserTempData); -} - -VOID PutDataPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.ByteXX.PA_Destination; - WritePLL32( pParserTempData ); -} - -VOID PutDataMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.ByteXX.PA_Destination; - WriteMC32( pParserTempData ); -} - - -VOID SkipParameters8(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->pWorkingTableData->IP+=sizeof(UINT8); -} - -VOID SkipParameters16(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); -} - - -UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); - pParserTempData->Index+=pParserTempData->CurrentRegBlock; - switch(pParserTempData->Multipurpose.CurrentPort) - { - case PCI_Port: - return ReadPCIFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData); - case SystemIO_Port: - return ReadIOFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData); - case ATI_RegsPort: - default: - if (pParserTempData->CurrentPortID == INDIRECT_IO_MM) return ReadReg32( pParserTempData ); - else - { - pParserTempData->IndirectData=pParserTempData->CurrentPortID+INDIRECT_IO_READ; - return IndirectInputOutput(pParserTempData); - } - } -} - -UINT32 GetParametersPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=*pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT8); - return *(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->Index); -} - -UINT32 GetParametersWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=*pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT8); - if (pParserTempData->Index < WS_QUOTIENT_C) - return *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->Index); - else - switch (pParserTempData->Index) - { - case WS_REMINDER_C: - return pParserTempData->MultiplicationOrDivision.Division.Reminder32; - case WS_QUOTIENT_C: - return pParserTempData->MultiplicationOrDivision.Division.Quotient32; - case WS_DATAPTR_C: - return (UINT32)pParserTempData->CurrentDataBlock; - case WS_OR_MASK_C: - return ((UINT32)1) << pParserTempData->Shift2MaskConverter; - case WS_AND_MASK_C: - return ~(((UINT32)1) << pParserTempData->Shift2MaskConverter); - case WS_FB_WINDOW_C: - return pParserTempData->CurrentFB_Window; - case WS_ATTRIBUTES_C: - return pParserTempData->AttributesData; - } - return 0; - -} - -UINT32 GetParametersFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=*pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT8); - pParserTempData->Index+=(pParserTempData->CurrentFB_Window>>2); - return ReadFrameBuffer32(pParserTempData); -} - -UINT32 GetParametersPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=*pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT8); - return ReadPLL32( pParserTempData ); -} - -UINT32 GetParametersMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=*pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT8); - return ReadMC32( pParserTempData ); -} - - -UINT32 GetParametersIndirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); - return *(UINT32*)(RELATIVE_TO_BIOS_IMAGE(pParserTempData->Index)+pParserTempData->CurrentDataBlock); -} - -UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->CD_Mask.SrcAlignment=alignmentByte0; - pParserTempData->Index=*(UINT8*)pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT8); - return pParserTempData->Index; -} - -UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->CD_Mask.SrcAlignment=alignmentLowerWord; - pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); - return pParserTempData->Index; -} - -UINT32 GetParametersDirect32(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->CD_Mask.SrcAlignment=alignmentDword; - pParserTempData->Index=*(UINT32*)pParserTempData->pWorkingTableData->IP; - pParserTempData->pWorkingTableData->IP+=sizeof(UINT32); - return pParserTempData->Index; -} - - -UINT32 GetParametersDirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - return GetParametersDirectArray[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData); -} - - -VOID CommonSourceDataTransformation(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->SourceData32 <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]; -} - -VOID CommonOperationDataTransformation(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->DestData32 >>= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]; - pParserTempData->DestData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment]; -} - -VOID ProcessMove(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - if (pParserTempData->CD_Mask.SrcAlignment!=alignmentDword) - { - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - } else - { - SkipDestination[pParserTempData->ParametersType.Destination](pParserTempData); - } - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - - if (pParserTempData->CD_Mask.SrcAlignment!=alignmentDword) - { - pParserTempData->DestData32 &= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]); - CommonSourceDataTransformation(pParserTempData); - pParserTempData->DestData32 |= pParserTempData->SourceData32; - } else - { - pParserTempData->DestData32=pParserTempData->SourceData32; - } - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - -VOID ProcessMask(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetParametersDirect(pParserTempData); - pParserTempData->Index=GetParametersDirect(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 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->Index <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]; - pParserTempData->DestData32 |= pParserTempData->Index; - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - -VOID ProcessAnd(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->SourceData32 <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]; - pParserTempData->SourceData32 |= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]); - pParserTempData->DestData32 &= pParserTempData->SourceData32; - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - -VOID ProcessOr(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - CommonSourceDataTransformation(pParserTempData); - pParserTempData->DestData32 |= pParserTempData->SourceData32; - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - -VOID ProcessXor(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - CommonSourceDataTransformation(pParserTempData); - pParserTempData->DestData32 ^= pParserTempData->SourceData32; - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - -VOID ProcessShl(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - CommonSourceDataTransformation(pParserTempData); - pParserTempData->DestData32 <<= pParserTempData->SourceData32; - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - -VOID ProcessShr(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - CommonSourceDataTransformation(pParserTempData); - pParserTempData->DestData32 >>= pParserTempData->SourceData32; - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - - -VOID ProcessADD(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - CommonSourceDataTransformation(pParserTempData); - pParserTempData->DestData32 += pParserTempData->SourceData32; - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - -VOID ProcessSUB(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - CommonSourceDataTransformation(pParserTempData); - pParserTempData->DestData32 -= pParserTempData->SourceData32; - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - -VOID ProcessMUL(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - CommonOperationDataTransformation(pParserTempData); - pParserTempData->MultiplicationOrDivision.Multiplication.Low32Bit=pParserTempData->DestData32 * pParserTempData->SourceData32; -} - -VOID ProcessDIV(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - - CommonOperationDataTransformation(pParserTempData); - pParserTempData->MultiplicationOrDivision.Division.Quotient32= - pParserTempData->DestData32 / pParserTempData->SourceData32; - pParserTempData->MultiplicationOrDivision.Division.Reminder32= - pParserTempData->DestData32 % pParserTempData->SourceData32; -} - - -VOID ProcessCompare(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - - CommonOperationDataTransformation(pParserTempData); - - // Here we just set flags based on evaluation - if (pParserTempData->DestData32==pParserTempData->SourceData32) - pParserTempData->CompareFlags = Equal; - else - pParserTempData->CompareFlags = - (UINT8)((pParserTempData->DestData32<pParserTempData->SourceData32) ? Below : Above); - -} - -VOID ProcessClear(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->DestData32 &= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]); - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); - -} - -VOID ProcessShift(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - UINT32 mask = AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetParametersDirect8(pParserTempData); - - // save original value of the destination - pParserTempData->Index = pParserTempData->DestData32 & ~mask; - pParserTempData->DestData32 &= mask; - - if (pParserTempData->pCmd->Header.Opcode < SHIFT_RIGHT_REG_OPCODE) - pParserTempData->DestData32 <<= pParserTempData->SourceData32; else - pParserTempData->DestData32 >>= pParserTempData->SourceData32; - - // Clear any bits shifted out of masked area... - pParserTempData->DestData32 &= mask; - // ... and restore the area outside of masked with original values - pParserTempData->DestData32 |= pParserTempData->Index; - - // write data back - PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData); -} - -VOID ProcessTest(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - CommonOperationDataTransformation(pParserTempData); - pParserTempData->CompareFlags = - (UINT8)((pParserTempData->DestData32 & pParserTempData->SourceData32) ? NotEqual : Equal); - -} - -VOID ProcessSetFB_Base(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->CurrentFB_Window=pParserTempData->SourceData32; -} - -VOID ProcessSwitch(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ - pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); - pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]; - pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment]; - while ( *(UINT16*)pParserTempData->pWorkingTableData->IP != (((UINT16)NOP_OPCODE << 8)+NOP_OPCODE)) - { - if (*pParserTempData->pWorkingTableData->IP == 'c') - { - pParserTempData->pWorkingTableData->IP++; - pParserTempData->DestData32=GetParametersDirect(pParserTempData); - pParserTempData->Index=GetParametersDirect16(pParserTempData); - if (pParserTempData->SourceData32 == pParserTempData->DestData32) - { - pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(pParserTempData->Index); - return; - } - } - } - pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); -} - - -VOID cmdSetDataBlock(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - UINT8 value; - UINT16* pMasterDataTable; - value=((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination; - if (value == 0) pParserTempData->CurrentDataBlock=0; else - { - if (value == DB_CURRENT_COMMAND_TABLE) - { - pParserTempData->CurrentDataBlock= (UINT16)(pParserTempData->pWorkingTableData->pTableHead-pParserTempData->pDeviceData->pBIOS_Image); - } else - { - pMasterDataTable = GetDataMasterTablePointer(pParserTempData->pDeviceData); - pParserTempData->CurrentDataBlock= (TABLE_UNIT_TYPE)((PTABLE_UNIT_TYPE)pMasterDataTable)[value]; - } - } - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); -} - -VOID cmdSet_ATI_Port(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Multipurpose.CurrentPort=ATI_RegsPort; - pParserTempData->CurrentPortID = (UINT8)((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination; - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); -} - -VOID cmdSet_Reg_Block(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->CurrentRegBlock = ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination; - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); -} - - -//Atavism!!! Review!!! -VOID cmdSet_X_Port(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ - pParserTempData->Multipurpose.CurrentPort=pParserTempData->ParametersType.Destination; - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_ONLY); - -} - -VOID cmdDelay_Millisec(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ - pParserTempData->SourceData32 = - ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination; - DelayMilliseconds(pParserTempData); - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); -} -VOID cmdDelay_Microsec(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ - pParserTempData->SourceData32 = - ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination; - DelayMicroseconds(pParserTempData); - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); -} - -VOID ProcessPostChar(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->SourceData32 = - ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination; - PostCharOutput(pParserTempData); - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); -} - -VOID ProcessDebug(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->SourceData32 = - ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination; - CallerDebugFunc(pParserTempData); - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); -} - - -VOID ProcessDS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->pWorkingTableData->IP+=((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination+sizeof(COMMAND_TYPE_OPCODE_OFFSET16); -} - - -VOID cmdCall_Table(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ - UINT16* MasterTableOffset; - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); - MasterTableOffset = GetCommandMasterTablePointer(pParserTempData->pDeviceData); - if(((PTABLE_UNIT_TYPE)MasterTableOffset)[((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value]!=0 ) // if the offset is not ZERO - { - pParserTempData->CommandSpecific.IndexInMasterTable=GetTrueIndexInMasterTable(pParserTempData,((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value); - pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable = - (((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER *)pParserTempData->pWorkingTableData->pTableHead)->TableAttribute.PS_SizeInBytes>>2); - pParserTempData->pDeviceData->pParameterSpace+= - pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable; - pParserTempData->Status=CD_CALL_TABLE; - pParserTempData->pCmd=(GENERIC_ATTRIBUTE_COMMAND*)MasterTableOffset; - } -} - - -VOID cmdNOP_(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ -} - - -static VOID NotImplemented(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - pParserTempData->Status = CD_NOT_IMPLEMENTED; -} - - -VOID ProcessJump(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - if ((pParserTempData->ParametersType.Destination == NoCondition) || - (pParserTempData->ParametersType.Destination == pParserTempData->CompareFlags )) - { - - pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16); - } else - { - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); - } -} - -VOID ProcessJumpE(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - if ((pParserTempData->CompareFlags == Equal) || - (pParserTempData->CompareFlags == pParserTempData->ParametersType.Destination)) - { - - pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16); - } else - { - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); - } -} - -VOID ProcessJumpNE(PARSER_TEMP_DATA STACK_BASED * pParserTempData) -{ - if (pParserTempData->CompareFlags != Equal) - { - - pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16); - } else - { - pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); - } -} - - - -COMMANDS_PROPERTIES CallTable[] = -{ - { NULL, 0,0}, - { ProcessMove, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessMove, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessMove, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessMove, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessMove, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessMove, destMC, sizeof(COMMAND_HEADER)}, - { ProcessAnd, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessAnd, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessAnd, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessAnd, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessAnd, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessAnd, destMC, sizeof(COMMAND_HEADER)}, - { ProcessOr, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessOr, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessOr, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessOr, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessOr, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessOr, destMC, sizeof(COMMAND_HEADER)}, - { ProcessShift, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessShift, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessShift, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessShift, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessShift, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessShift, destMC, sizeof(COMMAND_HEADER)}, - { ProcessShift, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessShift, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessShift, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessShift, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessShift, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessShift, destMC, sizeof(COMMAND_HEADER)}, - { ProcessMUL, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessMUL, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessMUL, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessMUL, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessMUL, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessMUL, destMC, sizeof(COMMAND_HEADER)}, - { ProcessDIV, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessDIV, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessDIV, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessDIV, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessDIV, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessDIV, destMC, sizeof(COMMAND_HEADER)}, - { ProcessADD, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessADD, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessADD, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessADD, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessADD, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessADD, destMC, sizeof(COMMAND_HEADER)}, - { ProcessSUB, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessSUB, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessSUB, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessSUB, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessSUB, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessSUB, destMC, sizeof(COMMAND_HEADER)}, - { cmdSet_ATI_Port, ATI_RegsPort, 0}, - { cmdSet_X_Port, PCI_Port, 0}, - { cmdSet_X_Port, SystemIO_Port, 0}, - { cmdSet_Reg_Block, 0, 0}, - { ProcessSetFB_Base,0, sizeof(COMMAND_HEADER)}, - { ProcessCompare, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessCompare, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessCompare, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessCompare, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessCompare, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessCompare, destMC, sizeof(COMMAND_HEADER)}, - { ProcessSwitch, 0, sizeof(COMMAND_HEADER)}, - { ProcessJump, NoCondition, 0}, - { ProcessJump, Equal, 0}, - { ProcessJump, Below, 0}, - { ProcessJump, Above, 0}, - { ProcessJumpE, Below, 0}, - { ProcessJumpE, Above, 0}, - { ProcessJumpNE, 0, 0}, - { ProcessTest, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessTest, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessTest, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessTest, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessTest, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessTest, destMC, sizeof(COMMAND_HEADER)}, - { cmdDelay_Millisec,0, 0}, - { cmdDelay_Microsec,0, 0}, - { cmdCall_Table, 0, 0}, - /*cmdRepeat*/ { NotImplemented, 0, 0}, - { ProcessClear, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessClear, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessClear, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessClear, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessClear, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessClear, destMC, sizeof(COMMAND_HEADER)}, - { cmdNOP_, 0, sizeof(COMMAND_TYPE_OPCODE_ONLY)}, - /*cmdEOT*/ { cmdNOP_, 0, sizeof(COMMAND_TYPE_OPCODE_ONLY)}, - { ProcessMask, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessMask, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessMask, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessMask, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessMask, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessMask, destMC, sizeof(COMMAND_HEADER)}, - /*cmdPost_Card*/ { ProcessPostChar, 0, 0}, - /*cmdBeep*/ { NotImplemented, 0, 0}, - /*cmdSave_Reg*/ { NotImplemented, 0, 0}, - /*cmdRestore_Reg*/{ NotImplemented, 0, 0}, - { cmdSetDataBlock, 0, 0}, - { ProcessXor, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessXor, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessXor, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessXor, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessXor, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessXor, destMC, sizeof(COMMAND_HEADER)}, - - { ProcessShl, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessShl, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessShl, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessShl, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessShl, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessShl, destMC, sizeof(COMMAND_HEADER)}, - - { ProcessShr, destRegister, sizeof(COMMAND_HEADER)}, - { ProcessShr, destParamSpace, sizeof(COMMAND_HEADER)}, - { ProcessShr, destWorkSpace, sizeof(COMMAND_HEADER)}, - { ProcessShr, destFrameBuffer, sizeof(COMMAND_HEADER)}, - { ProcessShr, destPLL, sizeof(COMMAND_HEADER)}, - { ProcessShr, destMC, sizeof(COMMAND_HEADER)}, - /*cmdDebug*/ { ProcessDebug, 0, 0}, - { ProcessDS, 0, 0}, - -}; - -// EOF |