blob: f0abcf130079ac84032a6fadc72f86528ed8e24c [file] [log] [blame]
/*
* Copyright (C) 2019 MediaTek Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef _TRACE_H_
#define _TRACE_H_
extern void (*mp_cp_ptr)(unsigned long long timestamp,
struct task_struct *task,
unsigned long program_counter,
unsigned long dcookie,
unsigned long offset,
unsigned char cnt, unsigned int *value);
#define MP_FMT1 "%x\n"
#define MP_FMT2 "%x,%x\n"
#define MP_FMT3 "%x,%x,%x\n"
#define MP_FMT4 "%x,%x,%x,%x\n"
#define MP_FMT5 "%x,%x,%x,%x,%x\n"
#define MP_FMT6 "%x,%x,%x,%x,%x,%x\n"
#define MP_FMT7 "%x,%x,%x,%x,%x,%x,%x\n"
#define MP_FMT8 "%x,%x,%x,%x,%x,%x,%x,%x\n"
#define MP_FMT9 "%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
#define MP_FMT10 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
#define MP_FMT11 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
#define MP_FMT12 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
#define MP_FMT13 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
#define MP_FMT14 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
#define MP_FMT15 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n"
#define MET_GENERAL_PRINT(FUNC, count, value) \
do { \
switch (count) { \
case 1: { \
FUNC(MP_FMT1, value[0]); \
} \
break; \
case 2: { \
FUNC(MP_FMT2, value[0], value[1]); \
} \
break; \
case 3: { \
FUNC(MP_FMT3, value[0], value[1], value[2]); \
} \
break; \
case 4: { \
FUNC(MP_FMT4, value[0], value[1], value[2], value[3]); \
} \
break; \
case 5: { \
FUNC(MP_FMT5, value[0], value[1], value[2], value[3], value[4]); \
} \
break; \
case 6: { \
FUNC(MP_FMT6, value[0], value[1], value[2], value[3], value[4], value[5]); \
} \
break; \
case 7: { \
FUNC(MP_FMT7, value[0], value[1], value[2], value[3], value[4], value[5], value[6]); \
} \
break; \
case 8: { \
FUNC(MP_FMT8, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7]); \
} \
break; \
case 9: { \
FUNC(MP_FMT9, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
value[8]); \
} \
break; \
case 10: { \
FUNC(MP_FMT10, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
value[8], value[9]); \
} \
break; \
case 11: { \
FUNC(MP_FMT11, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
value[8], value[9], value[10]); \
} \
break; \
case 12: { \
FUNC(MP_FMT12, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
value[8], value[9], value[10], value[11]); \
} \
break; \
case 13: { \
FUNC(MP_FMT13, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
value[8], value[9], value[10], value[11], value[12]); \
} \
break; \
case 14: { \
FUNC(MP_FMT14, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
value[8], value[9], value[10], value[11], value[12], value[13]); \
} \
break; \
case 15: { \
FUNC(MP_FMT15, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], \
value[8], value[9], value[10], value[11], value[12], value[13], value[14]); \
} \
break; \
} \
} while (0)
#endif /* _TRACE_H_ */