0001
0002
0003
0004
0005
0006
0007
0008 #include <linux/ftrace.h>
0009 #include <linux/module.h>
0010 #include <asm-generic/io.h>
0011
0012 #define CREATE_TRACE_POINTS
0013 #include <trace/events/rwmmio.h>
0014
0015 #ifdef CONFIG_TRACE_MMIO_ACCESS
0016 void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
0017 unsigned long caller_addr)
0018 {
0019 trace_rwmmio_write(caller_addr, val, width, addr);
0020 }
0021 EXPORT_SYMBOL_GPL(log_write_mmio);
0022 EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_write);
0023
0024 void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
0025 unsigned long caller_addr)
0026 {
0027 trace_rwmmio_post_write(caller_addr, val, width, addr);
0028 }
0029 EXPORT_SYMBOL_GPL(log_post_write_mmio);
0030 EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_write);
0031
0032 void log_read_mmio(u8 width, const volatile void __iomem *addr,
0033 unsigned long caller_addr)
0034 {
0035 trace_rwmmio_read(caller_addr, width, addr);
0036 }
0037 EXPORT_SYMBOL_GPL(log_read_mmio);
0038 EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_read);
0039
0040 void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
0041 unsigned long caller_addr)
0042 {
0043 trace_rwmmio_post_read(caller_addr, val, width, addr);
0044 }
0045 EXPORT_SYMBOL_GPL(log_post_read_mmio);
0046 EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_read);
0047 #endif