X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=FreeRTOS%2FDemo%2FCORTEX_A9_Zynq_ZC702%2FRTOSDemo_bsp%2Fps7_cortexa9_0%2Flibsrc%2Fstandalone_v5_4%2Fsrc%2Fxpm_counter.c;fp=FreeRTOS%2FDemo%2FCORTEX_A9_Zynq_ZC702%2FRTOSDemo_bsp%2Fps7_cortexa9_0%2Flibsrc%2Fstandalone_v5_4%2Fsrc%2Fxpm_counter.c;h=0000000000000000000000000000000000000000;hb=2f3240cae4193f5662f4b8f24c4decdb2bc7778b;hp=75c9b49436fa7bca4234a21b6bd064c4c90052a9;hpb=6e33f3d844560120d8110ec9d6a50f912b594b87;p=freertos diff --git a/FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo_bsp/ps7_cortexa9_0/libsrc/standalone_v5_4/src/xpm_counter.c b/FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo_bsp/ps7_cortexa9_0/libsrc/standalone_v5_4/src/xpm_counter.c deleted file mode 100644 index 75c9b4943..000000000 --- a/FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo_bsp/ps7_cortexa9_0/libsrc/standalone_v5_4/src/xpm_counter.c +++ /dev/null @@ -1,296 +0,0 @@ -/****************************************************************************** -* -* Copyright (C) 2011 - 2015 Xilinx, Inc. All rights reserved. -* -* 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. -* -* Use of the Software is limited solely to applications: -* (a) running on a Xilinx device, or -* (b) that interact with a Xilinx device through a bus or interconnect. -* -* 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 -* XILINX 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. -* -* Except as contained in this notice, the name of the Xilinx shall not be used -* in advertising or otherwise to promote the sale, use or other dealings in -* this Software without prior written authorization from Xilinx. -* -******************************************************************************/ -/*****************************************************************************/ -/** -* -* @file xpm_counter.c -* -* This file contains APIs for configuring and controlling the Cortex-A9 -* Performance Monitor Events. For more information about the event counters, -* see xpm_counter.h. -* -*
-* MODIFICATION HISTORY:
-*
-* Ver   Who  Date     Changes
-* ----- ---- -------- -----------------------------------------------
-* 1.00a sdm  07/11/11 First release
-* 4.2	pkp	 07/21/14 Corrected reset value of event counter in function
-*					  Xpm_ResetEventCounters to fix CR#796275
-* 
-* -******************************************************************************/ - -/***************************** Include Files *********************************/ - -#include "xpm_counter.h" - -/************************** Constant Definitions ****************************/ - -/**************************** Type Definitions ******************************/ - -typedef const u32 PmcrEventCfg32[XPM_CTRCOUNT]; - -/***************** Macros (Inline Functions) Definitions ********************/ - -/************************** Variable Definitions *****************************/ - -/************************** Function Prototypes ******************************/ - -void Xpm_DisableEventCounters(void); -void Xpm_EnableEventCounters (void); -void Xpm_ResetEventCounters (void); - -/******************************************************************************/ - -/****************************************************************************/ -/** -* -* This function disables the Cortex A9 event counters. -* -* @param None. -* -* @return None. -* -* @note None. -* -*****************************************************************************/ -void Xpm_DisableEventCounters(void) -{ - /* Disable the event counters */ - mtcp(XREG_CP15_COUNT_ENABLE_CLR, 0x3f); -} - -/****************************************************************************/ -/** -* -* This function enables the Cortex A9 event counters. -* -* @param None. -* -* @return None. -* -* @note None. -* -*****************************************************************************/ -void Xpm_EnableEventCounters(void) -{ - /* Enable the event counters */ - mtcp(XREG_CP15_COUNT_ENABLE_SET, 0x3f); -} - -/****************************************************************************/ -/** -* -* This function resets the Cortex A9 event counters. -* -* @param None. -* -* @return None. -* -* @note None. -* -*****************************************************************************/ -void Xpm_ResetEventCounters(void) -{ - u32 Reg; -#ifdef __GNUC__ - Reg = mfcp(XREG_CP15_PERF_MONITOR_CTRL); -#elif defined (__ICCARM__) - mfcp(XREG_CP15_PERF_MONITOR_CTRL, Reg); -#else - { register u32 C15Reg __asm(XREG_CP15_PERF_MONITOR_CTRL); - Reg = C15Reg; } -#endif - Reg |= (1U << 1U); /* reset event counters */ - mtcp(XREG_CP15_PERF_MONITOR_CTRL, Reg); - -} - -/****************************************************************************/ -/** -* -* This function configures the Cortex A9 event counters controller, with the -* event codes, in a configuration selected by the user and enables the counters. -* -* @param PmcrCfg is configuration value based on which the event counters -* are configured. -* Use XPM_CNTRCFG* values defined in xpm_counter.h. -* -* @return None. -* -* @note None. -* -*****************************************************************************/ -void Xpm_SetEvents(s32 PmcrCfg) -{ - u32 Counter; - static PmcrEventCfg32 PmcrEvents[] = { - { - XPM_EVENT_SOFTINCR, - XPM_EVENT_INSRFETCH_CACHEREFILL, - XPM_EVENT_INSTRFECT_TLBREFILL, - XPM_EVENT_DATA_CACHEREFILL, - XPM_EVENT_DATA_CACHEACCESS, - XPM_EVENT_DATA_TLBREFILL - }, - { - XPM_EVENT_DATA_READS, - XPM_EVENT_DATA_WRITE, - XPM_EVENT_EXCEPTION, - XPM_EVENT_EXCEPRETURN, - XPM_EVENT_CHANGECONTEXT, - XPM_EVENT_SW_CHANGEPC - }, - { - XPM_EVENT_IMMEDBRANCH, - XPM_EVENT_UNALIGNEDACCESS, - XPM_EVENT_BRANCHMISS, - XPM_EVENT_CLOCKCYCLES, - XPM_EVENT_BRANCHPREDICT, - XPM_EVENT_JAVABYTECODE - }, - { - XPM_EVENT_SWJAVABYTECODE, - XPM_EVENT_JAVABACKBRANCH, - XPM_EVENT_COHERLINEMISS, - XPM_EVENT_COHERLINEHIT, - XPM_EVENT_INSTRSTALL, - XPM_EVENT_DATASTALL - }, - { - XPM_EVENT_MAINTLBSTALL, - XPM_EVENT_STREXPASS, - XPM_EVENT_STREXFAIL, - XPM_EVENT_DATAEVICT, - XPM_EVENT_NODISPATCH, - XPM_EVENT_ISSUEEMPTY - }, - { - XPM_EVENT_INSTRRENAME, - XPM_EVENT_PREDICTFUNCRET, - XPM_EVENT_MAINEXEC, - XPM_EVENT_SECEXEC, - XPM_EVENT_LDRSTR, - XPM_EVENT_FLOATRENAME - }, - { - XPM_EVENT_NEONRENAME, - XPM_EVENT_PLDSTALL, - XPM_EVENT_WRITESTALL, - XPM_EVENT_INSTRTLBSTALL, - XPM_EVENT_DATATLBSTALL, - XPM_EVENT_INSTR_uTLBSTALL - }, - { - XPM_EVENT_DATA_uTLBSTALL, - XPM_EVENT_DMB_STALL, - XPM_EVENT_INT_CLKEN, - XPM_EVENT_DE_CLKEN, - XPM_EVENT_INSTRISB, - XPM_EVENT_INSTRDSB - }, - { - XPM_EVENT_INSTRDMB, - XPM_EVENT_EXTINT, - XPM_EVENT_PLE_LRC, - XPM_EVENT_PLE_LRS, - XPM_EVENT_PLE_FLUSH, - XPM_EVENT_PLE_CMPL - }, - { - XPM_EVENT_PLE_OVFL, - XPM_EVENT_PLE_PROG, - XPM_EVENT_PLE_LRC, - XPM_EVENT_PLE_LRS, - XPM_EVENT_PLE_FLUSH, - XPM_EVENT_PLE_CMPL - }, - { - XPM_EVENT_DATASTALL, - XPM_EVENT_INSRFETCH_CACHEREFILL, - XPM_EVENT_INSTRFECT_TLBREFILL, - XPM_EVENT_DATA_CACHEREFILL, - XPM_EVENT_DATA_CACHEACCESS, - XPM_EVENT_DATA_TLBREFILL - }, - }; - const u32 *ptr = PmcrEvents[PmcrCfg]; - - Xpm_DisableEventCounters(); - - for(Counter = 0U; Counter < XPM_CTRCOUNT; Counter++) { - - /* Selecet event counter */ - mtcp(XREG_CP15_EVENT_CNTR_SEL, Counter); - - /* Set the event */ - mtcp(XREG_CP15_EVENT_TYPE_SEL, ptr[Counter]); - } - - Xpm_ResetEventCounters(); - Xpm_EnableEventCounters(); -} - -/****************************************************************************/ -/** -* -* This function disables the event counters and returns the counter values. -* -* @param PmCtrValue is a pointer to an array of type u32 PmCtrValue[6]. -* It is an output parameter which is used to return the PM -* counter values. -* -* @return None. -* -* @note None. -* -*****************************************************************************/ -void Xpm_GetEventCounters(u32 *PmCtrValue) -{ - u32 Counter; - - Xpm_DisableEventCounters(); - - for(Counter = 0U; Counter < XPM_CTRCOUNT; Counter++) { - - mtcp(XREG_CP15_EVENT_CNTR_SEL, Counter); -#ifdef __GNUC__ - PmCtrValue[Counter] = mfcp(XREG_CP15_PERF_MONITOR_COUNT); -#elif defined (__ICCARM__) - mfcp(XREG_CP15_PERF_MONITOR_COUNT, PmCtrValue[Counter]); -#else - { register u32 Cp15Reg __asm(XREG_CP15_PERF_MONITOR_COUNT); - PmCtrValue[Counter] = Cp15Reg; } -#endif - } -}