

#include "main.h"

#define DMC0_START_ADDRESS 0x8FFFFFFD
//#define DMC0_START_ADDRESS 0x9FFFFFFF

//#pragma align 32
#define NUM   4
uint8_t SrcBuff[NUM];
uint8_t DestBuff[NUM];

int main(void)
{
	uint8_t* pMUT=DMC0_START_ADDRESS;; // L3 Write pointer
	int i,j,k;

	uint8_t* pSrcBuff;
	uint8_t* pDestBuff;
	uint8_t* uiSrcBuffAdd
	uint8_t* uiDestBuffAdd

	uint8_t* pMUTRead;
	uint8_t* pMUTWrite;

	uint32_t uiFailCount=0;

	pSrcBuff=SrcBuff;
	pDestBuff=DestBuff;

	//Fill the source buffer with data based on the pattern type argument
	printf("\n\nData pattern = All A");
	for(i=0;i<NUM;i++)
	{
		*pSrcBuff=0xAA;
		pSrcBuff++;
	}
	pMUTRead=DMC0_START_ADDRESS;
    pMUTWrite=DMC0_START_ADDRESS;

    //Perform core write accesses to transfer data from source buffer to the target memory location under test
    	for(j=0;j<NUM;j++)
    	{

    	*pMUTWrite=*pSrcBuff;
         pMUTWrite++;
    	 pSrcBuff++;
    	 printf("\naddress after increment is %x",pMUTWrite);

    	*pDestBuff=*pMUTRead;
    	 pMUTRead++;
    	 pDestBuff++;

    		 //If match does not occur, increment the failure count
    		if(*uiSrcBuffAdd!=*uiDestBuffAdd)
    		{
    			uiFailCount++;
    		}
    	uiSrcBuffAdd++;
    	uiDestBuffAdd++;

    	}
    	//}
    	if(uiFailCount==0)
    	{
    		printf("\nTest Passed...");
    	}
    	else
    	{
    		printf("\nTest Failed...");
    	}
    	printf("Fail count:%d", uiFailCount);

    	return 0;
}
