/********************************************************************** * * Copyright (C) Imagination Technologies Ltd. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful but, except * as otherwise stated in writing, without any warranty; without even the * implied warranty of merchantability or fitness for a particular purpose. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. * * The full GNU General Public License is included in this distribution in * the file called "COPYING". * * Contact Information: * Imagination Technologies Ltd. * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK * ******************************************************************************/ #ifndef _PDUMP_KM_H_ #define _PDUMP_KM_H_ #include "pdump_osfunc.h" #if defined(__cplusplus) extern "C" { #endif #include "pdump.h" #define PDUMP_PD_UNIQUETAG (IMG_HANDLE)0 #define PDUMP_PT_UNIQUETAG (IMG_HANDLE)0 #define PDUMP_STREAM_PARAM2 0 #define PDUMP_STREAM_SCRIPT2 1 #define PDUMP_STREAM_DRIVERINFO 2 #define PDUMP_NUM_STREAMS 3 #if defined(PDUMP_DEBUG_OUTFILES) extern IMG_UINT32 g_ui32EveryLineCounter; #endif #ifndef PDUMP #define MAKEUNIQUETAG(hMemInfo) (0) #endif #ifdef PDUMP #define MAKEUNIQUETAG(hMemInfo) (((BM_BUF *)(((PVRSRV_KERNEL_MEM_INFO *)(hMemInfo))->sMemBlk.hBuffer))->pMapping) IMG_IMPORT PVRSRV_ERROR PDumpMemPolKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Value, IMG_UINT32 ui32Mask, PDUMP_POLL_OPERATOR eOperator, IMG_UINT32 ui32Flags, IMG_HANDLE hUniqueTag); IMG_IMPORT PVRSRV_ERROR PDumpMemUM(PVRSRV_PER_PROCESS_DATA *psProcData, IMG_PVOID pvAltLinAddr, IMG_PVOID pvLinAddr, PVRSRV_KERNEL_MEM_INFO *psMemInfo, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Bytes, IMG_UINT32 ui32Flags, IMG_HANDLE hUniqueTag); IMG_IMPORT PVRSRV_ERROR PDumpMemKM(IMG_PVOID pvAltLinAddr, PVRSRV_KERNEL_MEM_INFO *psMemInfo, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Bytes, IMG_UINT32 ui32Flags, IMG_HANDLE hUniqueTag); PVRSRV_ERROR PDumpMemPagesKM(PVRSRV_DEVICE_IDENTIFIER *psDevID, IMG_DEV_PHYADDR *pPages, IMG_UINT32 ui32NumPages, IMG_DEV_VIRTADDR sDevAddr, IMG_UINT32 ui32Start, IMG_UINT32 ui32Length, IMG_UINT32 ui32Flags, IMG_HANDLE hUniqueTag); PVRSRV_ERROR PDumpMemPDEntriesKM(PDUMP_MMU_ATTRIB *psMMUAttrib, IMG_HANDLE hOSMemHandle, IMG_CPU_VIRTADDR pvLinAddr, IMG_UINT32 ui32Bytes, IMG_UINT32 ui32Flags, IMG_BOOL bInitialisePages, IMG_HANDLE hUniqueTag1, IMG_HANDLE hUniqueTag2); PVRSRV_ERROR PDumpMemPTEntriesKM(PDUMP_MMU_ATTRIB *psMMUAttrib, IMG_HANDLE hOSMemHandle, IMG_CPU_VIRTADDR pvLinAddr, IMG_UINT32 ui32Bytes, IMG_UINT32 ui32Flags, IMG_BOOL bInitialisePages, IMG_HANDLE hUniqueTag1, IMG_HANDLE hUniqueTag2); IMG_VOID PDumpInitCommon(IMG_VOID); IMG_VOID PDumpDeInitCommon(IMG_VOID); IMG_VOID PDumpInit(IMG_VOID); IMG_VOID PDumpDeInit(IMG_VOID); IMG_BOOL PDumpIsSuspended(IMG_VOID); PVRSRV_ERROR PDumpStartInitPhaseKM(IMG_VOID); PVRSRV_ERROR PDumpStopInitPhaseKM(IMG_VOID); IMG_IMPORT PVRSRV_ERROR PDumpSetFrameKM(IMG_UINT32 ui32Frame); IMG_IMPORT PVRSRV_ERROR PDumpCommentKM(IMG_CHAR *pszComment, IMG_UINT32 ui32Flags); IMG_IMPORT PVRSRV_ERROR PDumpDriverInfoKM(IMG_CHAR *pszString, IMG_UINT32 ui32Flags); PVRSRV_ERROR PDumpRegWithFlagsKM(IMG_CHAR *pszPDumpRegName, IMG_UINT32 ui32RegAddr, IMG_UINT32 ui32RegValue, IMG_UINT32 ui32Flags); PVRSRV_ERROR PDumpRegPolWithFlagsKM(IMG_CHAR *pszPDumpRegName, IMG_UINT32 ui32RegAddr, IMG_UINT32 ui32RegValue, IMG_UINT32 ui32Mask, IMG_UINT32 ui32Flags, PDUMP_POLL_OPERATOR eOperator); PVRSRV_ERROR PDumpRegPolKM(IMG_CHAR *pszPDumpRegName, IMG_UINT32 ui32RegAddr, IMG_UINT32 ui32RegValue, IMG_UINT32 ui32Mask, PDUMP_POLL_OPERATOR eOperator); IMG_IMPORT PVRSRV_ERROR PDumpBitmapKM(PVRSRV_DEVICE_NODE *psDeviceNode, IMG_CHAR *pszFileName, IMG_UINT32 ui32FileOffset, IMG_UINT32 ui32Width, IMG_UINT32 ui32Height, IMG_UINT32 ui32StrideInBytes, IMG_DEV_VIRTADDR sDevBaseAddr, IMG_HANDLE hDevMemContext, IMG_UINT32 ui32Size, PDUMP_PIXEL_FORMAT ePixelFormat, PDUMP_MEM_FORMAT eMemFormat, IMG_UINT32 ui32PDumpFlags); IMG_IMPORT PVRSRV_ERROR PDumpReadRegKM(IMG_CHAR *pszPDumpRegName, IMG_CHAR *pszFileName, IMG_UINT32 ui32FileOffset, IMG_UINT32 ui32Address, IMG_UINT32 ui32Size, IMG_UINT32 ui32PDumpFlags); PVRSRV_ERROR PDumpRegKM(IMG_CHAR* pszPDumpRegName, IMG_UINT32 dwReg, IMG_UINT32 dwData); PVRSRV_ERROR PDumpComment(IMG_CHAR* pszFormat, ...) IMG_FORMAT_PRINTF(1, 2); PVRSRV_ERROR PDumpCommentWithFlags(IMG_UINT32 ui32Flags, IMG_CHAR* pszFormat, ...) IMG_FORMAT_PRINTF(2, 3); PVRSRV_ERROR PDumpPDReg(PDUMP_MMU_ATTRIB *psMMUAttrib, IMG_UINT32 ui32Reg, IMG_UINT32 ui32dwData, IMG_HANDLE hUniqueTag); PVRSRV_ERROR PDumpPDRegWithFlags(PDUMP_MMU_ATTRIB *psMMUAttrib, IMG_UINT32 ui32Reg, IMG_UINT32 ui32Data, IMG_UINT32 ui32Flags, IMG_HANDLE hUniqueTag); IMG_BOOL PDumpIsLastCaptureFrameKM(IMG_VOID); IMG_IMPORT IMG_BOOL PDumpIsCaptureFrameKM(IMG_VOID); IMG_VOID PDumpMallocPagesPhys(PVRSRV_DEVICE_IDENTIFIER *psDevID, IMG_UINT32 ui32DevVAddr, IMG_PUINT32 pui32PhysPages, IMG_UINT32 ui32NumPages, IMG_HANDLE hUniqueTag); PVRSRV_ERROR PDumpSetMMUContext(PVRSRV_DEVICE_TYPE eDeviceType, IMG_CHAR *pszMemSpace, IMG_UINT32 *pui32MMUContextID, IMG_UINT32 ui32MMUType, IMG_HANDLE hUniqueTag1, IMG_HANDLE hOSMemHandle, IMG_VOID *pvPDCPUAddr); PVRSRV_ERROR PDumpClearMMUContext(PVRSRV_DEVICE_TYPE eDeviceType, IMG_CHAR *pszMemSpace, IMG_UINT32 ui32MMUContextID, IMG_UINT32 ui32MMUType); PVRSRV_ERROR PDumpPDDevPAddrKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo, IMG_UINT32 ui32Offset, IMG_DEV_PHYADDR sPDDevPAddr, IMG_HANDLE hUniqueTag1, IMG_HANDLE hUniqueTag2); IMG_BOOL PDumpTestNextFrame(IMG_UINT32 ui32CurrentFrame); PVRSRV_ERROR PDumpSaveMemKM (PVRSRV_DEVICE_IDENTIFIER *psDevId, IMG_CHAR *pszFileName, IMG_UINT32 ui32FileOffset, IMG_DEV_VIRTADDR sDevBaseAddr, IMG_UINT32 ui32Size, IMG_UINT32 ui32DataMaster, IMG_UINT32 ui32PDumpFlags); PVRSRV_ERROR PDumpTASignatureRegisters(PVRSRV_DEVICE_IDENTIFIER *psDevId, IMG_UINT32 ui32DumpFrameNum, IMG_UINT32 ui32TAKickCount, IMG_BOOL bLastFrame, IMG_UINT32 *pui32Registers, IMG_UINT32 ui32NumRegisters); PVRSRV_ERROR PDump3DSignatureRegisters(PVRSRV_DEVICE_IDENTIFIER *psDevId, IMG_UINT32 ui32DumpFrameNum, IMG_BOOL bLastFrame, IMG_UINT32 *pui32Registers, IMG_UINT32 ui32NumRegisters); PVRSRV_ERROR PDumpCounterRegisters(PVRSRV_DEVICE_IDENTIFIER *psDevId, IMG_UINT32 ui32DumpFrameNum, IMG_BOOL bLastFrame, IMG_UINT32 *pui32Registers, IMG_UINT32 ui32NumRegisters); PVRSRV_ERROR PDumpRegRead(IMG_CHAR *pszPDumpRegName, const IMG_UINT32 dwRegOffset, IMG_UINT32 ui32Flags); PVRSRV_ERROR PDumpCycleCountRegRead(PVRSRV_DEVICE_IDENTIFIER *psDevId, const IMG_UINT32 dwRegOffset, IMG_BOOL bLastFrame); PVRSRV_ERROR PDumpIDLWithFlags(IMG_UINT32 ui32Clocks, IMG_UINT32 ui32Flags); PVRSRV_ERROR PDumpIDL(IMG_UINT32 ui32Clocks); PVRSRV_ERROR PDumpMallocPages(PVRSRV_DEVICE_IDENTIFIER *psDevID, IMG_UINT32 ui32DevVAddr, IMG_CPU_VIRTADDR pvLinAddr, IMG_HANDLE hOSMemHandle, IMG_UINT32 ui32NumBytes, IMG_UINT32 ui32PageSize, IMG_BOOL bShared, IMG_HANDLE hUniqueTag); PVRSRV_ERROR PDumpMallocPageTable(PVRSRV_DEVICE_IDENTIFIER *psDevId, IMG_HANDLE hOSMemHandle, IMG_UINT32 ui32Offset, IMG_CPU_VIRTADDR pvLinAddr, IMG_UINT32 ui32NumBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hUniqueTag); PVRSRV_ERROR PDumpFreePages(struct _BM_HEAP_ *psBMHeap, IMG_DEV_VIRTADDR sDevVAddr, IMG_UINT32 ui32NumBytes, IMG_UINT32 ui32PageSize, IMG_HANDLE hUniqueTag, IMG_BOOL bInterleaved); PVRSRV_ERROR PDumpFreePageTable(PVRSRV_DEVICE_IDENTIFIER *psDevID, IMG_HANDLE hOSMemHandle, IMG_CPU_VIRTADDR pvLinAddr, IMG_UINT32 ui32NumBytes, IMG_UINT32 ui32Flags, IMG_HANDLE hUniqueTag); IMG_IMPORT PVRSRV_ERROR PDumpHWPerfCBKM(PVRSRV_DEVICE_IDENTIFIER *psDevId, IMG_CHAR *pszFileName, IMG_UINT32 ui32FileOffset, IMG_DEV_VIRTADDR sDevBaseAddr, IMG_UINT32 ui32Size, IMG_UINT32 ui32MMUContextID, IMG_UINT32 ui32PDumpFlags); PVRSRV_ERROR PDumpSignatureBuffer(PVRSRV_DEVICE_IDENTIFIER *psDevId, IMG_CHAR *pszFileName, IMG_CHAR *pszBufferType, IMG_UINT32 ui32FileOffset, IMG_DEV_VIRTADDR sDevBaseAddr, IMG_UINT32 ui32Size, IMG_UINT32 ui32MMUContextID, IMG_UINT32 ui32PDumpFlags); PVRSRV_ERROR PDumpCBP(PPVRSRV_KERNEL_MEM_INFO psROffMemInfo, IMG_UINT32 ui32ROffOffset, IMG_UINT32 ui32WPosVal, IMG_UINT32 ui32PacketSize, IMG_UINT32 ui32BufferSize, IMG_UINT32 ui32Flags, IMG_HANDLE hUniqueTag); PVRSRV_ERROR PDumpRegBasedCBP(IMG_CHAR *pszPDumpRegName, IMG_UINT32 ui32RegOffset, IMG_UINT32 ui32WPosVal, IMG_UINT32 ui32PacketSize, IMG_UINT32 ui32BufferSize, IMG_UINT32 ui32Flags); IMG_VOID PDumpVGXMemToFile(IMG_CHAR *pszFileName, IMG_UINT32 ui32FileOffset, PVRSRV_KERNEL_MEM_INFO *psMemInfo, IMG_UINT32 uiAddr, IMG_UINT32 ui32Size, IMG_UINT32 ui32PDumpFlags, IMG_HANDLE hUniqueTag); IMG_VOID PDumpSuspendKM(IMG_VOID); IMG_VOID PDumpResumeKM(IMG_VOID); PVRSRV_ERROR PDumpStoreMemToFile(PDUMP_MMU_ATTRIB *psMMUAttrib, IMG_CHAR *pszFileName, IMG_UINT32 ui32FileOffset, PVRSRV_KERNEL_MEM_INFO *psMemInfo, IMG_UINT32 uiAddr, IMG_UINT32 ui32Size, IMG_UINT32 ui32PDumpFlags, IMG_HANDLE hUniqueTag); #define PDUMPMEMPOL PDumpMemPolKM #define PDUMPMEM PDumpMemKM #define PDUMPMEMPTENTRIES PDumpMemPTEntriesKM #define PDUMPPDENTRIES PDumpMemPDEntriesKM #define PDUMPMEMUM PDumpMemUM #define PDUMPINIT PDumpInitCommon #define PDUMPDEINIT PDumpDeInitCommon #define PDUMPISLASTFRAME PDumpIsLastCaptureFrameKM #define PDUMPTESTFRAME PDumpIsCaptureFrameKM #define PDUMPTESTNEXTFRAME PDumpTestNextFrame #define PDUMPREGWITHFLAGS PDumpRegWithFlagsKM #define PDUMPREG PDumpRegKM #define PDUMPCOMMENT PDumpComment #define PDUMPCOMMENTWITHFLAGS PDumpCommentWithFlags #define PDUMPREGPOL PDumpRegPolKM #define PDUMPREGPOLWITHFLAGS PDumpRegPolWithFlagsKM #define PDUMPMALLOCPAGES PDumpMallocPages #define PDUMPMALLOCPAGETABLE PDumpMallocPageTable #define PDUMPSETMMUCONTEXT PDumpSetMMUContext #define PDUMPCLEARMMUCONTEXT PDumpClearMMUContext #define PDUMPPDDEVPADDR PDumpPDDevPAddrKM #define PDUMPFREEPAGES PDumpFreePages #define PDUMPFREEPAGETABLE PDumpFreePageTable #define PDUMPPDREG PDumpPDReg #define PDUMPPDREGWITHFLAGS PDumpPDRegWithFlags #define PDUMPCBP PDumpCBP #define PDUMPREGBASEDCBP PDumpRegBasedCBP #define PDUMPMALLOCPAGESPHYS PDumpMallocPagesPhys #define PDUMPENDINITPHASE PDumpStopInitPhaseKM #define PDUMPBITMAPKM PDumpBitmapKM #define PDUMPDRIVERINFO PDumpDriverInfoKM #define PDUMPIDLWITHFLAGS PDumpIDLWithFlags #define PDUMPIDL PDumpIDL #define PDUMPSUSPEND PDumpSuspendKM #define PDUMPRESUME PDumpResumeKM #else #if ((defined(LINUX) || defined(GCC_IA32)) || defined(GCC_ARM)) #define PDUMPMEMPOL(args...) #define PDUMPMEM(args...) #define PDUMPMEMPTENTRIES(args...) #define PDUMPPDENTRIES(args...) #define PDUMPMEMUM(args...) #define PDUMPINIT(args...) #define PDUMPDEINIT(args...) #define PDUMPISLASTFRAME(args...) #define PDUMPTESTFRAME(args...) #define PDUMPTESTNEXTFRAME(args...) #define PDUMPREGWITHFLAGS(args...) #define PDUMPREG(args...) #define PDUMPCOMMENT(args...) #define PDUMPREGPOL(args...) #define PDUMPREGPOLWITHFLAGS(args...) #define PDUMPMALLOCPAGES(args...) #define PDUMPMALLOCPAGETABLE(args...) #define PDUMPSETMMUCONTEXT(args...) #define PDUMPCLEARMMUCONTEXT(args...) #define PDUMPPDDEVPADDR(args...) #define PDUMPFREEPAGES(args...) #define PDUMPFREEPAGETABLE(args...) #define PDUMPPDREG(args...) #define PDUMPPDREGWITHFLAGS(args...) #define PDUMPSYNC(args...) #define PDUMPCOPYTOMEM(args...) #define PDUMPWRITE(args...) #define PDUMPCBP(args...) #define PDUMPREGBASEDCBP(args...) #define PDUMPCOMMENTWITHFLAGS(args...) #define PDUMPMALLOCPAGESPHYS(args...) #define PDUMPENDINITPHASE(args...) #define PDUMPMSVDXREG(args...) #define PDUMPMSVDXREGWRITE(args...) #define PDUMPMSVDXREGREAD(args...) #define PDUMPMSVDXPOLEQ(args...) #define PDUMPMSVDXPOL(args...) #define PDUMPBITMAPKM(args...) #define PDUMPDRIVERINFO(args...) #define PDUMPIDLWITHFLAGS(args...) #define PDUMPIDL(args...) #define PDUMPSUSPEND(args...) #define PDUMPRESUME(args...) #define PDUMPMSVDXWRITEREF(args...) #else #error Compiler not specified #endif #endif #if defined (__cplusplus) } #endif #endif