/** * @file arch/alpha/oprofile/op_impl.h * * @remark Copyright 2002 OProfile authors * @remark Read the file COPYING * * @author Richard Henderson <rth@twiddle.net> */ #ifndef OP_IMPL_H #define OP_IMPL_H 1 /* Per-counter configuration as set via oprofilefs. */ struct op_counter_config { unsigned long enabled; unsigned long event; unsigned long count; /* Dummies because I am too lazy to hack the userspace tools. */ unsigned long kernel; unsigned long user; unsigned long unit_mask; }; /* System-wide configuration as set via oprofilefs. */ struct op_system_config { unsigned long enable_pal; unsigned long enable_kernel; unsigned long enable_user; }; /* Cached values for the various performance monitoring registers. */ struct op_register_config { unsigned long enable; unsigned long mux_select; unsigned long proc_mode; unsigned long freq; unsigned long reset_values; unsigned long need_reset; }; /* Per-architecture configuration and hooks. */ struct op_axp_model { void (*reg_setup) (struct op_register_config *, struct op_counter_config *, struct op_system_config *); void (*cpu_setup) (void *); void (*reset_ctr) (struct op_register_config *, unsigned long); void (*handle_interrupt) (unsigned long, struct pt_regs *, struct op_counter_config *); char *cpu_type; unsigned char num_counters; unsigned char can_set_proc_mode; }; #endif |