The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/mips/include/pmc_mdep.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * This file is in the public domain.
    3  *
    4  *      from: src/sys/alpha/include/pmc_mdep.h,v 1.2 2005/06/09 19:45:06 jkoshy
    5  * $FreeBSD: releng/10.1/sys/mips/include/pmc_mdep.h 233628 2012-03-28 20:58:30Z fabient $
    6  */
    7 
    8 #ifndef _MACHINE_PMC_MDEP_H_
    9 #define _MACHINE_PMC_MDEP_H_
   10 
   11 #define PMC_MDEP_CLASS_INDEX_MIPS       1
   12 
   13 union pmc_md_op_pmcallocate {
   14         uint64_t        __pad[4];
   15 };
   16 
   17 /* Logging */
   18 #if defined(__mips_n64)
   19 #define PMCLOG_READADDR         PMCLOG_READ64
   20 #define PMCLOG_EMITADDR         PMCLOG_EMIT64
   21 #else
   22 #define PMCLOG_READADDR         PMCLOG_READ32
   23 #define PMCLOG_EMITADDR         PMCLOG_EMIT32
   24 #endif
   25 
   26 #if     _KERNEL
   27 
   28 /*
   29  * MIPS event codes are encoded with a select bit.  The
   30  * select bit is used when writing to CP0 so that we 
   31  * can select either counter 0/2 or 1/3.  The cycle
   32  * and instruction counters are special in that they
   33  * can be counted on either 0/2 or 1/3.
   34  */
   35 
   36 #define MIPS_CTR_ALL    255 /* Count events in any counter. */
   37 #define MIPS_CTR_0      0 /* Counter 0 Event */
   38 #define MIPS_CTR_1      1 /* Counter 1 Event */
   39 
   40 struct mips_event_code_map {
   41         uint32_t        pe_ev;       /* enum value */
   42         uint8_t         pe_counter;  /* Which counter this can be counted in. */
   43         uint8_t         pe_code;     /* numeric code */
   44 };
   45 
   46 struct mips_pmc_spec {
   47         uint32_t        ps_cpuclass;
   48         uint32_t        ps_cputype;
   49         uint32_t        ps_capabilities;
   50         int             ps_counter_width;
   51 };
   52 
   53 union pmc_md_pmc {
   54         uint32_t        pm_mips_evsel;
   55 };
   56 
   57 #define PMC_TRAPFRAME_TO_PC(TF) ((TF)->pc)
   58 
   59 extern const struct mips_event_code_map mips_event_codes[];
   60 extern const int mips_event_codes_size;
   61 extern int mips_npmcs;
   62 extern struct mips_pmc_spec mips_pmc_spec;
   63 
   64 /*
   65  * Prototypes
   66  */
   67 struct pmc_mdep *pmc_mips_initialize(void);
   68 void            pmc_mips_finalize(struct pmc_mdep *_md);
   69 
   70 /*
   71  * CPU-specific functions
   72  */
   73 
   74 uint32_t        mips_get_perfctl(int cpu, int ri, uint32_t event, uint32_t caps);
   75 uint64_t        mips_pmcn_read(unsigned int pmc);
   76 uint64_t        mips_pmcn_write(unsigned int pmc, uint64_t v);
   77 
   78 #endif /* _KERNEL */
   79 
   80 #endif /* !_MACHINE_PMC_MDEP_H_ */

Cache object: d7fd1c7197d329b2faca7e8bf1e70f2f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.