blob: 8dd5d6524d190e6c52debcb805beee0bc4e9186b [file] [log] [blame]
xjb04a4022021-11-25 15:01:52 +08001/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (c) 2019 MediaTek Inc.
4 */
5
6#ifndef _TRACE_H_
7#define _TRACE_H_
8
9
10extern void (*mp_cp_ptr)(unsigned long long timestamp,
11 struct task_struct *task,
12 unsigned long program_counter,
13 unsigned long dcookie,
14 unsigned long offset,
15 unsigned char cnt, unsigned int *value);
16
17#define MP_FMT1 "%x\n"
18#define MP_FMT2 "%x,%x\n"
19#define MP_FMT3 "%x,%x,%x\n"
20#define MP_FMT4 "%x,%x,%x,%x\n"
21#define MP_FMT5 "%x,%x,%x,%x,%x\n"
22#define MP_FMT6 "%x,%x,%x,%x,%x,%x\n"
23#define MP_FMT7 "%x,%x,%x,%x,%x,%x,%x\n"
24#define MP_FMT8 "%x,%x,%x,%x,%x,%x,%x,%x\n"
25#define MP_FMT9 "%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
26#define MP_FMT10 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
27#define MP_FMT11 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
28#define MP_FMT12 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
29#define MP_FMT13 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
30#define MP_FMT14 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
31#define MP_FMT15 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
32
33#define MET_GENERAL_PRINT(FUNC, count, value) \
34do { \
35 switch (count) { \
36 case 1: { \
37 FUNC(MP_FMT1, value[0]); \
38 } \
39 break; \
40 case 2: { \
41 FUNC(MP_FMT2, value[0], value[1]); \
42 } \
43 break; \
44 case 3: { \
45 FUNC(MP_FMT3, value[0], value[1], value[2]); \
46 } \
47 break; \
48 case 4: { \
49 FUNC(MP_FMT4, value[0], value[1], value[2], value[3]); \
50 } \
51 break; \
52 case 5: { \
53 FUNC(MP_FMT5, value[0], value[1], value[2], value[3], value[4]); \
54 } \
55 break; \
56 case 6: { \
57 FUNC(MP_FMT6, value[0], value[1], value[2], value[3], value[4], value[5]); \
58 } \
59 break; \
60 case 7: { \
61 FUNC(MP_FMT7, value[0], value[1], value[2], value[3], value[4], value[5], value[6]); \
62 } \
63 break; \
64 case 8: { \
65 FUNC(MP_FMT8, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7]); \
66 } \
67 break; \
68 case 9: { \
69 FUNC(MP_FMT9, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
70 value[8]); \
71 } \
72 break; \
73 case 10: { \
74 FUNC(MP_FMT10, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
75 value[8], value[9]); \
76 } \
77 break; \
78 case 11: { \
79 FUNC(MP_FMT11, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
80 value[8], value[9], value[10]); \
81 } \
82 break; \
83 case 12: { \
84 FUNC(MP_FMT12, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
85 value[8], value[9], value[10], value[11]); \
86 } \
87 break; \
88 case 13: { \
89 FUNC(MP_FMT13, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
90 value[8], value[9], value[10], value[11], value[12]); \
91 } \
92 break; \
93 case 14: { \
94 FUNC(MP_FMT14, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
95 value[8], value[9], value[10], value[11], value[12], value[13]); \
96 } \
97 break; \
98 case 15: { \
99 FUNC(MP_FMT15, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
100 value[8], value[9], value[10], value[11], value[12], value[13], value[14]); \
101 } \
102 break; \
103 } \
104} while (0)
105#endif /* _TRACE_H_ */