xref: /linux/lib/trace_readwrite.c (revision 5e5ff73c)
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>
10d593d64fSPrasad Sodagudi #include <asm-generic/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
16d593d64fSPrasad Sodagudi void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
17*5e5ff73cSSai Prakash Ranjan 		    unsigned long caller_addr, unsigned long caller_addr0)
18d593d64fSPrasad Sodagudi {
19*5e5ff73cSSai 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 
24d593d64fSPrasad Sodagudi void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
25*5e5ff73cSSai Prakash Ranjan 			 unsigned long caller_addr, unsigned long caller_addr0)
26d593d64fSPrasad Sodagudi {
27*5e5ff73cSSai 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 
32d593d64fSPrasad Sodagudi void log_read_mmio(u8 width, const volatile void __iomem *addr,
33*5e5ff73cSSai Prakash Ranjan 		   unsigned long caller_addr, unsigned long caller_addr0)
34d593d64fSPrasad Sodagudi {
35*5e5ff73cSSai 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 
40d593d64fSPrasad Sodagudi void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
41*5e5ff73cSSai Prakash Ranjan 			unsigned long caller_addr, unsigned long caller_addr0)
42d593d64fSPrasad Sodagudi {
43*5e5ff73cSSai 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