diff options
| -rw-r--r-- | arch/arm/Kconfig | 2 | ||||
| -rw-r--r-- | arch/arm/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/kernel/time.c | 3 | ||||
| -rw-r--r-- | arch/arm/oprofile/Kconfig | 23 | ||||
| -rw-r--r-- | arch/arm/oprofile/Makefile | 9 | ||||
| -rw-r--r-- | arch/arm/oprofile/init.c | 22 | ||||
| -rw-r--r-- | drivers/oprofile/timer_int.c | 1 |
7 files changed, 60 insertions, 1 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 0ff30774e762..aa3469d06933 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -639,6 +639,8 @@ source "drivers/media/Kconfig" source "fs/Kconfig" +source "arch/arm/oprofile/Kconfig" + source "drivers/video/Kconfig" if ARCH_ACORN || ARCH_CLPS7500 || ARCH_TBOX || ARCH_SHARK || ARCH_SA1100 || PCI diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 371a4b10a4cc..00963cebd1ff 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -116,6 +116,7 @@ endif core-$(CONFIG_FPE_NWFPE) += arch/arm/nwfpe/ core-$(CONFIG_FPE_FASTFPE) += $(FASTFPE_OBJ) +drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/ drivers-$(CONFIG_ARCH_CLPS7500) += drivers/acorn/char/ drivers-$(CONFIG_ARCH_L7200) += drivers/acorn/char/ diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index 150f590bcf81..80afc5bc84a1 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c @@ -85,6 +85,9 @@ unsigned long long __attribute__((weak)) sched_clock(void) */ static inline void do_profile(struct pt_regs *regs) { + + profile_hook(regs); + if (!user_mode(regs) && prof_buffer && current->pid) { diff --git a/arch/arm/oprofile/Kconfig b/arch/arm/oprofile/Kconfig new file mode 100644 index 000000000000..19d37730b664 --- /dev/null +++ b/arch/arm/oprofile/Kconfig @@ -0,0 +1,23 @@ + +menu "Profiling support" + depends on EXPERIMENTAL + +config PROFILING + bool "Profiling support (EXPERIMENTAL)" + help + Say Y here to enable the extended profiling support mechanisms used + by profilers such as OProfile. + + +config OPROFILE + tristate "OProfile system profiling (EXPERIMENTAL)" + depends on PROFILING + help + OProfile is a profiling system capable of profiling the + whole system, include the kernel, kernel modules, libraries, + and applications. + + If unsure, say N. + +endmenu + diff --git a/arch/arm/oprofile/Makefile b/arch/arm/oprofile/Makefile new file mode 100644 index 000000000000..e9feca1ca28b --- /dev/null +++ b/arch/arm/oprofile/Makefile @@ -0,0 +1,9 @@ +obj-$(CONFIG_OPROFILE) += oprofile.o + +DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \ + oprof.o cpu_buffer.o buffer_sync.o \ + event_buffer.o oprofile_files.o \ + oprofilefs.o oprofile_stats.o \ + timer_int.o ) + +oprofile-y := $(DRIVER_OBJS) init.o diff --git a/arch/arm/oprofile/init.c b/arch/arm/oprofile/init.c new file mode 100644 index 000000000000..2739aedcbc1b --- /dev/null +++ b/arch/arm/oprofile/init.c @@ -0,0 +1,22 @@ +/** + * @file init.c + * + * @remark Copyright 2004 Oprofile Authors + * + * @author Zwane Mwaikambo + */ + +#include <linux/oprofile.h> +#include <linux/init.h> +#include <linux/errno.h> + +int oprofile_arch_init(struct oprofile_operations **ops) +{ + int ret = -ENODEV; + + return ret; +} + +void oprofile_arch_exit(void) +{ +} diff --git a/drivers/oprofile/timer_int.c b/drivers/oprofile/timer_int.c index 3e8c44b2eff2..3fae2c772465 100644 --- a/drivers/oprofile/timer_int.c +++ b/drivers/oprofile/timer_int.c @@ -10,7 +10,6 @@ #include <linux/kernel.h> #include <linux/notifier.h> #include <linux/smp.h> -#include <linux/irq.h> #include <linux/oprofile.h> #include <linux/profile.h> #include <linux/init.h> |
