[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/service/sst/include/cc_ex_item.h b/mcu/service/sst/include/cc_ex_item.h
new file mode 100644
index 0000000..e1f66cd
--- /dev/null
+++ b/mcu/service/sst/include/cc_ex_item.h
@@ -0,0 +1,895 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   cc_ex_item.h
+ *
+ * Description:
+ * ------------
+ *  Header file for cross core exception handling
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _CC_EX_ITEM_H
+#define _CC_EX_ITEM_H
+
+#if !defined(__OFFLINE_EX_LOG_PARSER__)
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "kal_internal_def.h"
+#include "DVFS_drv_public.h"
+#else
+//NOTE: for exLogAnalyzer.exe only. Copy it here to avoid including DVFS_drv_public
+#define DVFS_DUMP_NUM 48   /* Note: This number should also sync to EE owner.(Kari Suvanto) */
+#endif /* __OFFLINE_EX_LOG_PARSER__ */
+#include "ex_item.h"
+#include "ex_public.h"
+#include "us_excep_hdlr_format.h"
+#include "md32_excep_hdlr.h"
+#include "vc_excep_hdlr_format.h"
+#if defined(__MD97__) || defined(__MD97P__)
+#include "ex_cs_excep_hdlr_format.h"
+#endif
+#include "busmpu.h"
+#include "drv_pcmon.h"
+#include "mpu_public.h"
+#include "sst_defs.h"
+
+/*******************************************************************************
+ * Compiler Option Definition
+ *******************************************************************************/
+
+
+/*******************************************************************************
+ * Constant Definition -  ex record overview
+ *******************************************************************************/
+/*  total: EX_CC_LOG_SIZE  */
+/***************************
+*      overview            *  =EX_CC_OVERVIEW_SIZE
+
+****************************  mcu main info total: EX_CORE_MAIN_SIZE
+*      exlog               *  =EX_CORE_SIZE
+
+****************************  us total: EX_USIP_SCQ_CORE_SIZE
+*      us hs status        *  =EX_USIP_HS_STATUS_SIZE
+*      us exlog            *  =EX_USIP_SCQ_CORE_SIZE
+
+****************************  md32 total: EX_MD32_CORE_SIZE
+*      md32 hs status      *  =EX_MD32_HS_STATUS_SIZE
+*      md32 exlog          *  =EX_MD32_CORE_SIZE
+
+****************************  sonic total: EX_SONIC_CORE_SIZE
+*      sonic hs status     *  =EX_SONIC_HS_STATUS_SIZE
+*      sonic exlog         *  =EX_SONIC_CORE_SIZE
+
+****************************  mcu minor info total: EX_CORE_MINOR_SIZE
+*      nested exlog        *  =EX_NESTED_LOG_SIZE
+*      pcmon               *  =EX_PCMON_SIZE
+*      nested pcmon        *  =EX_NESTED_PCMON_SIZE
+*      bus err             *  =EX_BUS_ERR_SIZE
+*      dsm info            *  =EX_DSM_SIZE
+*      reserved            *  =EX_MINOR_INFO_RESERVED_SIZE(216)
+*      step logging        *  =EX_STEP_LOG_SIZE
+
+
+****************************/
+//      EX_CC_LOG_SIZE          (7*1024)  //defined in ex_public.h
+
+#define EX_CC_OVERVIEW_SIZE     640
+#define EX_AFOUND_MSG_SIZE      1024
+
+
+//      EX_LOG_SIZE             2560      //2.5K //defined in ex_public.h - run out
+
+#define EX_USIP_SCQ_CORE_SIZE   (USIP_SCQ16_TOTAL_THREAD_NUM*100)
+#define EX_MD32_CORE_SIZE       100
+#if defined(__MD97__) || defined(__MD97P__)
+#define EX_SONIC_CORE_SIZE      (EX_SONIC_TOTAL_CORE_NUM*100)
+#else
+#define EX_SONIC_CORE_SIZE      0
+#endif
+#define EX_MCU_SYSINFO_SIZE     (EX_CC_LOG_SIZE-EX_AFOUND_MSG_SIZE-EX_CC_OVERVIEW_SIZE-EX_LOG_SIZE-EX_USIP_SCQ_CORE_SIZE-EX_MD32_CORE_SIZE-EX_SONIC_CORE_SIZE)
+
+
+#define EX_PCMON_SIZE           64
+#define EX_BUS_ERR_SIZE         16
+//#define EX_STEP_LOG_SIZE        (sizeof(EX_STEP_T)*TOTAL_VPE_COUNT)
+
+#define EX_USIP_HS_STATUS_SIZE      sizeof(kal_uint32)
+#define EX_MD32_HS_STATUS_SIZE      sizeof(kal_uint32)
+#if defined(__MD97__) || defined(__MD97P__)
+#define EX_SONIC_HS_STATUS_SIZE     sizeof(kal_uint32)
+#endif
+
+
+#define DSM_STATUS_COUNT        3
+#define EX_PROFILING_SET_COUNT  13
+#define EX_USIP_SCQ_CORE_USED_SIZE      (sizeof(USIP_SCQ_EXCEPTION_RECORD_T)+EX_USIP_HS_STATUS_SIZE)
+#define EX_MD32_CORE_USED_SIZE          (sizeof(MD32_ExceptionLog_T)        +EX_MD32_HS_STATUS_SIZE)
+#if defined(__MD97__) || defined(__MD97P__)
+#define EX_SONIC_CORE_USED_SIZE         (sizeof(EX_SONIC_EXCEPTION_RECORD_T)+EX_SONIC_HS_STATUS_SIZE)
+#endif
+
+
+/*************************  * SYNC TIME ***************************************/
+#define EX_OFFENDING_VPE_MORE_SYNC_TIME      (200000) // 0.2s
+#define EX_SYNC_DSP_FLOW_TIME               (5000000) // 5s
+#define EX_INT_SYNC_TIME                    (5000000) // 5s
+#define EX_US_SYNC_TIME                     (2000000) // 2s
+#define EX_MD32_SYNC_TIME                   (1000000) // 1s
+#if defined(__MD97__) || defined(__MD97P__)
+#define EX_SONIC_SYNC_TIME                  (2000000) // 2s
+#endif
+#define EX_SAP_SYNC_TIME                    (4000000) // 4s
+#define EX_OP_SYNC_TIME                     (1000000) // 1s
+/*******************************************************************************
+ * Enum Type Definition
+ *******************************************************************************/
+
+typedef enum ex_core_t
+{
+    EX_MCU             = 0,
+    EX_USIP0_0,
+    EX_USIP0_1,
+    EX_USIP1_0,
+    EX_USIP1_1,
+    EX_SCQ_0,
+    EX_SCQ_1,
+#if defined(__MD97__) || defined(__MD97P__)
+    EX_SCQ_2,
+    EX_SCQ_3,
+#endif
+    EX_RAKE,
+#if defined(__MD97__) || defined(__MD97P__)
+    EX_SONIC_M0,
+    EX_SONIC_V0,
+#endif
+    EX_CORE_AMOUNT,
+} EX_CORE_T;
+
+typedef enum ex_coretype_t
+{
+    EX_CORETYPE_MCU = 0,
+    EX_CORETYPE_USIP_SCQ,
+    EX_CORETYPE_MD32,
+#if defined(__MD97__) || defined(__MD97P__)
+    EX_CORETYPE_SONIC
+#endif
+#if !defined(__OFFLINE_EX_LOG_PARSER__) && !defined(_MSC_VER)
+} EX_CORETYPE_T;
+#else
+} EX_CORETYPE_T_FORMAT;
+typedef kal_uint8 EX_CORETYPE_T;
+#endif /*__OFFLINE_EX_LOG_PARSER__*/
+
+
+
+#if !defined(__OFFLINE_EX_LOG_PARSER__)
+typedef enum ex_flowstep_t
+{
+    /*mcu*/
+    EX_FLOWSTEP_INIT_BEGIN       = 0,
+    EX_FLOWSTEP_INIT_DONE,
+    EX_FLOWSTEP_MAINREASON_INIT_DONE,
+    EX_FLOWSTEP_COMM_DONE,
+    EX_FLOWSTEP_PROCESS_DONE,
+    EX_FLOWSTEP_REBOOT_DONE,
+    /*dsp*/
+    EX_FLOWSTEP_DSPINIT_BEGIN,
+    EX_FLOWSTEP_USIPINIT_DONE,
+    EX_FLOWSTEP_MD32INIT_DONE,
+#if defined(__MD97__) || defined(__MD97P__)
+    EX_FLOWSTEP_SONICINIT_DONE,
+#endif
+    EX_FLOWSTEP_DSPINIT_DONE,
+    /*stophw*/
+    EX_FLOWSTEP_STOPHW_BEGIN,
+    EX_FLOWSTEP_STOPHW_DONE,
+    EX_FLOWSTEP_END = EX_PROFILING_SET_COUNT,  /*15*/
+#if !defined(_MSC_VER)
+} EX_FLOWSTEP_T;
+#else
+} EX_FLOWSTEP_T_;
+typedef kal_uint8 EX_FLOWSTEP_T;
+#endif
+
+
+typedef enum ex_sync
+{
+    NEVER_SYNCED         = 0,
+    SYNC_SUCCESS         = 1,
+    SYNC_FAIL            = 2,
+    NO_NEED_TO_SYNC      = 3,
+    NESTED_SYNC          = 4,
+} EX_SYNC;
+
+#else
+#include "ex_item_types.h"
+#endif /*__OFFLINE_EX_LOG_PARSER__*/
+
+typedef enum ex_thin_modem_sync_pattern
+{
+    THIN_MODEM_EX_HS_AP_ENTER       = 0xAAAAAAAA,
+    THIN_MODEM_EX_HS_AP_DONE        = 0xBBBBBBBB,
+    THIN_MODEM_EX_HS_MD_ENTER       = 0xCCCCCCCC,
+    THIN_MODEM_EX_HS_MD_DONE        = 0xDDDDDDDD
+} EX_THIN_MODEM_SYNC_PATTERN;
+
+
+#if defined(__MTK_TARGET__) || defined(__OFFLINE_EX_LOG_PARSER__) || defined(KAL_ON_OSCAR)
+/*******************************************************************************
+ * Data Structure Definition
+ *******************************************************************************/
+PRAGMA_BEGIN_PACK_STRUCT
+/***************************** +Debug Structure+ *******************************/
+
+typedef struct _ex_brief_assertfail_t
+{
+    kal_char filepath[EX_ASSERTFAIL_FILEPATH_LEN];  /* length: 256 */
+    kal_uint32 linenumber;                          /* length: 4 */
+    kal_uint32 parameters[3];                       /* length: 12 */
+    kal_uint32 lr;                                  /* length: 4 */
+} EX_BRIEF_ASSERTFAIL_T;
+
+typedef struct _ex_brief_fatalerr_t
+{
+    kal_uint32  code1;
+    kal_uint32  code2;
+    kal_uint32  code3;
+    kal_char    offender[EX_FATALERR_ANALYSIS_OWNER_LEN];
+    kal_bool    is_cadefa_supported;
+    kal_bool    is_filename_supported;
+    kal_uint8   error_section;
+    kal_uint8   is_valid_dispatch_arg;
+    kal_uint8   pad[4];
+    kal_uint32  error_status;
+    kal_uint32  error_sp;
+    kal_uint32  error_pc;
+    kal_uint32  error_lr;
+    kal_uint32  error_address;
+    kal_uint32  error_cause;
+    kal_char    filename[sizeof(EX_BRIEF_ASSERTFAIL_T) - 52];
+} EX_BRIEF_FATALERR_T;
+
+typedef union
+{
+    EX_BRIEF_FATALERR_T fatalerr;
+    EX_BRIEF_ASSERTFAIL_T assert;
+} EX_MAINCONTENT_T;
+
+typedef struct _ex_brief_maininfo_t
+{
+    kal_uint16             ex_type;          /* offset: 0x, length:  2 */
+    EX_CORETYPE_T          ex_type_format;   //0=mcu, 1=usip|scq, 2=md32, 3=sonic
+    EX_MAINCONTENT_TYPE_T  maincontent_type; //0=assert, 1=fatal
+    kal_uint8              elm_status;
+    kal_uint8              system_info1;     //ex_offending_vpe_id
+    kal_uint8              system_info2;     //ex_offending_tc_id
+    kal_uint8              pad;
+    EX_MAINCONTENT_T content;
+} EX_BRIEF_MAININFO_T;
+
+typedef struct ex_step_t_s
+{
+    volatile kal_uint32 step;
+    volatile kal_uint32 timestamp;
+}EX_STEP_T;
+
+#define EX_MD32_CORE_NUM       1
+#define EX_USIP_CORE_NUM       (USIP_CORE_NUMBER*USIP_THREAD_NUMBER)// 4
+#define EX_SCQ_CORE_NUM        (SCQ16_MAXIMUM_NUM) // 2 or 4
+#if defined(__MD97__) || defined(__MD97P__)
+#  define EX_SONIC_CORE_NUM                 (EX_SONIC_TOTAL_CORE_NUM)// 2
+#  define EX_SONIC_OFFENDING_CORE_SIZE      (sizeof(kal_uint8))
+#else
+#  define EX_SONIC_CORE_NUM                 (0)
+#  define EX_SONIC_OFFENDING_CORE_SIZE      (0)
+#endif
+#define EX_CORE_NUM            (1+EX_USIP_CORE_NUM+EX_SCQ_CORE_NUM+EX_MD32_CORE_NUM+EX_SONIC_CORE_NUM) //mcu+usip*N+scq*N+RAKE+sonic*N
+#define EX_CORE_NAME_MAX_SIZE  11
+typedef struct _ex_main_reason_t
+{
+    kal_char    core_name[EX_CORE_NAME_MAX_SIZE];
+    kal_bool    is_offender;
+} EX_MAIN_REASON_T;
+
+#define EX_OVERVIEW_PAD_COMPENSATE_SIZE (\
+	/*sizeof(overview_verno)*/sizeof(kal_uint32) + \
+	/*sizeof(core_num)*/sizeof(kal_uint32) + \
+	/*sizeof(main_reason)*/sizeof(EX_MAIN_REASON_T)* EX_CORE_NUM +\
+	/*sizeof(info)*/sizeof(EX_BRIEF_MAININFO_T) +\
+	/*sizeof(mips_vpe_num)*/sizeof(kal_uint32) + \
+	/*sizeof(ex_steplog)*/sizeof(EX_STEP_T)* TOTAL_VPE_COUNT +\
+	/*sizeof(ect_status)*/sizeof(kal_uint32) + \
+	/*sizeof(afound_buffer_offset)*/sizeof(kal_uint32)+ \
+	/*sizeof(afound_buffer_size)*/sizeof(kal_uint32) + \
+	/*sizeof(usip_scq_offending_core)*/sizeof(kal_uint8) + \
+	/*sizeof(sonic_offending_core)*/EX_SONIC_OFFENDING_CORE_SIZE + \
+	/*sizeof(mcu_exception_count)*/sizeof(kal_uint8)* TOTAL_VPE_COUNT + \
+	/*sizeof(core_offset)*/sizeof(kal_uint32)* EX_CORE_NUM \
+	)
+
+typedef struct _ex_overview_t
+{
+    kal_uint32           overview_verno;                           // 4
+    kal_uint32           core_num;                                 // 4 //EX_CORE_NUM
+    EX_MAIN_REASON_T     main_reason[EX_CORE_NUM];                 // 96 = 12*EX_CORE_NUM
+    EX_BRIEF_MAININFO_T  info;                                     // 284
+    kal_uint32           mips_vpe_num;                             // 4
+    volatile EX_STEP_T   ex_steplog[TOTAL_VPE_COUNT];              // 48 = 8*6
+    kal_uint32           ect_status;                               // 4 //offending vpe
+    kal_uint32           afound_buffer_offset;
+    kal_uint32           afound_buffer_size;
+    kal_uint8            usip_scq_offending_core;                  // 1  usip+scq
+#if defined(__MD97__) || defined(__MD97P__)
+    kal_uint8            sonic_offending_core;                     // 1
+#endif
+    kal_uint8            mcu_exception_count[TOTAL_VPE_COUNT];     // 6
+    kal_uint8            pad[EX_CC_OVERVIEW_SIZE-EX_OVERVIEW_PAD_COMPENSATE_SIZE]; // 97:29 = 512-(4+4+96+284+4+48+4+1+6+32), before 97:  29 = 512-(4+4+96+284+4+48+4+1+6+32)
+    kal_uint32           core_offset[EX_CORE_NUM];                 // 32 = 4*8
+} EX_OVERVIEW_T;
+
+typedef struct ex_dsm_status_t_s
+{
+    kal_uint32 DSM_load_label;
+    kal_uint32 DSM_init_label;
+    kal_uint32 DSM_loading_label;
+    kal_uint32 DSM_unloading_label;
+}EX_DSM_T;
+
+typedef struct _ex_mculog_t
+{
+    EX_LOG_T                ex_log;
+} EX_MCULOG_T;
+
+typedef struct _ex_usiplog_t
+{
+    volatile kal_uint32                 ex_hs;
+    USIP_SCQ_EXCEPTION_RECORD_T         ex_log;
+    kal_uint32                          pad[(EX_USIP_SCQ_CORE_SIZE - EX_USIP_SCQ_CORE_USED_SIZE)/ sizeof(kal_uint32)];
+} EX_USLOG_T;
+
+typedef struct _ex_md32log_t
+{
+    volatile kal_uint32                 ex_hs;
+    MD32_ExceptionLog_T                 ex_log;
+#if !defined(__OFFLINE_EX_LOG_PARSER__) && !defined(_MSC_VER) //NOTE: this pad is currently zero sized and visual studio cannot handle it
+    kal_uint32                          pad[(EX_MD32_CORE_SIZE - EX_MD32_CORE_USED_SIZE)/ sizeof(kal_uint32)];
+#endif
+} EX_MD32LOG_T;
+
+#if defined(__MD97__) || defined(__MD97P__)
+typedef struct _ex_soniclog_t
+{
+    volatile kal_uint32                 ex_hs;
+    EX_SONIC_EXCEPTION_RECORD_T         ex_log;
+#if !defined(__OFFLINE_EX_LOG_PARSER__) && !defined(_MSC_VER) //NOTE: this pad is currently zero sized and visual studio cannot handle it
+    kal_uint32                          pad[(EX_SONIC_CORE_SIZE - EX_SONIC_CORE_USED_SIZE)/ sizeof(kal_uint32)];
+#endif
+} EX_SONICLOG_T;
+#endif
+
+typedef struct _ex_busmpu_t
+{
+    busmpu_iocu_vio_data ex_busmpu_iocu_err;
+    busmpu_irq_status ex_busmpu_irq_sts;
+#if defined(EMIMPU_MD2AP_INFODUMP_ENABLE)
+    emimpu_vio_info ex_emimpu_vio_dump;
+#else
+    kal_uint32 reserved[8]; //to keep struct size same
+#endif
+} EX_BUSMPU_T;
+
+#define PLL_INFO_NUM 48
+
+#define EX_MCU_SYSINFO_USED_SIZE ( \
+            sizeof(kal_uint32)*(EX_PROFILING_SET_COUNT) + \
+            sizeof(kal_uint32)*3 + \
+            sizeof(kal_uint32)*TOTAL_VPE_COUNT*2 + \
+            sizeof(EX_DSM_T) + \
+            sizeof(EX_NE_LOG_T) + \
+            sizeof(PDAMON_EX_RAW_T) + \
+            sizeof(PDAMON_NEX_RAW_T) + \
+            EX_BUS_ERR_SIZE + \
+            sizeof(EX_BUSMPU_T) + \
+            sizeof(kal_uint32)*(PLL_INFO_NUM) + \
+            sizeof(kal_uint32)*(DVFS_DUMP_NUM) + \
+            (sizeof(_MPU_REG)*NBR_CORE))
+
+typedef struct _ex_mcu_sysinfo_t
+{
+    kal_uint32              ex_profiling_timestamp[EX_PROFILING_SET_COUNT];
+    kal_uint32              ex_GLBTS;
+    kal_uint32              ex_sst_dc_offshoot_vpeid;
+    kal_uint32              ex_sst_hw_offshoot_vpeid;
+    kal_uint32              ex_ISR_Executing[TOTAL_VPE_COUNT]; //GSAL_GE_ISR_Executing
+    kal_uint32              ex_ect_status[TOTAL_VPE_COUNT];
+    EX_DSM_T                ex_dsm_status;
+    EX_NE_LOG_T             ex_nested_log;
+    PDAMON_EX_RAW_T         ex_pcmon;
+    PDAMON_NEX_RAW_T        ex_nested_pcmon;
+    kal_uint32              ex_buserr[EX_BUS_ERR_SIZE / sizeof(kal_uint32)];
+    EX_BUSMPU_T             ex_busmpuerr;
+    kal_uint32              ex_pll_info[PLL_INFO_NUM];
+    kal_uint32              ex_DVFS_data[DVFS_DUMP_NUM];
+    _MPU_REG                ex_mpu[NBR_CORE];
+    kal_uint32              pad[(EX_MCU_SYSINFO_SIZE - EX_MCU_SYSINFO_USED_SIZE)/ sizeof(kal_uint32)];
+} EX_MCU_SYSINFO_T;
+
+
+typedef struct ex_fulllog_t
+{
+    EX_OVERVIEW_T      overview;
+    char               afound[EX_AFOUND_MSG_SIZE];
+    EX_MCULOG_T        mcu;
+    EX_USLOG_T         usip_scq;
+    EX_MD32LOG_T       md32;
+#if defined(__MD97__) || defined(__MD97P__)
+    EX_SONICLOG_T      sonic;
+#endif
+    EX_MCU_SYSINFO_T   mcu_sysinfo;
+} EX_FULLLOG_T;
+
+typedef struct ex_dump_comm_t
+{
+    volatile kal_uint32 addr;
+    volatile kal_uint32 len;
+    volatile kal_uint32 op;
+} EX_DUMP_COMM_T;
+
+
+/***************************** -Debug Structure- *******************************/
+PRAGMA_END_PACK_STRUCT
+#endif /* __MTK_TARGET__ */
+/*******************************************************************************
+ * Global Definition
+ *******************************************************************************/
+
+/*******************************************************************************
+ * Globally Exported variables
+ *******************************************************************************/
+#if defined(__MTK_TARGET__)
+extern EX_FULLLOG_T                  *ex_fulllog_ptr;
+extern EX_LOG_T                      *ex_log_ptr;  // for OfflineSST
+extern USIP_SCQ_EXCEPTION_RECORD_T   *usip_scq_ex_log_ptr;
+extern MD32_ExceptionLog_T           *md32_ex_log_ptr;
+extern char			     *afound_ptr;
+#if defined(__MD97__) || defined(__MD97P__)
+extern EX_SONIC_EXCEPTION_RECORD_T   *sonic_ex_log_ptr;
+#endif
+extern EX_NE_LOG_T                   *ex_nested_log_ptr;
+extern PDAMON_EX_RAW_T               *ex_pcmon_ptr;
+extern PDAMON_NEX_RAW_T              *ex_nested_pcmon_ptr;
+extern kal_uint32                    *ex_buserr_ptr;
+extern EX_DSM_T                      *ex_dsm_ptr;
+extern EX_BUSMPU_T                   *ex_busmpuerr_ptr;
+extern kal_uint32                    *ex_pll_info_ptr;
+extern kal_uint32                    *ex_DVFS_data;
+extern _MPU_REG                      *ex_mpu_ptr;
+extern volatile kal_uint32           *ex_steplog_ptr;
+extern volatile kal_uint32           *ex_md32_hs_ptr;
+#if defined(__MD97__) || defined(__MD97P__)
+extern volatile kal_uint32           *ex_sonic_hs_ptr;
+#endif
+#endif /* __MTK_TARGET__ */
+ /*******************************************************************************
+ * Globally Exported functions
+ *******************************************************************************/
+extern kal_bool INT_IsEXT_CC_COMMDone();
+extern kal_bool SST_HandleDumpRegion(kal_uint32 **address, kal_uint32* length, kal_uint32* option);
+extern kal_uint32 ex_get_step_logging(kal_uint32 vpe, kal_bool bNested);
+extern void ex_unguard_l1core_tcm();
+extern kal_uint32 ex_get_value(kal_uint32* _ptr);
+extern void ex_init_overview();
+ extern void ex_init_usip();
+extern void ex_wait_init_usip();
+extern void ex_init_md32();
+extern void ex_wait_init_md32();
+#if defined (__HIF_CCCI_SUPPORT__) && defined(__CCCI_PRODUCT_TYPE_THIN_MODEM__)
+extern void ex_sync_with_thinmodem_sap();
+#endif
+#if defined(__MD97__) || defined(__MD97P__)
+extern void ex_init_sonic();
+extern void ex_wait_init_sonic();
+#endif
+extern kal_bool ex_is_ap_triggered_cross_core_error();
+extern kal_uint32 ex_GetECTStatus();
+extern void ex_output_usip_log();
+extern void ex_output_md32_log();
+extern void ex_output_sonic_log();
+extern void ex_usip_cadefa();
+extern void ex_md32_cadefa();
+#if defined(__MD97__) || defined(__MD97P__)
+extern void ex_sonic_cadefa();
+#endif
+extern void ex_detect_dsp_version_mismatched();
+extern void ex_query_cc_ex_reason(kal_uint32 ect_status, kal_char** reason, kal_char* local_sys_info_str, kal_uint32 len);
+extern void ex_query_ap_ex_reason(kal_uint32 code1, kal_uint32 code2, kal_char** reason);
+extern void ex_ondemand_op();
+extern void ex_init_dc_offshoot();
+extern void ex_init_hw_offshoot();
+extern void ex_init_mcu_sysinfo();
+extern void ex_set_value(kal_uint32* _ptr, kal_uint32 value);
+extern kal_uint32 ex_get_value(kal_uint32* _ptr);
+#if defined(__MTK_TARGET__)
+extern void ex_set_flowstep(EX_FLOWSTEP_T step);
+#endif /* __MTK_TARGET__ */
+extern kal_char* ex_get_dsp_build_date_time(EX_CORE_T dsp_core);
+extern kal_char* ex_get_usipscq_build_date_time(EX_CORE_T dsp_core);
+extern kal_char* ex_get_rake_build_date_time(EX_CORE_T dsp_core);
+extern kal_char* ex_get_sonic_build_date_time(EX_CORE_T dsp_core);
+#endif /* _CC_EX_ITEM_H */
+
+