diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2013-01-22 06:32:38 -0500 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2013-02-15 12:46:00 -0500 |
commit | 769bc1fd7b8591a312d4c5c8834bc6510272938e (patch) | |
tree | 72ce15497ddabc58e492a0f489d1a6a08639f06b | |
parent | 01b812bcce4920d9587fab7a964493d368be1522 (diff) |
ARC: OProfile support
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Robert Richter <rric@kernel.org>
Cc: oprofile-list@lists.sf.net
Reviewed-by: James Hogan <james.hogan@imgtec.com>
-rw-r--r-- | arch/arc/Kconfig | 1 | ||||
-rw-r--r-- | arch/arc/Makefile | 2 | ||||
-rw-r--r-- | arch/arc/oprofile/Makefile | 9 | ||||
-rw-r--r-- | arch/arc/oprofile/common.c | 26 |
4 files changed, 38 insertions, 0 deletions
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig index 409b9378032e..405ea7a756b8 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig | |||
@@ -25,6 +25,7 @@ config ARC | |||
25 | select HAVE_ARCH_TRACEHOOK | 25 | select HAVE_ARCH_TRACEHOOK |
26 | select HAVE_GENERIC_HARDIRQS | 26 | select HAVE_GENERIC_HARDIRQS |
27 | select HAVE_MEMBLOCK | 27 | select HAVE_MEMBLOCK |
28 | select HAVE_OPROFILE | ||
28 | select IRQ_DOMAIN | 29 | select IRQ_DOMAIN |
29 | select MODULES_USE_ELF_RELA | 30 | select MODULES_USE_ELF_RELA |
30 | select NO_BOOTMEM | 31 | select NO_BOOTMEM |
diff --git a/arch/arc/Makefile b/arch/arc/Makefile index 5c98fc19d99d..642c0406d600 100644 --- a/arch/arc/Makefile +++ b/arch/arc/Makefile | |||
@@ -100,6 +100,8 @@ ifneq ($(platform-y),) | |||
100 | core-y += arch/arc/plat-$(PLATFORM)/ | 100 | core-y += arch/arc/plat-$(PLATFORM)/ |
101 | endif | 101 | endif |
102 | 102 | ||
103 | drivers-$(CONFIG_OPROFILE) += arch/arc/oprofile/ | ||
104 | |||
103 | libs-y += arch/arc/lib/ $(LIBGCC) | 105 | libs-y += arch/arc/lib/ $(LIBGCC) |
104 | 106 | ||
105 | #default target for make without any arguements. | 107 | #default target for make without any arguements. |
diff --git a/arch/arc/oprofile/Makefile b/arch/arc/oprofile/Makefile new file mode 100644 index 000000000000..ce417a6e70b8 --- /dev/null +++ b/arch/arc/oprofile/Makefile | |||
@@ -0,0 +1,9 @@ | |||
1 | obj-$(CONFIG_OPROFILE) += oprofile.o | ||
2 | |||
3 | DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \ | ||
4 | oprof.o cpu_buffer.o buffer_sync.o \ | ||
5 | event_buffer.o oprofile_files.o \ | ||
6 | oprofilefs.o oprofile_stats.o \ | ||
7 | timer_int.o ) | ||
8 | |||
9 | oprofile-y := $(DRIVER_OBJS) common.o | ||
diff --git a/arch/arc/oprofile/common.c b/arch/arc/oprofile/common.c new file mode 100644 index 000000000000..c80fcad4a5a7 --- /dev/null +++ b/arch/arc/oprofile/common.c | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | * | ||
8 | * Based on orig code from @author John Levon <levon@movementarian.org> | ||
9 | */ | ||
10 | |||
11 | #include <linux/oprofile.h> | ||
12 | #include <linux/perf_event.h> | ||
13 | |||
14 | int __init oprofile_arch_init(struct oprofile_operations *ops) | ||
15 | { | ||
16 | /* | ||
17 | * A failure here, forces oprofile core to switch to Timer based PC | ||
18 | * sampling, which will happen if say perf is not enabled/available | ||
19 | */ | ||
20 | return oprofile_perf_init(ops); | ||
21 | } | ||
22 | |||
23 | void oprofile_arch_exit(void) | ||
24 | { | ||
25 | oprofile_perf_exit(); | ||
26 | } | ||