OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [gprof/] [gmon.h] - Blame information for rev 868

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
/*
2
 * Copyright (c) 1983, 1991, 1993, 2001
3
 *      The Regents of the University of California.  All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions
7
 * are met:
8
 * 1. Redistributions of source code must retain the above copyright
9
 *    notice, this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright
11
 *    notice, this list of conditions and the following disclaimer in the
12
 *    documentation and/or other materials provided with the distribution.
13
 * 3. Neither the name of the University nor the names of its contributors
14
 *    may be used to endorse or promote products derived from this software
15
 *    without specific prior written permission.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
 * SUCH DAMAGE.
28
 */
29
#ifndef gmon_h
30
#define gmon_h
31
 
32
/* Size of the 4.4BSD gmon header */
33
#define GMON_HDRSIZE_BSD44_32 (4 + 4 + 4 + 4 + 4 + (3 * 4))
34
#define GMON_HDRSIZE_BSD44_64 (8 + 8 + 4 + 4 + 4 + (3 * 4))
35
 
36
/* *INDENT-OFF* */
37
/* For documentation purposes only.
38
 
39
   struct raw_phdr
40
    {
41
      char low_pc[sizeof(void *)];   -- base pc address of sample buffer
42
      char high_pc[sizeof(void *)];  -- max pc address of sampled buffer
43
      char ncnt[4];                  -- size of sample buffer (plus this
44
                                        header)
45
 
46
      char version[4];               -- version number
47
      char profrate[4];              -- profiling clock rate
48
      char spare[3*4];               -- reserved
49
    };
50
*/
51
/* *INDENT-ON* */
52
 
53
#define GMONVERSION     0x00051879
54
 
55
/* Size of the old BSD gmon header */
56
#define GMON_HDRSIZE_OLDBSD_32 (4 + 4 + 4) 
57
 
58
/* FIXME: Checking host compiler defines here means that we can't
59
   use a cross gprof alpha OSF.  */
60
#if defined(__alpha__) && defined (__osf__) 
61
#define GMON_HDRSIZE_OLDBSD_64 (8 + 8 + 4 + 4)
62
#else
63
#define GMON_HDRSIZE_OLDBSD_64 (8 + 8 + 4)
64
#endif
65
 
66
/* *INDENT-OFF* */
67
/* For documentation purposes only.
68
 
69
  struct old_raw_phdr
70
    {
71
      char low_pc[sizeof(void *)];  -- base pc address of sample buffer
72
      char high_pc[sizeof(void *)]  -- max pc address of sampled buffer
73
      char ncnt[4];                 -- size of sample buffer (plus this
74
                                       header)
75
 
76
      if defined (__alpha__) && defined (__osf__)
77
      char pad[4];                  -- DEC's OSF v3.0 uses 4 bytes of padding
78
                                    -- to bring the header to a size that is a
79
                                    -- multiple of 8.
80
      endif
81
    };
82
*/
83
/* *INDENT-ON* */
84
 
85
/*
86
 * Histogram counters are unsigned shorts:
87
 */
88
#define HISTCOUNTER unsigned short
89
 
90
/*
91
 * Fraction of text space to allocate for histogram counters here, 1/2:
92
 */
93
#define HISTFRACTION    2
94
 
95
/*
96
 * Fraction of text space to allocate for from hash buckets.  The
97
 * value of HASHFRACTION is based on the minimum number of bytes of
98
 * separation between two subroutine call points in the object code.
99
 * Given MIN_SUBR_SEPARATION bytes of separation the value of
100
 * HASHFRACTION is calculated as:
101
 *
102
 *      HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1);
103
 *
104
 * For the VAX, the shortest two call sequence is:
105
 *
106
 *      calls   $0,(r0)
107
 *      calls   $0,(r0)
108
 *
109
 * which is separated by only three bytes, thus HASHFRACTION is
110
 * calculated as:
111
 *
112
 *      HASHFRACTION = 3 / (2 * 2 - 1) = 1
113
 *
114
 * Note that the division above rounds down, thus if MIN_SUBR_FRACTION
115
 * is less than three, this algorithm will not work!
116
 */
117
#define HASHFRACTION 1
118
 
119
/*
120
 * Percent of text space to allocate for tostructs with a minimum:
121
 */
122
#define ARCDENSITY      2
123
#define MINARCS         50
124
 
125
struct tostruct
126
  {
127
    char *selfpc;
128
    int count;
129
    unsigned short link;
130
  };
131
 
132
/*
133
 * A raw arc, with pointers to the calling site and the called site
134
 * and a count.  Everything is defined in terms of characters so
135
 * as to get a packed representation (otherwise, different compilers
136
 * might introduce different padding):
137
 */
138
 
139
/* *INDENT-OFF* */
140
/* For documentation purposes only.
141
 
142
  struct raw_arc
143
    {
144
      char from_pc[sizeof(void *)];
145
      char self_pc[sizeof(void *)];
146
      char count[sizeof(long)];
147
    };
148
*/
149
/* *INDENT-ON* */
150
 
151
/*
152
 * General rounding functions:
153
 */
154
#define ROUNDDOWN(x,y)  (((x)/(y))*(y))
155
#define ROUNDUP(x,y)    ((((x)+(y)-1)/(y))*(y))
156
 
157
#endif /* gmon_h */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.