^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) * @file arch/alpha/oprofile/op_impl.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * @remark Copyright 2002 OProfile authors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * @remark Read the file COPYING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * @author Richard Henderson <rth@twiddle.net>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifndef OP_IMPL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define OP_IMPL_H 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) extern int (*perf_irq)(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) /* Per-counter configuration as set via oprofilefs. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) struct op_counter_config {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) unsigned long enabled;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) unsigned long event;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) unsigned long count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) /* Dummies because I am too lazy to hack the userspace tools. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) unsigned long kernel;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) unsigned long user;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) unsigned long exl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) unsigned long unit_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) /* Per-architecture configure and hooks. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) struct op_mips_model {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) void (*reg_setup) (struct op_counter_config *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) void (*cpu_setup) (void *dummy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) int (*init)(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) void (*exit)(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) void (*cpu_start)(void *args);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) void (*cpu_stop)(void *args);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) char *cpu_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) unsigned char num_counters;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) void op_mips_backtrace(struct pt_regs * const regs, unsigned int depth);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #endif