#ifndef __MCOUNT_H__ struct mcountdata { unsigned long mcountdataSize; unsigned long statsEntrySize; unsigned long stackEntrySize; struct mstackentry *mstackptr; struct mstackentry *mstackbottom; unsigned long moverflow; // how many stack overflows encountered unsigned long menabled; unsigned long mentrycountH; // how often mcount was called. unsigned long mentrycountL; // how often mcount was called. void (*mleaveproc)(); struct mstatdata **mhashtable; struct mstatdata *mstattable; struct mstatdata *mstatentry; // point to most recently allocated stats entry. struct mstatdata *mstatend; int nentries; int ndepth; unsigned long mtotalticks; unsigned long mtotalclocks; }; struct mstatdata { struct mstatdata *slink; unsigned long scount; void *scaller; void *sfunction; unsigned long stimeH; unsigned long stimeL; unsigned long ssubcallsH; unsigned long ssubcallsL; }; struct mstackentry { void *caller; unsigned long ostimer ; void *function; void *caller2; unsigned long entrycount; }; extern struct mcountdata _mcountdata; extern void mcount(); // asm ("mcount"); extern void mcountleave(); // asm ("mcountleave"); #define __MCOUNT_H__ #endif