1 /******************************************************************************
3 * Copyright (C) 2002 - 2014 Xilinx, Inc. All rights reserved.
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to deal
7 * in the Software without restriction, including without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
15 * Use of the Software is limited solely to applications:
16 * (a) running on a Xilinx device, or
17 * (b) that interact with a Xilinx device through a bus or interconnect.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
24 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 * Except as contained in this notice, the name of the Xilinx shall not be used
28 * in advertising or otherwise to promote the sale, use or other dealings in
29 * this Software without prior written authorization from Xilinx.
31 ******************************************************************************
34 * Initialize the Profiling Structures.
36 ******************************************************************************/
40 /* XMD Initializes the following Global Variables Value during Program
41 * Download with appropriate values. */
43 #ifdef PROC_MICROBLAZE
45 extern s32 microblaze_init(void);
47 #elif defined PROC_PPC
49 extern s32 powerpc405_init(void);
53 extern s32 cortexa9_init(void);
57 s32 profile_version = 1; /* Version of S/W Intrusive Profiling library */
59 u32 binsize = (u32)BINSIZE; /* Histogram Bin Size */
60 u32 cpu_clk_freq = (u32)CPU_FREQ_HZ ; /* CPU Clock Frequency */
61 u32 sample_freq_hz = (u32)SAMPLE_FREQ_HZ ; /* Histogram Sampling Frequency */
62 u32 timer_clk_ticks = (u32)TIMER_CLK_TICKS ;/* Timer Clock Ticks for the Timer */
64 /* Structure for Storing the Profiling Data */
65 struct gmonparam *_gmonparam = (struct gmonparam *)(0xffffffffU);
66 s32 n_gmon_sections = 1;
68 /* This is the initialization code, which is called from the crtinit. */
70 void _profile_init( void )
72 /* print("Gmon Init called....\r\n") */
73 /* putnum(n_gmon_sections) , print("\r\n") */
74 /* if( _gmonparam == 0xffffffff ) */
75 /* printf("Gmonparam is NULL !!\r\n") */
76 /* for( i = 0, i < n_gmon_sections, i++ )[ */
77 /* putnum( _gmonparam[i].lowpc) , print("\t") */
78 /* putnum( _gmonparam[i].highpc) , print("\r\n") */
79 /* putnum( _gmonparam[i].textsize ), print("\r\n") */
80 /* putnum( _gmonparam[i].kcountsize * sizeof(unsigned short)), print("\r\n") */
83 #ifdef PROC_MICROBLAZE
84 (void)microblaze_init();
85 #elif defined PROC_PPC
88 (void)cortexa9_init();