1 ///////////////////////////////////////////////////////////////////////////////
\r
2 // Copyright 2003 DEIS - Universita' di Bologna
\r
5 // author DEIS - Universita' di Bologna
\r
6 // Davide Bertozzi - dbertozzi@deis.unibo.it
\r
7 // Mirko Loghi - mloghi@deis.unibo.it
\r
8 // Federico Angiolini - fangiolini@deis.unibo.it
\r
9 // Francesco Poletti - fpoletti@deis.unibo.it
\r
10 // portions by Massimo Scardamaglia - mascard@vizzavi.it
\r
11 // info Provides support for testbench compilation
\r
13 ///////////////////////////////////////////////////////////////////////////////
\r
15 #ifndef __APPSUPPORT_H__
\r
16 #define __APPSUPPORT_H__
\r
18 #include "swi_calls.h"
\r
20 #include "sim_support_flags.h"
\r
22 #define start_metric() __asm ("swi " SWI_METRIC_STARTstr)
\r
23 #define stop_metric() __asm ("swi " SWI_METRIC_STOPstr)
\r
24 #define dump_metric() __asm ("swi " SWI_METRIC_DUMPstr)
\r
25 #define clear_metric() __asm ("swi " SWI_METRIC_CLEARstr)
\r
26 #define stop_simulation() __asm ("swi " SWI_EXITstr)
\r
27 void pr(int proc, int msg_num, int num_arg);
\r
28 unsigned int get_proc_id();
\r
31 #define get_id() get_proc_id()
\r
33 unsigned int get_proc_num();
\r
35 // ---------------------------
\r
36 // Frequency scaling functions
\r
37 // ---------------------------
\r
38 void scale_this_core_frequency(unsigned short int divider);
\r
39 void scale_device_frequency(unsigned short int divider, int ID);
\r
40 unsigned short int get_this_core_frequency();
\r
41 unsigned short int get_device_frequency(int ID);
\r
43 #define RTEMS_TRACE_MAIN_APP
\r
45 #ifdef RTEMS_TRACE_MAIN_APP
\r
46 //It print out the processor id, the parameter "a" and the actual clock cycles
\r
47 //Eg. Processor 0 - 0x3e740 start_cycle:353089
\r
48 #define SHOW_TIME_START(a) pr(0x11111, 0x10020, (int)a)
\r
49 //Eg. Processor 0 - 0x3e740 stop_cycle:353143
\r
50 #define SHOW_TIME_STOP(a) pr(0x11111, 0x10030, (int)a)
\r
51 //It print out the string a
\r
52 #define SHOW_DEBUG(a) pr(0x11111, 0x10000, (int)a)
\r
53 #define SHOW_DEBUG_NON(a) pr(0x11111, 0x10001, (int)a)
\r
54 #define SHOW_DEBUG_NOP(a) pr(0x11111, 0x10002, (int)a)
\r
55 #define SHOW_DEBUG_NON_NOP(a) pr(0x11111, 0x10003, (int)a)
\r
56 //It print out the integer a
\r
57 #define SHOW_DEBUG_INT(a) pr(0x11111, 0x10010, (int)a)
\r
58 #define SHOW_DEBUG_INT_NON(a) pr(0x11111, 0x10011, (int)a)
\r
59 #define SHOW_DEBUG_INT_NOP(a) pr(0x11111, 0x10012, (int)a)
\r
60 #define SHOW_DEBUG_INT_NON_NOP(a) pr(0x11111, 0x10013, (int)a)
\r
63 #define SHOW_TIME_START(a)
\r
64 #define SHOW_TIME_STOP(a)
\r
65 #define SHOW_DEBUG(a)
\r
66 #define SHOW_DEBUG_NON(a)
\r
67 #define SHOW_DEBUG_INT_NOP(a)
\r
68 #define SHOW_DEBUG_INT_NON_NOP(a)
\r
69 #define SHOW_DEBUG_INT(a)
\r
70 #define SHOW_DEBUG_INT_NON(a)
\r
71 #define SHOW_DEBUG_INT_NOP(a)
\r
72 #define SHOW_DEBUG_INT_NON_NOP(a)
\r
75 unsigned long long int get_time();
\r
76 unsigned long long int get_cycle();
\r
77 unsigned long long int get_cycle1();
\r
79 #endif // __APPSUPPORT_H__
\r