Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 48879
b: refs/heads/master
c: 2d9e1ae
h: refs/heads/master
i:
  48877: 610ef9d
  48875: d7a44ad
  48871: ae09df1
  48863: fb0d73a
v: v3
  • Loading branch information
Russell King authored and Russell King committed Feb 6, 2007
1 parent dca66e4 commit 2ef361e
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c265a762aa196de11f38f6f44cc817329f32a813
refs/heads/master: 2d9e1ae06d8f0bb187ea083fabab2dfb6f589270
10 changes: 10 additions & 0 deletions trunk/arch/arm/oprofile/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,18 @@ config OPROFILE

If unsure, say N.

if OPROFILE

config OPROFILE_ARMV6
bool
depends on CPU_V6 && !SMP
default y
select OPROFILE_ARM11_CORE

config OPROFILE_ARM11_CORE
bool

endif

endmenu

1 change: 1 addition & 0 deletions trunk/arch/arm/oprofile/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
oprofile-y := $(DRIVER_OBJS) common.o backtrace.o
oprofile-$(CONFIG_CPU_XSCALE) += op_model_xscale.o
oprofile-$(CONFIG_OPROFILE_ARM11_CORE) += op_model_arm11_core.o
oprofile-$(CONFIG_OPROFILE_ARMV6) += op_model_v6.o
4 changes: 4 additions & 0 deletions trunk/arch/arm/oprofile/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,10 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
spec = &op_xscale_spec;
#endif

#ifdef CONFIG_OPROFILE_ARMV6
spec = &op_armv6_spec;
#endif

if (spec) {
ret = spec->init();
if (ret < 0)
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/arm/oprofile/op_arm_model.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ struct op_arm_model_spec {
extern struct op_arm_model_spec op_xscale_spec;
#endif

extern struct op_arm_model_spec op_armv6_spec;

extern void arm_backtrace(struct pt_regs * const regs, unsigned int depth);

extern int __init op_arm_init(struct oprofile_operations *ops, struct op_arm_model_spec *spec);
Expand Down
67 changes: 67 additions & 0 deletions trunk/arch/arm/oprofile/op_model_v6.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* @file op_model_v6.c
* ARM11 Performance Monitor Driver
*
* Based on op_model_xscale.c
*
* @remark Copyright 2000-2004 Deepak Saxena <dsaxena@mvista.com>
* @remark Copyright 2000-2004 MontaVista Software Inc
* @remark Copyright 2004 Dave Jiang <dave.jiang@intel.com>
* @remark Copyright 2004 Intel Corporation
* @remark Copyright 2004 Zwane Mwaikambo <zwane@arm.linux.org.uk>
* @remark Copyright 2004 OProfile Authors
*
* @remark Read the file COPYING
*
* @author Tony Lindgren <tony@atomide.com>
*/

/* #define DEBUG */
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/oprofile.h>
#include <linux/interrupt.h>
#include <asm/irq.h>
#include <asm/system.h>

#include "op_counter.h"
#include "op_arm_model.h"
#include "op_model_arm11_core.h"

static int irqs[] = {
#ifdef CONFIG_ARCH_OMAP2
3,
#endif
};

static void armv6_pmu_stop(void)
{
arm11_stop_pmu();
arm11_release_interrupts(irqs, ARRAY_SIZE(irqs));
}

static int armv6_pmu_start(void)
{
int ret;

ret = arm11_request_interrupts(irqs, ARRAY_SIZE(irqs));
if (ret >= 0)
ret = arm11_start_pmu();

return ret;
}

static int armv6_detect_pmu(void)
{
return 0;
}

struct op_arm_model_spec op_armv6_spec = {
.init = armv6_detect_pmu,
.num_counters = 3,
.setup_ctrs = arm11_setup_pmu,
.start = armv6_pmu_start,
.stop = armv6_pmu_stop,
.name = "arm/armv6",
};

0 comments on commit 2ef361e

Please sign in to comment.