9bd46da45e
Xtensa Performance Monitor Module has up to 8 32 bit wide performance counters. Each counter may be enabled independently and can count any single type of hardware performance events. Event counting may be enabled and disabled globally (per PMM). Each counter has status register with bits indicating if the counter has been overflown and may be programmed to raise profiling IRQ on overflow. This IRQ is used to rewind counters and allow for counting more than 2^32 samples for counting events and to report samples for sampling events. For more details see Tensilica Debug User's Guide, chapter 8 "Performance monitor module". Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
42 lines
1.5 KiB
Makefile
42 lines
1.5 KiB
Makefile
#
|
|
# Makefile for the Linux/Xtensa kernel.
|
|
#
|
|
|
|
extra-y := head.o vmlinux.lds
|
|
|
|
obj-y := align.o coprocessor.o entry.o irq.o pci-dma.o platform.o process.o \
|
|
ptrace.o setup.o signal.o stacktrace.o syscall.o time.o traps.o \
|
|
vectors.o
|
|
|
|
obj-$(CONFIG_KGDB) += xtensa-stub.o
|
|
obj-$(CONFIG_PCI) += pci.o
|
|
obj-$(CONFIG_MODULES) += xtensa_ksyms.o module.o
|
|
obj-$(CONFIG_FUNCTION_TRACER) += mcount.o
|
|
obj-$(CONFIG_SMP) += smp.o mxhead.o
|
|
obj-$(CONFIG_XTENSA_VARIANT_HAVE_PERF_EVENTS) += perf_event.o
|
|
|
|
AFLAGS_head.o += -mtext-section-literals
|
|
|
|
# In the Xtensa architecture, assembly generates literals which must always
|
|
# precede the L32R instruction with a relative offset less than 256 kB.
|
|
# Therefore, the .text and .literal section must be combined in parenthesis
|
|
# in the linker script, such as: *(.literal .text).
|
|
#
|
|
# We need to post-process the generated vmlinux.lds scripts to convert
|
|
# *(xxx.text) to *(xxx.literal xxx.text) for the following text sections:
|
|
# .text .ref.text .*init.text .*exit.text .text.*
|
|
#
|
|
# Replicate rules in scripts/Makefile.build
|
|
|
|
sed-y = -e 's/\*(\(\.[a-z]*it\|\.ref\|\)\.text)/*(\1.literal \1.text)/g' \
|
|
-e 's/\.text\.unlikely/.literal.unlikely .text.unlikely/g' \
|
|
-e 's/\*(\(\.text .*\))/*(.literal \1)/g' \
|
|
-e 's/\*(\(\.text\.[a-z]*\))/*(\1.literal \1)/g'
|
|
|
|
quiet_cmd__cpp_lds_S = LDS $@
|
|
cmd__cpp_lds_S = $(CPP) $(cpp_flags) -P -C -Uxtensa -D__ASSEMBLY__ $< \
|
|
| sed $(sed-y) >$@
|
|
|
|
$(obj)/vmlinux.lds: $(src)/vmlinux.lds.S FORCE
|
|
$(call if_changed_dep,_cpp_lds_S)
|