aboutsummaryrefslogtreecommitdiffstats
path: root/arch/tile/kernel/intvec_32.S
diff options
context:
space:
mode:
authorZhigang Lu <zlu@tilera.com>2014-01-27 02:11:07 -0500
committerChris Metcalf <cmetcalf@tilera.com>2014-03-07 11:19:47 -0500
commit8e3441ebab48c3537b1a9ae06fb7616a3332bd35 (patch)
tree6b2a748d7952827e121dd78aa0f4c6dcb449dfb9 /arch/tile/kernel/intvec_32.S
parent2e285458e62fe202cb81b831f41779c7e7e5cbe6 (diff)
tile: Add support for handling PMC hardware
The PMC module is used by perf_events, oprofile and watchdogs. Signed-off-by: Zhigang Lu <zlu@tilera.com> Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile/kernel/intvec_32.S')
-rw-r--r--arch/tile/kernel/intvec_32.S13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/tile/kernel/intvec_32.S b/arch/tile/kernel/intvec_32.S
index 2cbe6d5dd6b0..605ffbda44ff 100644
--- a/arch/tile/kernel/intvec_32.S
+++ b/arch/tile/kernel/intvec_32.S
@@ -313,13 +313,13 @@ intvec_\vecname:
313 movei r3, 0 313 movei r3, 0
314 } 314 }
315 .else 315 .else
316 .ifc \c_routine, op_handle_perf_interrupt 316 .ifc \c_routine, handle_perf_interrupt
317 { 317 {
318 mfspr r2, PERF_COUNT_STS 318 mfspr r2, PERF_COUNT_STS
319 movei r3, -1 /* not used, but set for consistency */ 319 movei r3, -1 /* not used, but set for consistency */
320 } 320 }
321 .else 321 .else
322 .ifc \c_routine, op_handle_aux_perf_interrupt 322 .ifc \c_routine, handle_perf_interrupt
323 { 323 {
324 mfspr r2, AUX_PERF_COUNT_STS 324 mfspr r2, AUX_PERF_COUNT_STS
325 movei r3, -1 /* not used, but set for consistency */ 325 movei r3, -1 /* not used, but set for consistency */
@@ -1835,8 +1835,9 @@ int_unalign:
1835/* Include .intrpt array of interrupt vectors */ 1835/* Include .intrpt array of interrupt vectors */
1836 .section ".intrpt", "ax" 1836 .section ".intrpt", "ax"
1837 1837
1838#define op_handle_perf_interrupt bad_intr 1838#ifndef CONFIG_USE_PMC
1839#define op_handle_aux_perf_interrupt bad_intr 1839#define handle_perf_interrupt bad_intr
1840#endif
1840 1841
1841#ifndef CONFIG_HARDWALL 1842#ifndef CONFIG_HARDWALL
1842#define do_hardwall_trap bad_intr 1843#define do_hardwall_trap bad_intr
@@ -1877,7 +1878,7 @@ int_unalign:
1877 int_hand INT_IDN_AVAIL, IDN_AVAIL, bad_intr 1878 int_hand INT_IDN_AVAIL, IDN_AVAIL, bad_intr
1878 int_hand INT_UDN_AVAIL, UDN_AVAIL, bad_intr 1879 int_hand INT_UDN_AVAIL, UDN_AVAIL, bad_intr
1879 int_hand INT_PERF_COUNT, PERF_COUNT, \ 1880 int_hand INT_PERF_COUNT, PERF_COUNT, \
1880 op_handle_perf_interrupt, handle_nmi 1881 handle_perf_interrupt, handle_nmi
1881 int_hand INT_INTCTRL_3, INTCTRL_3, bad_intr 1882 int_hand INT_INTCTRL_3, INTCTRL_3, bad_intr
1882#if CONFIG_KERNEL_PL == 2 1883#if CONFIG_KERNEL_PL == 2
1883 dc_dispatch INT_INTCTRL_2, INTCTRL_2 1884 dc_dispatch INT_INTCTRL_2, INTCTRL_2
@@ -1902,7 +1903,7 @@ int_unalign:
1902 int_hand INT_SN_CPL, SN_CPL, bad_intr 1903 int_hand INT_SN_CPL, SN_CPL, bad_intr
1903 int_hand INT_DOUBLE_FAULT, DOUBLE_FAULT, do_trap 1904 int_hand INT_DOUBLE_FAULT, DOUBLE_FAULT, do_trap
1904 int_hand INT_AUX_PERF_COUNT, AUX_PERF_COUNT, \ 1905 int_hand INT_AUX_PERF_COUNT, AUX_PERF_COUNT, \
1905 op_handle_aux_perf_interrupt, handle_nmi 1906 handle_perf_interrupt, handle_nmi
1906 1907
1907 /* Synthetic interrupt delivered only by the simulator */ 1908 /* Synthetic interrupt delivered only by the simulator */
1908 int_hand INT_BREAKPOINT, BREAKPOINT, do_breakpoint 1909 int_hand INT_BREAKPOINT, BREAKPOINT, do_breakpoint