diff options
author | Zhigang Lu <zlu@tilera.com> | 2014-01-27 02:11:07 -0500 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2014-03-07 11:19:47 -0500 |
commit | 8e3441ebab48c3537b1a9ae06fb7616a3332bd35 (patch) | |
tree | 6b2a748d7952827e121dd78aa0f4c6dcb449dfb9 /arch/tile/kernel/intvec_32.S | |
parent | 2e285458e62fe202cb81b831f41779c7e7e5cbe6 (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.S | 13 |
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 |