blob: b7ec812de34a02f65eadfc87b9fd1bfce5b6105a [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 *
38 * Filename:
39 * ---------
40 * ex_public.h
41 *
42 * Project:
43 * --------
44 * Maui_Software
45 *
46 * Description:
47 * ------------
48 * Header file for exception handling
49 *
50 *
51 * Author:
52 * -------
53 * -------
54 *
55 *============================================================================
56 * HISTORY
57 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
58 *------------------------------------------------------------------------------
59 * removed!
60 * removed!
61 * removed!
62 *
63 * removed!
64 * removed!
65 * removed!
66 *
67 * removed!
68 * removed!
69 * removed!
70 * removed!
71 *
72 * removed!
73 * removed!
74 * removed!
75 * removed!
76 * removed!
77 *
78 * removed!
79 * removed!
80 * removed!
81 * removed!
82 *
83 * removed!
84 * removed!
85 * removed!
86 * removed!
87 *
88 * removed!
89 * removed!
90 * removed!
91 * removed!
92 *
93 * removed!
94 * removed!
95 * removed!
96 *
97 * removed!
98 * removed!
99 * removed!
100 * removed!
101 * removed!
102 * removed!
103 * removed!
104 * removed!
105 * removed!
106 * removed!
107 * removed!
108 *
109 * removed!
110 * removed!
111 * removed!
112 *
113 * removed!
114 * removed!
115 * removed!
116 *
117 * removed!
118 * removed!
119 * removed!
120 * removed!
121 * removed!
122 * removed!
123 * removed!
124 * removed!
125 * removed!
126 * removed!
127 * removed!
128 *
129 * removed!
130 * removed!
131 * removed!
132 *
133 * removed!
134 * removed!
135 * removed!
136 *
137 * removed!
138 * removed!
139 * removed!
140 *
141 * removed!
142 * removed!
143 *
144 * removed!
145 * removed!
146 * removed!
147 *
148 * removed!
149 * removed!
150 * removed!
151 *
152 * removed!
153 * removed!
154 * removed!
155 *
156 * removed!
157 * removed!
158 * removed!
159 *
160 * removed!
161 * removed!
162 * removed!
163 *
164 * removed!
165 * removed!
166 * removed!
167 *
168 * removed!
169 * removed!
170 * removed!
171 *
172 * removed!
173 * removed!
174 * removed!
175 *
176 * removed!
177 * removed!
178 * removed!
179 *
180 * removed!
181 * removed!
182 * removed!
183 *
184 * removed!
185 * removed!
186 * removed!
187 *
188 * removed!
189 * removed!
190 * removed!
191 *
192 * removed!
193 * removed!
194 * removed!
195 * removed!
196 * removed!
197 * removed!
198 * removed!
199 *
200 *------------------------------------------------------------------------------
201 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
202 *============================================================================
203 ****************************************************************************/
204
205#ifndef _EX_PUBLIC_H
206#define _EX_PUBLIC_H
207
208#if !defined(__OFFLINE_EX_LOG_PARSER__)
209#include <mips_ia_utils_public.h>
210#endif /*__OFFLINE_EX_LOG_PARSER__*/
211/*******************************************************************************
212 * Globally Constant definition
213 *******************************************************************************/
214#define EX_FORCEMEMORYDUMP 0x26409001
215
216#if defined(__MD97__) || defined(__MD97P__)
217#define EX_CC_LOG_SIZE (10*1024)
218#define EX_LOG_SIZE 3584
219#define TOTAL_EXPTR_SIZE EX_CC_LOG_SIZE /*for nvram */
220#define EX_LOG_SIZE_IN_HS1 (2*1024)
221#else
222#error No config yet
223#endif
224/*******************************************************************************
225 * Data Structure Definition - Common
226 *******************************************************************************/
227typedef enum {
228 BBREG_CALLBACK_STARTED,
229 BBREG_CALLBACK_DONE,
230} BBREG_BITMASK;
231/* bb register dump */
232typedef struct ex_bbreg_dump
233{
234 kal_uint32 *regions;
235 /* pointer to an array: base_1, len_1, type_1, base_2, len_2, type_2, ... */
236 /* type: 0 -- Default , Current : Byte Access */
237 /* 1 -- Byte Access */
238 /* 2 -- Word Access */
239 /* 4 -- 32-bit Access */
240 kal_bool (*bbreg_dump_callback)();
241 kal_char* owner;
242 kal_uint16 num; /* number of regions */
243 kal_bool is_registered;
244 kal_uint8 call_back_status;
245 void* next_dump;
246} EX_BBREG_DUMP_T;
247
248typedef enum{
249 EX_FULL_DUMP,
250 EX_MINI_DUMP,
251} ex_dump_level_enum;
252
253typedef enum{
254 EX_NO_CLEAN_SENSITIVE,
255 EX_CLEAN_SENSITIVE,
256} ex_sensitive_flag_enum;
257
258#if defined(__MTK_TARGET__)
259#define __NONCACHEDZI __attribute__ ((zero_init, section ("NONCACHEDZI")))
260#define EX_BBREG_DUMP __NONCACHEDZI EX_BBREG_DUMP_T
261#else
262#define EX_BBREG_DUMP EX_BBREG_DUMP_T
263#endif /*__MTK_TARGET__*/
264
265#if defined(__MTK_TARGET__)
266#define EX_MINIDUMP_SYMBOL_CLEAR
267#endif
268
269typedef enum ex_trace_type
270{
271 ex_trace_type_cadefa = 0,
272 ex_trace_type_common,
273 ex_trace_type_afound,
274} EX_TRACE_TYPE;
275
276typedef enum {
277 MINIDUMP_ITEM_CLEAN_STARTED,
278 MINIDUMP_ITEM_CLEAN_DONE,
279} MINIDUMP_ITEM_BITMASK;
280
281typedef enum {
282 EX_BOOT_MD = 0,
283 EX_BOOT_SYSTEM,
284 EX_POST_RESET_CORE_DUMP,
285} ex_boot_type;
286
287typedef struct ex_minidump_item
288{
289 kal_char* name;
290 kal_uint32 start;
291 kal_uint32 len;
292 kal_uint8 item_status;
293} EX_MINIDUMP_ITEM_T;
294
295typedef struct ex_minidump_clear_area EX_MINIDUMP_AREA_T;
296struct ex_minidump_clear_area
297{
298 EX_MINIDUMP_ITEM_T *regions;
299 kal_char* owner;
300 kal_uint16 num; /* number of regions */
301 kal_bool is_registered;
302 EX_MINIDUMP_AREA_T* next_dump;
303};
304#define CLEAR_SYMBOL_WHEN_MINIDUMP(symbol) {#symbol, (kal_uint32)&symbol, sizeof(symbol)}
305
306/*******************************************************************************
307 * Globally Exported function
308 *******************************************************************************/
309extern void ex_register_bbreg_dump(EX_BBREG_DUMP_T *dump, kal_char* filename);
310
311#if defined(EX_MINIDUMP_SYMBOL_CLEAR)
312extern void ex_register_minidump_area(EX_MINIDUMP_AREA_T *dump, kal_char* filename);
313extern void ex_clean_symbols();
314#else
315#define ex_register_minidump_area(dump, filename) {(void)(dump); (void)(filename);}
316#define ex_clean_symbols()
317#endif
318
319extern void ex_set_memorydump_level(ex_dump_level_enum dump_level);
320
321extern void ex_set_sensitive_flag(ex_sensitive_flag_enum sensitive_flag);
322extern ex_sensitive_flag_enum ex_get_sensitive_flag();
323extern kal_bool ex_isNested(void);
324extern kal_bool ex_set_reboot_type(ex_boot_type type);
325
326/*******************************************************************************
327 * Globally Exported macro
328 *******************************************************************************/
329#define INT_DefaultMemoryDumpFlag SHARED_VAR(g_INT_DefaultMemoryDumpFlag)
330#define INT_MemoryDumpFlag SHARED_VAR(g_INT_MemoryDumpFlag)
331#define INT_MemoryDumpLevel SHARED_VAR(g_INT_MemoryDumpLevel)
332
333/* memory dump related APIs */
334#if defined(__PRODUCTION_RELEASE__)
335/* production release: depends on set/clear's setting */
336#define ex_is_forcememorydump() (INT_MemoryDumpFlag == EX_FORCEMEMORYDUMP)
337#define ex_get_memorydump_flag(ptr) (*ptr = INT_MemoryDumpFlag)
338#else
339/* under construction !*/
340/* under construction !*/
341#if !defined(__FCS_SUPPORT__)
342/* under construction !*/
343#else
344/* under construction !*/
345#endif
346/* under construction !*/
347#endif /* __PRODUCTION_RELEASE__ */
348#define ex_set_memorydump_flag() (INT_MemoryDumpFlag = EX_FORCEMEMORYDUMP)
349#define ex_clear_memorydump_flag() (INT_MemoryDumpFlag = 0)
350
351/* INT_DefaultMemoryDumpFlag is for Catcher/ELT to refer to disconnection behaviour */
352#define ex_get_default_memorydump_flag(ptr) (*ptr = INT_DefaultMemoryDumpFlag)
353#define ex_set_defult_memorydump_flag() (INT_DefaultMemoryDumpFlag = EX_FORCEMEMORYDUMP)
354#define ex_clear_default_memorydump_flag() (INT_DefaultMemoryDumpFlag = 0)
355
356#define EX_REGISTER_BBREG_DUMP(dump) \
357 do { \
358 ex_register_bbreg_dump(dump, (kal_char *)__FILE__); \
359 } while (0)
360
361#if defined(EX_MINIDUMP_SYMBOL_CLEAR)
362#define EX_REGISTER_MINIDUMP_AREA(dump, items) \
363 do { \
364 (dump)->regions = (EX_MINIDUMP_ITEM_T*)(items); \
365 (dump)->num = sizeof(items) / (sizeof(EX_MINIDUMP_ITEM_T)); \
366 ex_register_minidump_area((dump), (kal_char *)__FILE__); \
367 } while (0)
368#else
369#define EX_REGISTER_MINIDUMP_AREA(dump, items) {(void)(dump); (void)(items);}
370#endif
371/*******************************************************************************
372 * Globally Exported variables
373 *******************************************************************************/
374DECLARE_SHARED_VAR(kal_uint32, g_INT_DefaultMemoryDumpFlag)
375DECLARE_SHARED_VAR(kal_uint32, g_INT_MemoryDumpFlag )
376
377
378
379#ifdef __MTK_TARGET__
380#define sst_get_exception_count() miu_mfc0(MIU_C0_KSCRATCH3)
381#define INT_QueryExceptionStatus() (sst_get_exception_count() > 0)
382#else
383extern kal_uint8 sst_get_exception_count(void);
384extern kal_bool INT_QueryExceptionStatus(void);
385#endif
386
387#endif /* _EX_PUBLIC_H */
388
389