blob: ea823ea44a5c953042f9d677904465310b7234cb [file] [log] [blame]
xjb04a4022021-11-25 15:01:52 +08001/* Copyright Statement:
2 *
3 * @2015 MediaTek Inc. All rights reserved.
4 *
5 * This software/firmware and related documentation ("MediaTek Software") are
6 * protected under relevant copyright laws. The information contained herein
7 * is confidential and proprietary to MediaTek Inc. and/or its licensors.
8 * Without the prior written permission of MediaTek Inc. and/or its licensors,
9 * any reproduction, modification, use or disclosure of MediaTek Software,
10 * and information contained herein, in whole or in part, shall be strictly prohibited.
11 *
12 * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
13 * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
14 * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
15 * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
18 * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
19 * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
20 * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
21 * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
22 * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
23 * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
24 * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
25 * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
26 * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
27 * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
28 * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
29 * MEDIATEK FOR SUCH MEDIATEK SOFTWARE.
30 */
31#ifndef _MT_PBFR_H_
32#define _MT_PBFR_H_
33
34#include "encoding.h"
35
36#define PBFR_STOP 0
37#define PBFR_START 1
38#define PBFR_REPORT 2
39
40#if defined(P_MODE_0) // task/RTOS in machine mode
41#define read_mcause() mrv_read_csr(CSR_MCAUSE)
42#ifdef MRV55
43#define read_micause() mrv_read_csr(MRV_VIC_MICAUSE_G)
44#else
45#define read_micause() mrv_read_csr(MRV_VIC_MICAUSE)
46#endif
47#elif defined(P_MODE_1) // task/RTOS in user mode
48#define read_mcause() (unsigned long)syscall(SYS_get_csr, CSR_MCAUSE, 0, 0)
49#ifdef MRV55
50#define read_micause() (unsigned long)syscall(SYS_get_csr, MRV_VIC_MICAUSE_G, 0, 0)
51#else
52#define read_micause() (unsigned long)syscall(SYS_get_csr, MRV_VIC_MICAUSE, 0, 0)
53#endif
54#endif /* P_MODE_0 */
55
56/* VIC_VEC indicates the last taken interrupt vector */
57#define read_taken_INT() ({ unsigned long __tmp_mc, __tmp_mic; \
58 __tmp_mc = read_mcause(); \
59 if(__tmp_mc == IRQ_M_EXT) { \
60 __tmp_mic = read_micause(); \
61 __tmp_mc |= (__tmp_mic << 16); \
62 } \
63 __tmp_mc;})
64
65unsigned long long pbfr_get_timestamp(int isr_ctx);
66
67#ifdef PBFR_SUPPORT_CACHE_COUNT
68unsigned long long pbfr_get_timestamp(int isr_ctx);
69void vPortEnableCacheCount(void);
70void vPortDisableCacheCount(void);
71unsigned long long vPortGetICacheAccessCount(void);
72unsigned long long vPortGetICacheMissCount(void);
73unsigned long long vPortGetDCacheAccessCount(void);
74unsigned long long vPortGetDCacheMissCount(void);
75void vPortHaltCacheCount(void);
76void vPortResumeCacheCount(void);
77#endif
78
79#ifdef PBFR_SUPPORT_IOSTALL
80void vPortEnableIOStallRate(void);
81void vPortDisableIOStallRate(void);
82int vPortGetIOStallRate(void);
83#endif
84
85#endif