xref: /linux/lib/trace_readwrite.c (revision 037d88f0)
1d593d64fSPrasad Sodagudi // SPDX-License-Identifier: GPL-2.0-only
2d593d64fSPrasad Sodagudi /*
3d593d64fSPrasad Sodagudi  * Register read and write tracepoints
4d593d64fSPrasad Sodagudi  *
5d593d64fSPrasad Sodagudi  * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
6d593d64fSPrasad Sodagudi  */
7d593d64fSPrasad Sodagudi 
8d593d64fSPrasad Sodagudi #include <linux/ftrace.h>
9d593d64fSPrasad Sodagudi #include <linux/module.h>
10*037d88f0STanzir Hasan #include <linux/io.h>
11d593d64fSPrasad Sodagudi 
12d593d64fSPrasad Sodagudi #define CREATE_TRACE_POINTS
13d593d64fSPrasad Sodagudi #include <trace/events/rwmmio.h>
14d593d64fSPrasad Sodagudi 
15d593d64fSPrasad Sodagudi #ifdef CONFIG_TRACE_MMIO_ACCESS
log_write_mmio(u64 val,u8 width,volatile void __iomem * addr,unsigned long caller_addr,unsigned long caller_addr0)16d593d64fSPrasad Sodagudi void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
175e5ff73cSSai Prakash Ranjan 		    unsigned long caller_addr, unsigned long caller_addr0)
18d593d64fSPrasad Sodagudi {
195e5ff73cSSai Prakash Ranjan 	trace_rwmmio_write(caller_addr, caller_addr0, val, width, addr);
20d593d64fSPrasad Sodagudi }
21d593d64fSPrasad Sodagudi EXPORT_SYMBOL_GPL(log_write_mmio);
22d593d64fSPrasad Sodagudi EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_write);
23d593d64fSPrasad Sodagudi 
log_post_write_mmio(u64 val,u8 width,volatile void __iomem * addr,unsigned long caller_addr,unsigned long caller_addr0)24d593d64fSPrasad Sodagudi void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
255e5ff73cSSai Prakash Ranjan 			 unsigned long caller_addr, unsigned long caller_addr0)
26d593d64fSPrasad Sodagudi {
275e5ff73cSSai Prakash Ranjan 	trace_rwmmio_post_write(caller_addr, caller_addr0, val, width, addr);
28d593d64fSPrasad Sodagudi }
29d593d64fSPrasad Sodagudi EXPORT_SYMBOL_GPL(log_post_write_mmio);
30d593d64fSPrasad Sodagudi EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_write);
31d593d64fSPrasad Sodagudi 
log_read_mmio(u8 width,const volatile void __iomem * addr,unsigned long caller_addr,unsigned long caller_addr0)32d593d64fSPrasad Sodagudi void log_read_mmio(u8 width, const volatile void __iomem *addr,
335e5ff73cSSai Prakash Ranjan 		   unsigned long caller_addr, unsigned long caller_addr0)
34d593d64fSPrasad Sodagudi {
355e5ff73cSSai Prakash Ranjan 	trace_rwmmio_read(caller_addr, caller_addr0, width, addr);
36d593d64fSPrasad Sodagudi }
37d593d64fSPrasad Sodagudi EXPORT_SYMBOL_GPL(log_read_mmio);
38d593d64fSPrasad Sodagudi EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_read);
39d593d64fSPrasad Sodagudi 
log_post_read_mmio(u64 val,u8 width,const volatile void __iomem * addr,unsigned long caller_addr,unsigned long caller_addr0)40d593d64fSPrasad Sodagudi void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
415e5ff73cSSai Prakash Ranjan 			unsigned long caller_addr, unsigned long caller_addr0)
42d593d64fSPrasad Sodagudi {
435e5ff73cSSai Prakash Ranjan 	trace_rwmmio_post_read(caller_addr, caller_addr0, val, width, addr);
44d593d64fSPrasad Sodagudi }
45d593d64fSPrasad Sodagudi EXPORT_SYMBOL_GPL(log_post_read_mmio);
46d593d64fSPrasad Sodagudi EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_read);
47d593d64fSPrasad Sodagudi #endif /* CONFIG_TRACE_MMIO_ACCESS */
48