[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/service/kal/common/include/cc_internal_api.h b/mcu/service/kal/common/include/cc_internal_api.h
new file mode 100644
index 0000000..3d81e86
--- /dev/null
+++ b/mcu/service/kal/common/include/cc_internal_api.h
@@ -0,0 +1,84 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_internal_api.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This header file is used to define internal api, do not export!
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __CC_INTERNAL_API__
+#define __CC_INTERNAL_API__
+
+
+#include "cc_internal_def.h"
+
+
+
+
+/******************************************************************************
+ * cross core event flag
+ ******************************************************************************/
+void * cc_eg_os_get_suspend_task(void);
+void cc_eg_os_suspend_task(cc_eg_suspend_info *cc_suspend_ptr);
+void cc_eg_os_resume_waiting_tasks(cc_eg_suspend_info *cc_suspend_ptr); 
+
+#endif /* __CC_INTERNAL_API__ */
diff --git a/mcu/service/kal/common/include/cc_internal_def.h b/mcu/service/kal/common/include/cc_internal_def.h
new file mode 100644
index 0000000..eb1895e
--- /dev/null
+++ b/mcu/service/kal/common/include/cc_internal_def.h
@@ -0,0 +1,138 @@
+/*****************************************************************************
+*  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_internal_api.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This header file is used to define internal api, do not export!
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __CC_INTERNAL_DEFINATIONS__
+#define __CC_INTERNAL_DEFINATIONS__
+
+
+#include "kal_public_defs.h"
+#include "spinlock.h"
+#include "lcd_ip_cqueue.h"
+
+
+
+
+/******************************************************************************
+ * internal cross core mutex for cross core event group
+ ******************************************************************************/
+
+#define _CC_MUTEX_TASK_WAITING_QUEUE_SIZE   (20)
+
+typedef struct cc_eg_mutex_t{
+    kal_semid           master_sem;
+    kal_semid           slave_sem;
+    module_type         owner_task;
+    kal_uint8           padding[2];
+    kal_int32           mutex_count;
+    LCD_IP_CQUEUE(kal_uint32, _CC_MUTEX_TASK_WAITING_QUEUE_SIZE) waiting_task_queue;
+    spinlock_t          SLEG;
+}cc_eg_mutex;
+
+
+
+
+/******************************************************************************
+ * cross core event group
+ ******************************************************************************/
+
+#define CC_EG_MAGIC     (0x47454343)
+
+#define CC_MAX_NAME     8
+
+#define CC_EG_MUTEX_OPERATION   (0x1)
+#define CC_EG_SET_OPERATION     (0x2)
+
+
+typedef struct cc_eg_suspend_info_t{
+    struct cc_eg_suspend_info_t     *ev_next;
+    struct cc_internal_eventgrpid_t *ev_event_group;        /* Pointer to Event group */
+    kal_uint32                      ev_requested_events;    /* Requested event flags  */
+    module_type                     ev_task_id;             /* module id */
+    kal_uint8                       ev_operation;           /* Event operation        */
+    kal_uint8                       ev_padding[1];
+    void                            *ev_suspended_task;      /* Task suspended         */
+    kal_int32                       ev_return_status;       /* Return status          */
+    kal_int32                       ev_actual_events;       /* Event flags returned   */
+}cc_eg_suspend_info;
+
+
+typedef struct cc_internal_eventgrpid_t{
+    char                    ev_name[CC_MAX_NAME];
+    kal_uint32              ev_id;
+    kal_uint32              ev_current_events;
+    cc_eg_suspend_info      *ev_waiting_task_head;
+    cc_eg_suspend_info      *ev_waiting_task_tail;
+}cc_internal_eventgrpid;
+
+
+#define CC_EG_SUCCESS               0
+#define CC_EG_SUSPEND               1
+#define CC_EG_INVALID_GROUP         2
+#define CC_EG_INVALID_OPERATION     3
+#define CC_EG_INVALID_CALLER        4
+#define CC_EG_INVALID_POINTER       5
+
+
+
+#endif /* __CC_INTERNAL_DEFINATIONS__  */
diff --git a/mcu/service/kal/common/include/ctrl_buff_monitor.h b/mcu/service/kal/common/include/ctrl_buff_monitor.h
new file mode 100644
index 0000000..38dd78c
--- /dev/null
+++ b/mcu/service/kal/common/include/ctrl_buff_monitor.h
@@ -0,0 +1,479 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+* This software/firmware and related documentation ("MediaTek Software") are
+* protected under relevant copyright laws. The information contained herein
+* is confidential and proprietary to MediaTek Inc. and/or its licensors.
+* Without the prior written permission of MediaTek inc. and/or its licensors,
+* any reproduction, modification, use or disclosure of MediaTek Software,
+* and information contained herein, in whole or in part, shall be strictly prohibited.
+* 
+* Copyright  (C) 2019 MediaTek Inc. All rights reserved.
+* 
+* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER 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 RECEIVER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+* THAT IT IS RECEIVER\'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+* CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+* SOFTWARE RELEASES MADE TO RECEIVER\'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+* STANDARD OR OPEN FORUM. RECEIVER\'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 RECEIVER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+* The following software/firmware and/or related documentation ("MediaTek Software")
+* have been modified by MediaTek Inc. All revisions are subject to any receiver\'s
+* applicable license agreements with MediaTek Inc.
+*
+*****************************************************************************/
+#ifndef __CTRL_BUFF_MONITOR_H__
+#define __CTRL_BUFF_MONITOR_H__
+
+#include "kal_public_api.h"
+
+#if defined(DEBUG_KAL) && defined(DEBUG_BUF2) && defined(DEBUG_CBAM_GLOBAL)
+#ifdef QUEUE_MACRO_DEBUG
+/* Store the last 2 places the queue element or head was altered */
+struct qm_trace {
+    char *lastfile;
+    int   lastline;
+    char *prevfile;
+    int   prevline;
+};
+
+#define TRACEBUF struct qm_trace trace;
+#define TRASHIT(x)      do {(x) = (void *)-1;} while (0)
+#define QMD_SAVELINK(name, link) void **name = (void *)&(link)
+
+#define QMD_TRACE_HEAD(head)                             \
+    do {                                                 \
+        (head)->trace.prevline = (head)->trace.lastline; \
+        (head)->trace.prevfile = (head)->trace.lastfile; \
+        (head)->trace.lastline = __LINE__;               \
+        (head)->trace.lastfile = __FILE__;               \
+    } while (0)
+
+#define QMD_TRACE_ELEM(elem)                             \
+    do {                                                 \
+        (elem)->trace.prevline = (elem)->trace.lastline; \
+        (elem)->trace.prevfile = (elem)->trace.lastfile; \
+        (elem)->trace.lastline = __LINE__;               \
+        (elem)->trace.lastfile = __FILE__;               \
+    } while (0)
+
+#else
+#define QMD_TRACE_ELEM(elem)
+#define QMD_TRACE_HEAD(head)
+#define QMD_SAVELINK(name, link)
+#define TRACEBUF
+#define TRASHIT(x)
+#endif /* QUEUE_MACRO_DEBUG */
+
+/*
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1991, 1993
+ *  The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *  @(#)queue.h 8.5 (Berkeley) 8/20/94
+ * $FreeBSD$
+ */
+
+/*
+ * Singly-linked Tail queue declarations.
+ */
+#define STAILQ_HEAD(name, type)                                   \
+    struct name {                                                 \
+        struct type * stqh_first; /* first element */             \
+        struct type **stqh_last;  /* addr of last next element */ \
+    }
+
+#define STAILQ_HEAD_INITIALIZER(head) \
+    {                                 \
+        NULL, &(head).stqh_first      \
+    }
+
+#define STAILQ_ENTRY(type)                         \
+    struct {                                       \
+        struct type *stqe_next; /* next element */ \
+    }
+
+/*
+ * Singly-linked Tail queue functions.
+ */
+#define STAILQ_CONCAT(head1, head2)                    \
+    do {                                               \
+        if (!STAILQ_EMPTY((head2))) {                  \
+            *(head1)->stqh_last = (head2)->stqh_first; \
+            (head1)->stqh_last  = (head2)->stqh_last;  \
+            STAILQ_INIT((head2));                      \
+        }                                              \
+    } while (0)
+
+#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
+
+#define STAILQ_FIRST(head) ((head)->stqh_first)
+
+#define STAILQ_FOREACH(var, head, field) \
+    for ((var) = STAILQ_FIRST((head)); (var); (var) = STAILQ_NEXT((var), field))
+
+
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
+    for ((var) = STAILQ_FIRST((head));              \
+         (var) && ((tvar) = STAILQ_NEXT((var), field), 1); (var) = (tvar))
+
+#define STAILQ_INIT(head)                             \
+    do {                                              \
+        STAILQ_FIRST((head)) = NULL;                  \
+        (head)->stqh_last    = &STAILQ_FIRST((head)); \
+    } while (0)
+
+#define STAILQ_INSERT_AFTER(head, tqelm, elm, field)                           \
+    do {                                                                       \
+        if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL) \
+            (head)->stqh_last = &STAILQ_NEXT((elm), field);                    \
+        STAILQ_NEXT((tqelm), field) = (elm);                                   \
+    } while (0)
+
+#define STAILQ_INSERT_HEAD(head, elm, field)                            \
+    do {                                                                \
+        if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
+            (head)->stqh_last = &STAILQ_NEXT((elm), field);             \
+        STAILQ_FIRST((head))  = (elm);                                  \
+    } while (0)
+
+#define STAILQ_INSERT_TAIL(head, elm, field)             \
+    do {                                                 \
+        STAILQ_NEXT((elm), field) = NULL;                \
+        *(head)->stqh_last = (elm);                      \
+        (head)->stqh_last  = &STAILQ_NEXT((elm), field); \
+    } while (0)
+
+#define STAILQ_LAST(head, type, field)                      \
+    (STAILQ_EMPTY((head)) ? NULL : ((struct type *)(void *) \
+        ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
+
+#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
+#define STAILQ_REMOVE(head, elm, type, field)           \
+    do {                                                \
+        QMD_SAVELINK(oldnext, (elm)->field.stqe_next);  \
+        if (STAILQ_FIRST((head)) == (elm)) {            \
+            STAILQ_REMOVE_HEAD((head), field);          \
+        } else {                                        \
+            struct type *curelm = STAILQ_FIRST((head)); \
+            while (STAILQ_NEXT(curelm, field) != (elm)) \
+                curelm = STAILQ_NEXT(curelm, field);    \
+            STAILQ_REMOVE_AFTER(head, curelm, field);   \
+        }                                               \
+        TRASHIT(*oldnext);                              \
+    } while (0)
+
+#define STAILQ_REMOVE_AFTER(head, elm, field)                          \
+    do {                                                               \
+        if ((STAILQ_NEXT(elm, field) =                                 \
+                 STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \
+            (head)->stqh_last = &STAILQ_NEXT((elm), field);            \
+    } while (0)
+
+#define STAILQ_REMOVE_HEAD(head, field)                                \
+    do {                                                               \
+        if ((STAILQ_FIRST((head)) =                                    \
+                 STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)    \
+            (head)->stqh_last = &STAILQ_FIRST((head));                 \
+    } while (0)
+
+#define STAILQ_SWAP(head1, head2, type)                 \
+    do {                                                \
+        struct type * swap_first = STAILQ_FIRST(head1); \
+        struct type **swap_last  = (head1)->stqh_last;  \
+        STAILQ_FIRST(head1)      = STAILQ_FIRST(head2); \
+        (head1)->stqh_last       = (head2)->stqh_last;  \
+        STAILQ_FIRST(head2)      = swap_first;          \
+        (head2)->stqh_last       = swap_last;           \
+        if (STAILQ_EMPTY(head1))                        \
+            (head1)->stqh_last = &STAILQ_FIRST(head1);  \
+        if (STAILQ_EMPTY(head2))                        \
+            (head2)->stqh_last = &STAILQ_FIRST(head2);  \
+    } while (0)
+
+/* end of FreeBSD queue.h */
+
+/* CBAM = Control Buffer Allocated Monitor */
+#if defined(__UMTS_RAT__) || defined(__LTE_RAT__)
+#define CBAM_LIST_SIZE                                             \
+    (NUM_CTRL_BUFF_POOL_SIZE32 + NUM_CTRL_BUFF_POOL_SIZE64 +       \
+     NUM_CTRL_BUFF_POOL_SIZE128 + NUM_CTRL_BUFF_POOL_SIZE256 +     \
+     NUM_CTRL_BUFF_POOL_SIZE512 + NUM_CTRL_BUFF_POOL_SIZE1024 +    \
+     NUM_CTRL_BUFF_POOL_SIZE2048 + NUM_CTRL_BUFF_POOL_SIZE4096 +   \
+     NUM_CTRL_BUFF_POOL_SIZE8192 + NUM_CTRL_BUFF_POOL_SIZE16384 +  \
+     NUM_CTRL_BUFF_POOL_SIZE32768 + NUM_CTRL_BUFF_POOL_SIZE65536 + \
+     NUM_CTRL_BUFF_POOL_SIZE100000)
+#else
+#define CBAM_LIST_SIZE                                          \
+    (NUM_CTRL_BUFF_POOL_SIZE32 + NUM_CTRL_BUFF_POOL_SIZE64 +    \
+     NUM_CTRL_BUFF_POOL_SIZE128 + NUM_CTRL_BUFF_POOL_SIZE256 +  \
+     NUM_CTRL_BUFF_POOL_SIZE512 + NUM_CTRL_BUFF_POOL_SIZE1024 + \
+     NUM_CTRL_BUFF_POOL_SIZE2048 + NUM_CTRL_BUFF_POOL_SIZE4096)
+#endif
+
+/*******************************************************************************
+ * Defines for Ctrl Buffer Allocated Monitor
+ *******************************************************************************/
+struct ctrl_buff_alloc_entry {
+    void *ptr;
+    STAILQ_ENTRY(ctrl_buff_alloc_entry) entries; /* Tail queue. */
+    kal_bool used;
+};
+
+typedef struct {
+    kal_uint32      buf_size;
+    kal_uint32      line;
+    const kal_char *filename;
+    module_type     mod_id;
+} ctrl_buff_info_struct;
+
+KAL_PROTECT_DECLARE_EXTERN(cbam_protect);
+extern struct ctrl_buf_alloc_head   cbam_head;
+extern struct ctrl_buff_alloc_entry cbam_list[];
+extern kal_bool                     cbam_global_enable;
+
+STAILQ_HEAD(ctrl_buf_alloc_head, ctrl_buff_alloc_entry);
+
+#define CBAM_GLOBAL_INSERT_BUFFER(h, b, l, p) \
+    do {                                      \
+        if (KAL_TRUE == cbam_global_enable) { \
+            CBAM_INSERT_BUFFER(h, b, l, p);   \
+        }                                     \
+    } while (0)
+
+#define CBAM_GLOBAL_REMOVE_BUFFER(h, b)       \
+    do {                                      \
+        if (KAL_TRUE == cbam_global_enable) { \
+            CBAM_REMOVE_BUFFER(h, b);         \
+        }                                     \
+    } while (0)
+
+#define CBAM_GLOBAL_DEFINED(def_expr, undef_expr) def_expr
+
+
+/*************************************************************************
+* FUNCTION
+*  ctrl_buff_force_reset_and_free
+*
+* DESCRIPTION
+*  reset the CBAM list, free all buffer in the lhead
+*
+* PARAMETERS
+*  lhead  -  control buffer allocated monitor list head
+*
+* RETURNS
+*  KAL_SUCCESS      - all operations are success
+*  KAL_NOT_PRESENT  - do nothing if DEBUG_CBAM_GLOBAL is not defined and 
+*                     NULL == lhead
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+extern kal_status ctrl_buff_force_reset_and_free(struct ctrl_buf_alloc_head *lhead,
+                                                 kal_uint32 *free_count);
+
+/*************************************************************************
+* FUNCTION
+*  ctrl_buff_monlist_pop
+*
+* DESCRIPTION
+*  get the current allocated control buffer information(potential memory leak)
+*  the popped buffer will be freed in this function
+*
+* PARAMETERS
+*  lhead  -  control buffer allocated monitor list head
+*  cbis   -  control buffer allocated buffer's information
+*
+* RETURNS
+*  KAL_NOT_PRESENT  - this function is not available (not correct debug level)
+*  KAL_NULL_ADDRESS - allocated list is empty
+*  KAL_SUCCESS      - all operations are success
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+extern kal_status ctrl_buff_monlist_pop(struct ctrl_buf_alloc_head *lhead,
+                                        ctrl_buff_info_struct *     cbis);
+
+/*************************************************************************
+* FUNCTION
+*  ctrl_buff_global_allocated_mon_enb
+*
+* DESCRIPTION
+*  enable the global allocated buffer monitor
+*
+* PARAMETERS
+*  enable  -  enable or disable the global monitor
+*
+* RETURNS
+*  KAL_NOT_PRESENT  - this function is not available (not correct debug level)
+*  KAL_SUCCESS      - all operations are success
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+extern kal_status ctrl_buff_global_allocated_mon_enb(kal_bool enable);
+
+/*************************************************************************
+* FUNCTION
+*  ctrl_buff_get_alloc_entry
+*
+* DESCRIPTION
+*  find the available CBAM entry from entry_pool
+*
+* PARAMETERS
+*  entry_pool -  CBAM entry pool
+*  max_num    -  maximal items in the entry_pool
+*
+* RETURNS
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+extern struct ctrl_buff_alloc_entry *
+ctrl_buff_get_alloc_entry(struct ctrl_buff_alloc_entry *entry_pool,
+                          kal_uint32                    max_num);
+
+/*************************************************************************
+* FUNCTION
+*  ctrl_buff_monlist_element_count
+*
+* DESCRIPTION
+*  get the element number in the lhead
+*
+* PARAMETERS
+*  lhead  -  control buffer allocated monitor list head
+*
+* RETURNS
+*  KAL_SUCCESS      - all operations are success
+*  KAL_NOT_PRESENT  - do nothing if DEBUG_CBAM_GLOBAL is not defined and 
+*                     NULL == lhead
+*
+* GLOBALS AFFECTED
+*
+*
+*************************************************************************/
+extern kal_status ctrl_buff_monlist_element_count(struct ctrl_buf_alloc_head *lhead,
+                                                  kal_uint32 *                count);
+
+#if defined(__SMP_ARCH__)
+#define CBAM_INSERT_BUFFER(list_head, buff_ptr, list_pool, pool_count)   \
+    do {                                                                 \
+        struct ctrl_buff_alloc_entry *tmp;                               \
+        kal_uint32                    old_mask;                          \
+                                                                         \
+        tmp      = ctrl_buff_get_alloc_entry((list_pool), (pool_count)); \
+        tmp->ptr = buff_ptr;                                             \
+                                                                         \
+        kal_take_internal_protect(cbam_protect);                         \
+        STAILQ_INSERT_TAIL(&(list_head), tmp, entries);                  \
+        kal_give_internal_protect(cbam_protect);                         \
+    } while (0)
+
+#define CBAM_REMOVE_BUFFER(list_head, buff_ptr)                                \
+    do {                                                                       \
+        struct ctrl_buff_alloc_entry *entry_iter;                              \
+        kal_uint32                    old_mask;                                \
+                                                                               \
+        kal_take_internal_protect(cbam_protect);                               \
+        STAILQ_FOREACH(entry_iter, &(list_head), entries)                      \
+        {                                                                      \
+            if (entry_iter->ptr == buff_ptr) {                                 \
+                STAILQ_REMOVE(&(list_head), entry_iter, ctrl_buff_alloc_entry, \
+                              entries);                                        \
+                entry_iter->used = KAL_FALSE;                                  \
+                break;                                                         \
+            }                                                                  \
+        }                                                                      \
+        kal_give_internal_protect(cbam_protect);                               \
+    } while (0)
+#else
+#define CBAM_INSERT_BUFFER(list_head, buff_ptr, list_pool, pool_count)   \
+    do {                                                                 \
+        struct ctrl_buff_alloc_entry *tmp;                               \
+        kal_uint32                    old_mask;                          \
+                                                                         \
+        tmp      = ctrl_buff_get_alloc_entry((list_pool), (pool_count)); \
+        tmp->ptr = buff_ptr;                                             \
+                                                                         \
+        old_mask = SaveAndSetIRQMask();                                  \
+        STAILQ_INSERT_TAIL(&(list_head), tmp, entries);                  \
+        RestoreIRQMask(old_mask);                                        \
+    } while (0)
+
+#define CBAM_REMOVE_BUFFER(list_head, buff_ptr)                                \
+    do {                                                                       \
+        struct ctrl_buff_alloc_entry *entry_iter;                              \
+        kal_uint32                    old_mask;                                \
+                                                                               \
+        old_mask = SaveAndSetIRQMask();                                        \
+        STAILQ_FOREACH(entry_iter, &(list_head), entries)                      \
+        {                                                                      \
+            if (entry_iter->ptr == buff_ptr) {                                 \
+                STAILQ_REMOVE(&(list_head), entry_iter, ctrl_buff_alloc_entry, \
+                              entries);                                        \
+                entry_iter->used = KAL_FALSE;                                  \
+                break;                                                         \
+            }                                                                  \
+        }                                                                      \
+        RestoreIRQMask(old_mask);                                              \
+    } while (0)
+#endif
+
+#define CBAM_LIST_PREPARE_SIZE(n) (sizeof(struct ctrl_buff_alloc_entry) * (n))
+#define CBAM_LISTHEAD_DECLARE(head) \
+    struct ctrl_buf_alloc_head head = STAILQ_HEAD_INITIALIZER(head)
+#define CBAM_ENTRIES_DECLARE(lentries, n) struct ctrl_buff_alloc_entry lentries[(n)]
+
+#else /* else of "DEBUG_KAL && DEBUG_BUF2 && DEBUG_CBAM_GLOBAL" */
+#define CBAM_INSERT_BUFFER(list_head, buff_ptr, list_pool, pool_count)
+#define CBAM_REMOVE_BUFFER(list_head, buff_ptr)
+
+#define CBAM_LIST_PREPARE_SIZE(n) (0)
+#define CBAM_LISTHEAD_DECLARE(head)
+#define CBAM_ENTRIES_DECLARE(lentries, n)
+#define CBAM_GLOBAL_INSERT_BUFFER(h, b, l, p)
+#define CBAM_GLOBAL_REMOVE_BUFFER(h, b)
+#define CBAM_GLOBAL_DEFINED(def_expr, undef_expr) undef_expr
+
+#endif /* end of "DEBUG_KAL && DEBUG_BUF2 && DEBUG_CBAM_GLOBAL" */
+
+
+#endif /* end of __CTRL_BUFF_ALLOC_MONITOR_H__ */
diff --git a/mcu/service/kal/common/include/event_shed.h b/mcu/service/kal/common/include/event_shed.h
new file mode 100644
index 0000000..1cbf515
--- /dev/null
+++ b/mcu/service/kal/common/include/event_shed.h
@@ -0,0 +1,298 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   event_shed.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   Header file for Event Scheduler.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+   (C) _____ (year of first publication) Sasken communication
+   Technologies Limited, All rights reserved.
+*   This file provides a template for .c files. This space
+*   should be used to describe the file contents
+*   Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _EVENT_SHED_H
+#define _EVENT_SHED_H
+/*RHR*/
+#include "kal_general_types.h"
+#include "stacklib.h"
+#include "kal_public_defs.h"
+#include "mlib_dll.h"
+/*RHR*/
+
+/*************************************************************************
+ * Type Definitions
+ *************************************************************************/
+typedef void (*start_timer_fptr)(void *, unsigned int);
+typedef void (*stop_timer_fptr)(void *);
+
+typedef enum {
+    ES_TIMER_INITIALIZED,
+    ES_TIMER_NOT_RUNNING = ES_TIMER_INITIALIZED,
+    ES_TIMER_RUNNING,
+    ES_TIMER_NOT_TIMED_OUT = ES_TIMER_RUNNING, /* Backward compatiable */
+    ES_TIMER_EXPIRED,
+    ES_TIMER_TIMED_OUT = ES_TIMER_EXPIRED, /* Backward compatiable */
+    ES_TIMER_STOPPED
+} es_timer_status_type;
+
+typedef struct event_scheduler_int {
+    /* event's double-linked list */
+    list_node *dll;
+    /*introduce the head to prevent fuzz accumulate*/
+    list_node *fuzzhead;
+    /* event's expired dll list split in evshed_timer_handler() */
+    list_node *expired_dllhead;
+
+    /* scheduler's reference time base */
+    kal_uint32 t_ref_ticks;
+
+    /* scheduler's pattern, EVSHED_TIMER_ID */
+    kal_uint8 evshed_timer_id[3];
+
+    /* scheduler's suspend flag */
+    kal_bool is_suspend;
+
+    kal_uint32 fuzz;
+
+    /* kal timer pointer */
+    kal_timerid kal_timer_id;
+
+    /* timer status from event-scheduler's view */
+    es_timer_status_type es_timer_status;
+
+    /* user's destination module id (receiver mod id) */
+    module_type dest_mod_id;
+
+    /* descrimivate multiple event schedulers if same receiver mod id*/
+    kal_uint16 es_user_index;
+
+    /*for avoiding race condition by NU protect or windows mutex*/
+    void *es_protect;
+
+    /*for detecting concurrent operation occurs or not*/
+    kal_int32 cur_owner;
+
+    /* reserved for adding newer feature. bit 0: 1 to enable 1ms tick unit */
+    kal_uint32 es_feature_mask;
+//#if defined(__EVENT_CNT_PROFILING__)
+	/* record active event count */
+	kal_uint32 event_cnt;
+
+	/* record history event max count */
+	kal_uint32 event_cnt_his_max;
+	kal_uint32 event_cnt_his_max_timing;
+//#endif /*__EVENT_CNT_PROFILING__*/
+} event_scheduler_int;
+
+typedef struct event {
+    list_node          ev_node;
+    kal_timer_func_ptr event_hf;
+    void *             event_hf_param;
+    kal_uint32         abs_time;
+    event_scheduler_int
+        *owneres; /* a pointer points back to the event's onwer(event scheduler) */
+    kal_uint32 event_index;
+} event;
+
+#if defined(__EVENT_CNT_PROFILING__)
+typedef struct {
+    event_scheduler_int *es;
+	event_scheduler_int *es_his;
+	kal_uint32 event_cnt;
+	kal_uint32 event_cnt_his_max;
+	kal_uint32 timing;
+} event_record_int;
+
+#define EVT_CNT_LIMITATION 256
+#define RECORD_NUM 10
+#endif /*__EVENT_CNT_PROFILING__*/
+
+#define node2event(node) List2Container(node, event, ev_node)
+
+#define evshed_update_fuzzhead(es,eid) { es->fuzzhead = eid; }
+
+#define EVSHED_TIMER_ID 0x00545645UL
+
+#define IS_VALID_EVSHED_TIMER(es)                                         \
+    (((kal_uint32) * ((kal_uint32 *)es->evshed_timer_id) & 0x00FFFFFF) == \
+     (EVSHED_TIMER_ID & 0x00FFFFFF))
+
+extern void evshed_msg_send(event_scheduler_int *es);
+#endif /* _EVENT_SHED_H */
diff --git a/mcu/service/kal/common/include/event_shed_defs.h b/mcu/service/kal/common/include/event_shed_defs.h
new file mode 100644
index 0000000..a0693fc
--- /dev/null
+++ b/mcu/service/kal/common/include/event_shed_defs.h
@@ -0,0 +1,116 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   event_shed_defs.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   Internal function definitions for Event Scheduler.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+   (C) _____ (year of first publication) Sasken communication
+   Technologies Limited, All rights reserved.
+*   This file provides a template for .c files. This space
+*   should be used to describe the file contents
+*   Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _EVENT_SHED_DEFS_H
+#define _EVENT_SHED_DEFS_H
+
+/*************************************************************************
+ * Macros Without Parameters
+ *************************************************************************/
+#define EVSHED_MAX_TIME_MSEC_CNST 0x20000000
+
+/*************************************************************************
+ * Exported Function Prototypes
+ *************************************************************************/
+
+
+#endif /* _EVENT_SHED_DEFS_H */
diff --git a/mcu/service/kal/common/include/kal_adm.h b/mcu/service/kal/common/include/kal_adm.h
new file mode 100644
index 0000000..2efbc8b
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_adm.h
@@ -0,0 +1,331 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_adm.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This header file defines data structure for KAL application dynamic memory
+ *   management.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _KAL_ADM_H
+#define _KAL_ADM_H
+
+#include "kal_general_types.h"
+
+/*******************************************************************************
+ * Constant definitions
+ *******************************************************************************/
+
+/* internal use constants */
+#define ADM_ID       0x20101027
+#define ADM_INUSE    0
+#define ADM_FREE     1
+#define ADM_SHIFT    1
+#define ADM_NOTSHIFT 0
+#define ADM_MB_LOG_STAMP  0x03F3F3F3
+#define ADM_MB_FOOT_STAMP 0x04F4F4F4
+#define ADM_MAX_PRINT_LEN 128
+
+/* other public ADM constant defined in kal_public_defs.h */
+
+#define KAL_ADM_GOODFIT_FUZZ         8
+
+#define KAL_ADM_TRAVERSE_ALLMB       0x1
+#define KAL_ADM_TRAVERSE_NO_CONCHECK 0x2
+#define KAL_ADM_MB_INUSE             (0x01)
+#define KAL_ADM_MB_FREE              (0x02)
+#define KAL_ADM_MB_FIRST             (0x10)
+#define KAL_ADM_MB_LAST              (0x20)
+#define KAL_ADM_MB_INTERNAL          (0x80)
+
+//#define KAL_ADM_PROFILE_FRAGMENT
+
+/*******************************************************************************
+ * Data structure definitions
+ *******************************************************************************/
+
+/* ADM Control Block */
+typedef struct {
+    kal_uint32 adm_id;    /* ID, ADM_ID */
+    kal_uint32 owner;     /* owner of ADM */
+    kal_uint32 left_size; /* total left (free) size in this ADM pool */
+    kal_uint16 bl_num;    /* number of block lists */
+    kal_uint16 flags;     /* KAL_ADM_*_FLAG */
+    kal_uint16 reserved16;
+    kal_uint8  extheader_size; /* a user-defined extensible header, in word */
+    kal_uint8  life0;          /* life cycle */
+} ADM_CB;
+
+
+typedef struct ADM_MB_MINI_HEAD_STRUCT {
+    struct ADM_MB_HEAD_STRUCT *prev; /* previous MB */
+    struct ADM_MB_HEAD_STRUCT *next; /* next MB */
+} ADM_MB_MINI_HEAD;
+
+
+typedef struct ADM_MB_HEAD_STRUCT {
+    struct ADM_MB_HEAD_STRUCT *prev;    /* previous MB */
+    struct ADM_MB_HEAD_STRUCT *next;    /* next MB */
+    struct ADM_MB_HEAD_STRUCT *bl_prev; /* prev pointer in Block List */
+    struct ADM_MB_HEAD_STRUCT *bl_next; /* next pointer in Block List */
+} ADM_MB_HEAD;
+
+
+typedef struct ADM_MB_HEADGUARD_STRUCT {
+    kal_uint32 stamp; /* store a fixed pattern to check corruption */
+} ADM_MB_HEADGUARD;
+
+
+typedef struct ADM_MB_FOOTGUARD_STRUCT {
+    kal_uint32 stamp; /* store a fixed pattern to check corruption */
+} ADM_MB_FOOTGUARD;
+
+
+typedef struct ADM_MB_OLDLOGGING_EXTHEADER {
+    kal_char * filename;
+    kal_uint32 line;
+} ADM_MB_OLDLOGGING_EXTHEADER;
+
+/* ADM Block List */
+typedef struct {
+    kal_uint32 size;
+    kal_uint32 reserved; /* this pointer is used in first BL to store last MB */
+    struct ADM_MB_HEAD_STRUCT *bl_prev; /* prev pointer in Block List */
+    struct ADM_MB_HEAD_STRUCT *bl_next; /* next pointer in Block List */
+                                        /*
+	 * NoteXXX: bl_prev and bl_next must be the last 2 elements
+	 * since ADM_MB_HEAD's bl_prev may point to one ADM_BL.
+	 * (i may cast a ADM_BL to ADM_MB_HEAD to reference bl_prev and bl_next.)
+	 */
+} ADM_BL;
+
+/*******************************************************************************
+ * Macros definitions
+ *******************************************************************************/
+
+/*
+ * NoteXXX: the least-significant-bit of adm_mb_head->prev is used to store the memory
+ * block's state. 1 for INUSE; 0 for FREE.
+ * Need to use these special macros for accessing adm_mb_head->prev.
+ */
+#define ADM_MB_PREV(adm_mb_head) \
+    ((ADM_MB_HEAD *)((kal_uint32)(adm_mb_head)->prev & ~0x01))
+
+#define ADM_MB_SET_PREV(oldval, newval) \
+    ((ADM_MB_HEAD *)((kal_uint32)(newval) | ((kal_uint32)(oldval)&0x01)))
+
+#define ADM_MB_SET_INUSE(adm_mb_head) \
+    (adm_mb_head)->prev = (ADM_MB_HEAD *)((kal_uint32)(adm_mb_head)->prev | 0x01)
+
+#define ADM_MB_SET_FREE(adm_mb_head) \
+    (adm_mb_head)->prev = (ADM_MB_HEAD *)((kal_uint32)(adm_mb_head)->prev & ~0x01)
+
+#define ADM_MB_STATE(adm_mb_head) \
+    (((kal_uint32)(adm_mb_head)->prev & 0x01) ? ADM_INUSE : ADM_FREE)
+
+#define ADM_MB_NEXT(adm_mb_head) \
+    ((ADM_MB_HEAD *)((kal_uint32)(adm_mb_head)->next & ~0x01))
+
+#define ADM_MB_SET_NEXT(oldval, newval) \
+    ((ADM_MB_HEAD *)((kal_uint32)(newval) | ((kal_uint32)(oldval)&0x01)))
+
+#define ADM_MB_SET_ADDR_SHIFT(adm_mb_head) \
+    (adm_mb_head)->next = (ADM_MB_HEAD *)((kal_uint32)(adm_mb_head)->next | 0x01)
+
+#define ADM_MB_CLEAR_ADDR_SHIFT(adm_mb_head) \
+    (adm_mb_head)->next = (ADM_MB_HEAD *)((kal_uint32)(adm_mb_head)->next & ~0x01)
+
+#define ADM_MB_IS_ADDR_SHIFT(adm_mb_head) \
+    (((kal_uint32)(adm_mb_head)->next & 0x01) ? ADM_SHIFT : ADM_NOTSHIFT)
+
+#define ADM_MB_SIZE(adm_mb_head) \
+    ((kal_uint32)(ADM_MB_NEXT(adm_mb_head)) - (kal_uint32)(adm_mb_head))
+
+#define ADM_GET_HEADGUARD_POINTER(adm_mb_head) \
+    ((ADM_MB_HEADGUARD *)((kal_uint8 *)(adm_mb_head) + sizeof(ADM_MB_MINI_HEAD)))
+
+#define ADM_GET_FOOTGUARD_POINTER(adm_mb_head) \
+    ((ADM_MB_FOOTGUARD *)ADM_MB_NEXT(adm_mb_head) - 1)
+
+#define ADM_GET_HEADGUARD_STAMP(adm_cb) ((kal_uint32)(adm_cb) ^ ADM_MB_LOG_STAMP)
+
+#define ADM_GET_LIFE(adm_cb) ((adm_cb->life0 << 8) | (adm_cb->life0 << 16))
+#define ADM_GET_FOOTGUARD_STAMP(adm_cb) (ADM_GET_LIFE((adm_cb)) ^ ADM_MB_FOOT_STAMP)
+
+#define ADM_ROUND_2_4BYTE(value) ((((value) + 3) >> 2) << 2)
+
+#define ADM_IS_4B_ALIGNED(value) (((value)&0x00000003) == 0 ? 1 : 0)
+
+
+#if defined(__MTK_TARGET__) &&                                \
+    (defined(__ARM9_MMU__) || defined(__MTK_L1CACHEABLE__) || \
+     defined(__DYNAMIC_SWITCH_CACHEABILITY__))
+
+#define ADM_ROUNDUP_2_CACHE_LINE(value)                                             \
+    (value) = ((((value) + (CPU_CACHE_LINE_SIZE - 1)) >> CPU_CACHE_LINE_BIT_OFFSET) \
+               << CPU_CACHE_LINE_BIT_OFFSET)
+
+#define ADM_ROUNDDOWN_2_CACHE_LINE(value) \
+    (value) = (((value) >> CPU_CACHE_LINE_BIT_OFFSET) << CPU_CACHE_LINE_BIT_OFFSET)
+
+#define ADM_GET_CACHE_LINE_ALIGN_PAD(value)                                \
+    (((((value) + (CPU_CACHE_LINE_SIZE - 1)) >> CPU_CACHE_LINE_BIT_OFFSET) \
+      << CPU_CACHE_LINE_BIT_OFFSET) - value)
+
+#endif /* __MTK_TARGET__ && (__ARM9_MMU__ || __ARM7_L1DCACHEABLE__ || __DYNAMIC_SWITCH_CACHEABILITY__ ) */
+
+void *kal_adm_get_buffer(KAL_ADM_ID adm_id, ADM_MB_HEAD *adm_mb_head,
+                         kal_uint32 *buffer_length);
+
+typedef kal_bool (*kal_adm_mb_visitor)(KAL_ADM_ID adm_id, kal_uint32 flags,
+                                       ADM_MB_HEAD *mb, void *user_data);
+void kal_adm_traverse(KAL_ADM_ID adm_id, kal_uint32 options,
+                      kal_adm_mb_visitor callback, void *user_data);
+
+#endif /* !_KAL_ADM_H */
diff --git a/mcu/service/kal/common/include/kal_afm.h b/mcu/service/kal/common/include/kal_afm.h
new file mode 100644
index 0000000..3bcba7f
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_afm.h
@@ -0,0 +1,431 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_afm.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This header file defines data structure for KAL application fixed-size
+ *   memory management.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+
+#ifndef _KAL_AFM_H
+#define _KAL_AFM_H
+
+#include "kal_general_types.h"
+#include "cache_sw.h"
+
+/*******************************************************************************
+ * define
+ *******************************************************************************/
+
+/**
+   * enable internal debug functionality.
+   */
+//#define AFM_DEBUG
+
+/*******************************************************************************
+ * Constant definitions
+ *******************************************************************************/
+
+#define AFM_CB_ID         0x20100105
+#define AFM_HEAD_STAMP    0x03F3F3F3
+#define AFM_FOOT_STAMP    0x04F4F4F4
+#define AFM_MAX_PRINT_LEN 128
+#define AFM_INUSE         0
+#define AFM_FREE          1
+#define AFM_STS_BIT       ((kal_uint32)1)
+
+#if 0 /* for GLOBAL INC,move to kal_public_defs.h */
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+//#define AFM_SUBPOOL_END_PATTERN 0xFFFFFFFF
+
+/*******************************************************************************
+ * Data structure definitions
+ *******************************************************************************/
+
+typedef struct AFM_CB_STRUCT {
+    kal_uint32 id;
+    kal_uint32 size;
+    kal_uint32 owner; /*owner of afm,concurrent check*/
+    kal_uint16 subpool_nr;
+    kal_uint16 option;
+    kal_uint16 reserved16;
+    kal_uint8  log_en;
+    kal_uint8  reserved8;
+} AFM_CB_T;
+
+typedef struct AFM_POOL_CB_STRUCT {
+    kal_uint32                     buff_size;
+    kal_uint16                     buff_nr;
+    kal_uint16                     left_buff_nr;
+    struct AFM_MB_HEAD_STRUCT *    free_head;
+    struct AFM_MB_HEADGUD_STRUCT * static_head;
+    struct AFM_POOL_CUSLOG_STRUCT *pool_cuslog;
+} AFM_POOL_CB_T;
+
+typedef struct AFM_POOL_CUSLOG_STRUCT {
+    kal_uint16 alloc_cnt;
+    kal_uint16 min_left_buf_nr;
+} AFM_POOL_CUSLOG_T;
+
+typedef struct AFM_MB_HEAD_STRUCT {
+    struct AFM_MB_HEAD_STRUCT *next_free;
+    AFM_POOL_CB_T *            pool;
+} AFM_MB_HEAD_T;
+
+typedef struct AFM_MB_HEADGUD_STRUCT {
+    struct AFM_MB_HEADGUD_STRUCT *static_next;
+    kal_char *                    filename;
+    kal_uint32                    line;
+    kal_uint32 stamp; /* store a fixed pattern to check corruption */
+} AFM_MB_HEADGUD_T;
+
+
+typedef struct AFM_MB_FOOTGUD_STRUCT {
+    kal_uint32 stamp; /* store a fixed pattern to check corruption */
+} AFM_MB_FOOTGUD_T;
+
+
+/*******************************************************************************
+ * Macros definitions
+ *******************************************************************************/
+
+#define AFM_GET_INDEXED_SUBPOOL(afm_id, idx)                     \
+    (AFM_POOL_CB_T *)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) + \
+                      (sizeof(AFM_POOL_CB_T) * (idx)))
+
+#define AFM_GET_INDEXED_SUBPOOL_LOG(afm_id, idx)                     \
+    (AFM_POOL_CUSLOG_T *)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) + \
+                          (sizeof(AFM_POOL_CB_T) *                   \
+                           (((AFM_CB_T *)afm_id)->subpool_nr)) +     \
+                          (sizeof(AFM_POOL_CUSLOG_T) * (idx)))
+
+#define AFM_GET_HEADGUD(afm_mb) \
+    (AFM_MB_HEADGUD_T *)((kal_uint8 *)(afm_mb) + sizeof(AFM_MB_HEAD_T))
+
+#define AFM_GET_FOOTGUD(afm_mb)                                          \
+    (AFM_MB_FOOTGUD_T *)((kal_uint8 *)(afm_mb) + sizeof(AFM_MB_HEAD_T) + \
+                         sizeof(AFM_MB_HEADGUD_T) +                      \
+                         ((AFM_MB_HEAD_T *)(afm_mb))->pool->buff_size)
+
+#define AFM_SET_HEADGUD(afm_head, input_filename, input_line, gudptn) \
+    {                                                                 \
+        ((AFM_MB_HEADGUD_T *)(afm_head))->filename = input_filename;  \
+        ((AFM_MB_HEADGUD_T *)(afm_head))->line     = input_line;      \
+        ((AFM_MB_HEADGUD_T *)(afm_head))->stamp    = gudptn;          \
+    }
+
+#define AFM_SET_FOOTGUD(afm_foot, gudptn)                 \
+    {                                                     \
+        ((AFM_MB_FOOTGUD_T *)(afm_foot))->stamp = gudptn; \
+    }
+
+#define AFM_GET_FIRST_FREEHEAD(afm_id, subpool_sz, subpool_nr, buf_no,              \
+                               first_freehead)                                      \
+    {                                                                               \
+        kal_int32 idx, sz = 0;                                                      \
+        for (idx = 0; idx < (buf_no); idx++) {                                      \
+            sz += ((subpool_sz[idx] + sizeof(AFM_MB_HEAD_T)) * subpool_nr[idx]);    \
+        }                                                                           \
+        first_freehead =                                                            \
+            (AFM_MB_HEAD_T *)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) +            \
+                              (sizeof(AFM_POOL_CB_T) * (afm_id->subpool_nr)) + sz); \
+    }
+
+#define AFM_GET_FIRST_FREEHEAD_GUDPTN(afm_id, subpool_sz, subpool_nr, buf_no,       \
+                                      first_freehead)                               \
+    {                                                                               \
+        kal_int32 idx, sz = 0;                                                      \
+        for (idx = 0; idx < (buf_no); idx++) {                                      \
+            sz += ((subpool_sz[idx] + sizeof(AFM_MB_HEAD_T) +                       \
+                    sizeof(AFM_MB_HEADGUD_T) + sizeof(AFM_MB_FOOTGUD_T)) *          \
+                   subpool_nr[idx]);                                                \
+        }                                                                           \
+        first_freehead =                                                            \
+            (AFM_MB_HEAD_T *)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) +            \
+                              (sizeof(AFM_POOL_CB_T) * (afm_id->subpool_nr)) + sz); \
+    }
+
+#define AFM_GET_FIRST_FREEHEAD_LOG(afm_id, subpool_sz, subpool_nr, buf_no,         \
+                                   first_freehead)                                 \
+    {                                                                              \
+        kal_int32 idx, sz = 0;                                                     \
+        for (idx = 0; idx < (buf_no); idx++) {                                     \
+            sz += ((subpool_sz[idx] + sizeof(AFM_MB_HEAD_T)) * subpool_nr[idx]);   \
+        }                                                                          \
+        first_freehead =                                                           \
+            (AFM_MB_HEAD_T *)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) +           \
+                              (sizeof(AFM_POOL_CB_T) * (afm_id->subpool_nr)) +     \
+                              (sizeof(AFM_POOL_CUSLOG_T) * (afm_id->subpool_nr)) + \
+                              sz);                                                 \
+    }
+
+#define AFM_GET_FIRST_FREEHEAD_GUDPTN_LOG(afm_id, subpool_sz, subpool_nr, buf_no,  \
+                                          first_freehead)                          \
+    {                                                                              \
+        kal_int32 idx, sz = 0;                                                     \
+        for (idx = 0; idx < (buf_no); idx++) {                                     \
+            sz += ((subpool_sz[idx] + sizeof(AFM_MB_HEAD_T) +                      \
+                    sizeof(AFM_MB_HEADGUD_T) + sizeof(AFM_MB_FOOTGUD_T)) *         \
+                   subpool_nr[idx]);                                               \
+        }                                                                          \
+        first_freehead =                                                           \
+            (AFM_MB_HEAD_T *)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) +           \
+                              (sizeof(AFM_POOL_CB_T) * (afm_id->subpool_nr)) +     \
+                              (sizeof(AFM_POOL_CUSLOG_T) * (afm_id->subpool_nr)) + \
+                              sz);                                                 \
+    }
+
+#define AFM_GET_AFMPOOL_END(afm_id, subpool_sz, subpool_nr, total_buf_no, end_addr) \
+    {                                                                               \
+        kal_int32 idx, sz = 0;                                                      \
+        for (idx = 0; idx < (total_buf_no); idx++) {                                \
+            sz += ((subpool_sz[idx] + sizeof(AFM_MB_HEAD_T)) * subpool_nr[idx]);    \
+        }                                                                           \
+        end_addr =                                                                  \
+            (kal_uint32)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) +                 \
+                         (sizeof(AFM_POOL_CB_T) * (afm_id->subpool_nr)) + sz);      \
+    }
+
+#define AFM_GET_AFMPOOL_END_GUDPTN(afm_id, subpool_sz, subpool_nr, total_buf_no, \
+                                   end_addr)                                     \
+    {                                                                            \
+        kal_int32 idx, sz = 0;                                                   \
+        for (idx = 0; idx < (total_buf_no); idx++) {                             \
+            sz += ((subpool_sz[idx] + sizeof(AFM_MB_HEAD_T) +                    \
+                    sizeof(AFM_MB_HEADGUD_T) + sizeof(AFM_MB_FOOTGUD_T)) *       \
+                   subpool_nr[idx]);                                             \
+        }                                                                        \
+        end_addr =                                                               \
+            (kal_uint32)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) +              \
+                         (sizeof(AFM_POOL_CB_T) * (afm_id->subpool_nr)) + sz);   \
+    }
+
+#define AFM_GET_AFMPOOL_END_LOG(afm_id, subpool_sz, subpool_nr, total_buf_no,      \
+                                end_addr)                                          \
+    {                                                                              \
+        kal_int32 idx, sz = 0;                                                     \
+        for (idx = 0; idx < (total_buf_no); idx++) {                               \
+            sz += ((subpool_sz[idx] + sizeof(AFM_MB_HEAD_T)) * subpool_nr[idx]);   \
+        }                                                                          \
+        end_addr =                                                                 \
+            (kal_uint32)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) +                \
+                         (sizeof(AFM_POOL_CB_T) * (afm_id->subpool_nr)) +          \
+                         (sizeof(AFM_POOL_CUSLOG_T) * (afm_id->subpool_nr)) + sz); \
+    }
+
+#define AFM_GET_AFMPOOL_END_GUDPTN_LOG(afm_id, subpool_sz, subpool_nr,             \
+                                       total_buf_no, end_addr)                     \
+    {                                                                              \
+        kal_int32 idx, sz = 0;                                                     \
+        for (idx = 0; idx < (total_buf_no); idx++) {                               \
+            sz += ((subpool_sz[idx] + sizeof(AFM_MB_HEAD_T) +                      \
+                    sizeof(AFM_MB_HEADGUD_T) + sizeof(AFM_MB_FOOTGUD_T)) *         \
+                   subpool_nr[idx]);                                               \
+        }                                                                          \
+        end_addr =                                                                 \
+            (kal_uint32)((kal_uint8 *)(afm_id) + sizeof(AFM_CB_T) +                \
+                         (sizeof(AFM_POOL_CB_T) * (afm_id->subpool_nr)) +          \
+                         (sizeof(AFM_POOL_CUSLOG_T) * (afm_id->subpool_nr)) + sz); \
+    }
+
+#define AFM_MB_HEADGUD_SET_INUSE(afm_mb_headgud)                         \
+    (afm_mb_headgud)->static_next =                                      \
+        (AFM_MB_HEADGUD_T *)((kal_uint32)(afm_mb_headgud)->static_next | \
+                             AFM_STS_BIT)
+
+#define AFM_MB_HEADGUD_SET_FREE(afm_mb_headgud)                          \
+    (afm_mb_headgud)->static_next =                                      \
+        (AFM_MB_HEADGUD_T *)((kal_uint32)(afm_mb_headgud)->static_next & \
+                             ~AFM_STS_BIT)
+
+#define AFM_MB_HEADGUD_STATE(afm_mb_headgud)                               \
+    (((kal_uint32)(afm_mb_headgud)->static_next & AFM_STS_BIT) ? AFM_INUSE \
+                                                               : AFM_FREE)
+
+#define AFM_MB_HEADGUD_NEXT(afm_mb_headgud) \
+    (AFM_MB_HEADGUD_T *)((kal_uint32)(afm_mb_headgud)->static_next & ~AFM_STS_BIT)
+
+#define AFM_MB_HEADGUD_SET_NEXT(oldval, newval) \
+    (AFM_MB_HEADGUD_T *)((kal_uint32)(newval) | ((kal_uint32)(oldval)&AFM_STS_BIT))
+
+
+#if defined(__MTK_TARGET__) && \
+    (defined(__ARM9_MMU__) || defined(__DYNAMIC_SWITCH_CACHEABILITY__))
+#define AFM_ROUNDUP_2_CACHE_LINE(value)                                             \
+    (value) = ((((value) + (CPU_CACHE_LINE_SIZE - 1)) >> CPU_CACHE_LINE_BIT_OFFSET) \
+               << CPU_CACHE_LINE_BIT_OFFSET)
+
+#define AFM_ROUNDDOWN_2_CACHE_LINE(value) \
+    (value) = (((value) >> CPU_CACHE_LINE_BIT_OFFSET) << CPU_CACHE_LINE_BIT_OFFSET)
+
+#define AFM_GET_CACHE_LINE_ALIGN_PAD(value)                                \
+    (((((value) + (CPU_CACHE_LINE_SIZE - 1)) >> CPU_CACHE_LINE_BIT_OFFSET) \
+      << CPU_CACHE_LINE_BIT_OFFSET) - value)
+#endif /* __MTK_TARGET__ && (__ARM9_MMU__ || __DYNAMIC_SWITCH_CACHEABILITY__) */
+
+#define AFM_ROUNDUP_2_4B(value) (value) = ((((value) + (4 - 1)) >> 2) << 2)
+
+/********* define macro to caculate require size, internal part ***************/
+#define __ALIGN4(sz) (((sz) + 3) & ~3U)
+#define __ALIGNCACHE(sz) \
+    (((sz) + CPU_CACHE_LINE_SIZE - 1) & ~((kal_uint32)(CPU_CACHE_LINE_SIZE - 1)))
+
+#define _KAL_AFM_MB_OVERHEAD(option)                                             \
+    (sizeof(AFM_MB_HEAD_T) +                                                     \
+     (option & AFM_OPT_DBG ? sizeof(AFM_MB_HEADGUD_T) + sizeof(AFM_MB_FOOTGUD_T) \
+                           : 0))
+#if defined(__MTK_TARGET__) && \
+    (defined(__ARM9_MMU__) || defined(__DYNAMIC_SWITCH_CACHEABILITY__))
+#define _KAL_AFM_POOLSIZE_BASE(pcount, option)                                    \
+    (sizeof(AFM_CB_T) + sizeof(AFM_POOL_CB_T) * pcount +                          \
+     (((option)&AFM_OPT_CUSLOG) ? sizeof(AFM_POOL_CUSLOG_T) * (pcount) : 0) + 4 + \
+     (((option)&AFM_OPT_ALIGN_ALLOC) ? CPU_CACHE_LINE_SIZE : 0))
+#define _KAL_AFM_POOLSIZE_PARTITION(option, sz, nr)                               \
+    (option & AFM_OPT_ALIGN_ALLOC                                                 \
+         ? (nr) * (__ALIGNCACHE(sz) + __ALIGNCACHE(_KAL_AFM_MB_OVERHEAD(option))) \
+         : (nr) * (__ALIGN4(sz) + _KAL_AFM_MB_OVERHEAD(option)))
+#else
+#define _KAL_AFM_POOLSIZE_BASE(pcount, option)            \
+    sizeof(AFM_CB_T) + sizeof(AFM_POOL_CB_T) * (pcount) + \
+        ((option & AFM_OPT_CUSLOG) ? sizeof(AFM_POOL_CUSLOG_T) * pcount : 0) + 4
+#define _KAL_AFM_POOLSIZE_PARTITION(option, sz, nr) \
+    (nr) * (__ALIGN4(sz) + _KAL_AFM_MB_OVERHEAD(option))
+#endif
+
+/*******************************   PUBLIC API  ********************************/
+#define KAL_AFM_POOL_OVERHEAD(option, subpool_count) \
+    (_KAL_AFM_POOLSIZE_BASE((subpool_count), (option)))
+#define KAL_AFM_SUBPOOL_OVERHEAD(option, sz, nr) \
+    (_KAL_AFM_POOLSIZE_PARTITION((option), (sz), (nr)))
+
+#endif /* _KAL_AFM_H */
diff --git a/mcu/service/kal/common/include/kal_buff_mgr.h b/mcu/service/kal/common/include/kal_buff_mgr.h
new file mode 100644
index 0000000..f6d7365
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_buff_mgr.h
@@ -0,0 +1,127 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_buff_mgr.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file includes KAL buffer manager functions.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#if !defined(_KAL_BUFF_MGR_H)
+#define _KAL_BUFF_MGR_H
+
+/*************************************************************************
+ * Buffer Management
+ *************************************************************************/
+void *kal_os_allocate_buffer_pool(kal_uint32 total_mem_required, kal_uint32 partition_size);
+kal_status kal_os_create_buffer_pool(kal_os_pool_type *pool_ptr, kal_char *name,
+                                    void *start_address, kal_uint32 pool_size,
+                                    kal_uint32 partition_size);
+kal_status kal_os_delete_buffer_pool(kal_os_pool_type *pool_ptr);
+kal_status kal_os_allocate_buffer(kal_os_pool_type *pool_ptr, void **return_pointer);
+kal_status kal_os_deallocate_buffer(void *partition);
+kal_status kal_os_query_buffer_pool(kal_os_pool_type *pool_ptr, kal_char *name,
+                                    void **start_address, kal_uint32 *pool_size,
+                                    kal_uint32 *partition_size, kal_uint32 *available,
+                                    kal_uint32 *allocated);
+
+#if defined(DEBUG_KAL) && defined(DEBUG_BUF2)
+typedef struct kal_buff_stats {
+    kal_uint8 unused;
+} * kal_buff_statistics;
+#endif // #if defined(DEBUG_KAL) && defined(DEBUG_BUF2)
+
+#if defined(DEBUG_KAL) && (defined(DEBUG_BUF1) || defined(DEBUG_BUF2))
+
+#define KAL_GET_POOL_STATISTICS_ADDR(pool_id) \
+    (kal_pool_statistics)((kal_internal_poolid)pool_id)->pool_stat
+
+void kal_debug_reset_pool_statistics(kal_poolid pool_id);
+
+#ifdef DEBUG_BUF2
+
+#define KAL_BUFF_STAT_SET_INUSE(buff_stat_ptr) \
+    (buff_stat_ptr)->owner_task =              \
+        (kal_internal_taskid)((kal_uint32)(buff_stat_ptr)->owner_task | 0x01)
+
+#define KAL_BUFF_STAT_IS_INUSE(buff_stat_ptr) \
+    ((kal_uint32)((buff_stat_ptr)->owner_task) & 0x00000001)
+
+void kal_debug_get_buffer_statistics(void *               buffer_ptr,
+                                     kal_buff_statistics *stat_ptr);
+void kal_debug_reset_buffer_statistics(void *buffer_ptr);
+
+#endif
+
+#endif /* defined(DEBUG_KAL) && ( defined(DEBUG_BUF1) || defined(DEBUG_BUF2) ) */
+
+#if defined(DEBUG_BUF3)
+kal_bool kal_has_free_pattern(void *user_ptr);
+
+#define KAL_BUF_HAS_FREE_PATTERN(user_buff_ptr) kal_has_free_pattern(user_buff_ptr)
+#else
+#define KAL_BUF_HAS_FREE_PATTERN(user_buff_ptr) KAL_FALSE
+#endif
+
+#endif /* _KAL_BUFF_MGR_H */
diff --git a/mcu/service/kal/common/include/kal_cpuinfo.h b/mcu/service/kal/common/include/kal_cpuinfo.h
new file mode 100644
index 0000000..1845ada
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_cpuinfo.h
@@ -0,0 +1,83 @@
+#ifndef KAL_CPUINFO_H
+#define KAL_CPUINFO_H
+
+/*******************************************************************************
+ * Defines for TC_PRIORITY
+ *******************************************************************************/
+#if defined(__MD93__)
+#define HW_ITC_GRP 3         /* Context takes HW ITC */
+#define HRT_CONTEXT_GRP 2    /* HRT LISR or HISR/task DI on HRT domain */
+#define NORMAL_CONTEXT_GRP 0 /* HISR/task */
+#define IDLE_WAIT_GRP 0      /* Idle task enters WAIT state */
+
+#elif defined(__MD95__)
+
+#define HW_ITC_GRP 3         /* Context takes HW ITC */
+#define HRT_CONTEXT_GRP 2    /* HRT LISR or HISR/task DI on HRT domain */
+#define NORMAL_CONTEXT_GRP 1 /* HISR/task */
+#define IDLE_WAIT_GRP 0      /* Idle task enters WAIT state */
+
+#elif defined(__MD97__) || defined(__MD97P__)
+/* this setting for MD97P is the same with MD97 */
+#define HRT_RESERVED_GRP 3   /* HRT Issues */
+#define HW_ITC_GRP 2         /* Context takes HW ITC, or Critical HRT LISR */
+#define HRT_CONTEXT_GRP 1    /* HRT LISR, or HISR/task DI on HRT domain */
+#define NORMAL_CONTEXT_GRP 0 /* HISR/task */
+
+#else
+#warning "unknown MDMCU version"
+#endif
+
+/*user must include "mips_ia_utils.h"*/
+#if defined(__MD95__) || defined(MT6297_IA)
+#define KAL_CURRENT_PRIO(current_prio)                              \
+    do{                                                             \
+       current_prio = (miu_mfc0(MIU_C0_TCSCHEDULE) & 0x3);          \
+    }while(0); 
+#elif defined(__MD97__) || defined(__MD97P__) 
+#define KAL_CURRENT_PRIO(current_prio)                              \
+    do{                                                             \
+       current_prio = ((miu_mfc0(MIU_C0_TCSCHEDULE)>>MIU_C0_TCSCHEDULE_PRIO_BITFIELD_BEG) & 0x3);          \
+    }while(0); 
+#endif
+
+#define KAL_HRT_RAISE_PRIO()                                 \
+    do {                                                     \
+        miu_save_and_set_c0_tcschedule_grp(HRT_CONTEXT_GRP); \
+    } while (0);
+
+
+#define KAL_ITC_RAISE_PRIO(old_prio)                               \
+    do {                                                           \
+        old_prio = miu_save_and_set_c0_tcschedule_grp(HW_ITC_GRP); \
+    } while (0);
+
+
+/* TCschedule trottle setting is binding with Task/HISR, independent with VPE it running */
+#define KAL_RESTORE_PRIO(prio)                    \
+    do {                                          \
+        miu_save_and_set_c0_tcschedule_grp(prio); \
+    } while (0);
+
+/*user must include "intrCtrl.h"*/
+#define LISR_RAISE_TC_PRIO(IRQ_prio)                                            \
+    do {                                                                        \
+        if (IRQ_prio < IRQ_NORMAL_DOMAIN_HRT_PRIORITY_THRESHOLD) {              \
+            miu_set_c0_tcschedule2(MIU_DEF_HRT_DOM_THROT_VAL, HRT_CONTEXT_GRP); \
+        }                                                                       \
+    } while (0);
+
+/* Set TC's priority according to current VPE's domain */
+#if (defined __MD97__ || defined __MD97P__) && !defined MT6297_IA
+#define KAL_SET_DEFAULT_TC_PRIO()                                    \
+    do {                                                             \
+        register miu_reg32_t tc_priority;                            \
+        tc_priority = miu_mfc0("$31,5");                             \
+        miu_mtc0(MIU_C0_TCSCHEDULE,                                  \
+                tc_priority << MIU_C0_TCSCHEDULE_PRIO_BITFIELD_BEG); \
+    } while (0);
+#else
+#define KAL_SET_DEFAULT_TC_PRIO()
+#endif /* defined __MD97__ && !defined MT6297_IA */
+
+#endif
diff --git a/mcu/service/kal/common/include/kal_debug.h b/mcu/service/kal/common/include/kal_debug.h
new file mode 100644
index 0000000..32fcefc
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_debug.h
@@ -0,0 +1,430 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_debug.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file would be used as a kal header file for the compilation
+ *   of any module using debug version of kal.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+*   (C) _____ (year of first publication) Sasken communication
+*   Technologies Limited, All rights reserved.
+*   This file provides a template for .c files. This space
+*   should be used to describe the file contents
+*   Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _KAL_DEBUG_H
+#define _KAL_DEBUG_H
+
+#include "kal_internal_def.h"
+/*************************************************************************
+ * Constant definition and check
+ *************************************************************************/
+
+#if defined(DEBUG_KAL) && defined(RELEASE_KAL)
+#error "Only one of DEBUG_KAL and RELEASE_KAL can be defined"
+#endif
+
+#if !defined(DEBUG_KAL) && !defined(RELEASE_KAL)
+#error "At least one of DEBUG_KAL or RELEASE_KAL should be defined"
+#endif
+
+#if !defined(__KAL_ASSERT_LEVEL4__) && !defined(__KAL_ASSERT_LEVEL3__) && !defined(__KAL_ASSERT_LEVEL2__) && !defined(__KAL_ASSERT_LEVEL1__) && !defined(__KAL_ASSERT_LEVEL0__)
+#error "At least one of KAL_ASSERT_LEVEL4 or KAL_ASSERT_LEVEL3 or KAL_ASSERT_LEVEL2 or KAL_ASSERT_LEVEL1 or KAL_ASSERT_LEVEL0 should be defined"
+#endif
+
+/*************************************************************************
+ * Include the common header file
+ *************************************************************************/
+#include "kal_public_defs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum { KAL_MUTEX_GIVEN, KAL_MUTEX_TAKEN } kal_mutex_state;
+
+#if defined(DEBUG_KAL) && defined(DEBUG_DEADLOCKS)
+typedef struct kal_lock_wait_info_struct {
+    kal_uint32 *waiting_lock_p;
+    kal_uint32  waiting_start_time;
+    void *      context;
+} kal_lock_wait_info_type;
+
+void kal_set_lock_waiting_info(void *context, kal_uint32 *lock);
+void kal_clear_lock_waiting_info(void *context);
+kal_lock_wait_info_type *kal_get_lock_waiting_info(void *context);
+#endif
+
+
+#if defined (__MTK_TARGET__)
+
+typedef enum {
+    KAL_WP_W = 1,
+    KAL_WP_R,
+    KAL_WP_RW
+} kal_wp_type;
+
+#if defined __MD97__ && !defined MT6297_IA
+
+#define KAL_WP_MASK_CACHE_LINE (0x4) /* Mask bits 4:0 */
+
+#define KAL_WATCHPOINT_7_SET(addr, type, mask) \
+    do {\
+        __asm__ __volatile__ (\
+                ".set push;"\
+                ".set noreorder;"\
+                "mtc0 %0, $18, 7;"\
+                "sll $t1, %2, 22;"\
+                "li $t0, 1279;"\
+                "ins $t1, $t0, 11, 11;"\
+                "ins $t1, %1, 0, 2;"\
+                "mtc0 $t1, $19, 7;"\
+                "ehb;"\
+                ".set pop;"\
+                : \
+                : "r"(addr), "r"(type), "r"(mask)\
+                : "$t0", "$t1"\
+                );\
+    } while(0)
+
+#define KAL_STACK_PROTECT(stack_ptr) KAL_WATCHPOINT_7_SET(stack_ptr, KAL_WP_W, KAL_WP_MASK_CACHE_LINE);
+#else /* defined __MD97__ && !defined MT6297_IA */
+
+#define KAL_WP_MASK_CACHE_LINE (0x3) /* Mask address bits 4:3, WatchLo already
+                                        uses bits 2:0 for I/R/W config -> bits 4:0 are masked */
+
+#ifndef __mips16
+#define KAL_WATCHPOINT_3_SET(addr, type, mask) \
+    do {\
+        __asm__ __volatile__ (\
+                ".set push;"\
+                ".set noreorder;"\
+                "move $t0, %0;"\
+                "ins $t0, %1, 0, 2;"\
+                "sll $t1, %2, 3;"\
+                "mtc0 $t0, $18, 3;"\
+                "mtc0 $t1, $19, 3;"\
+                "ehb;"\
+                ".set pop;"\
+                : \
+                : "r"(addr), "r"(type), "r"(mask)\
+                : "$t0", "$t1"\
+                );\
+    } while(0)
+#else
+#define KAL_WATCHPOINT_3_SET(addr, type, mask) \
+    do {\
+        __asm__ __volatile__ (\
+                ".set push;"\
+                ".set noreorder;"\
+                "move $2, %0;"\
+                "ins $2, %1, 0, 2;"\
+                "sll $3, %2, 3;"\
+                "mtc0 $2, $18, 3;"\
+                "mtc0 $3, $19, 3;"\
+                "ehb;"\
+                ".set pop;"\
+                : \
+                : "d"(addr), "d"(type), "d"(mask)\
+                : "$2", "$3"\
+                );\
+    } while(0)
+#endif
+
+#define KAL_STACK_PROTECT(stack_ptr) KAL_WATCHPOINT_3_SET(stack_ptr, KAL_WP_W, KAL_WP_MASK_CACHE_LINE);
+#endif /* defined __MD97__ && !defined MT6297_IA */
+#endif /* defined (__MTK_TARGET__) */
+    
+#if defined(DEBUG_KAL)
+/*************************************************************************
+ * Macros Without Parameters
+ *************************************************************************/
+
+#ifdef DEBUG_BUF1
+
+#define KAL_HEAD_PRINT_SIZE 4
+#define KAL_FOOT_PRINT_SIZE 2
+#define KAL_FOOT_BUFF_ID_SIZE 2
+#define KAL_FOOT2_PRINT_SIZE 4
+
+#define KAL_BUFF_HEADER_SIZE KAL_HEAD_PRINT_SIZE
+
+#define KAL_BUFF_FOOTER_SIZE (KAL_FOOT_PRINT_SIZE + KAL_FOOT_BUFF_ID_SIZE)
+
+#endif
+
+#ifdef DEBUG_BUF2
+
+#define KAL_HEAD_PRINT_SIZE 4
+#define KAL_FOOT_PRINT_SIZE 2
+#define KAL_FOOT_BUFF_ID_SIZE 2
+#define KAL_FOOT2_PRINT_SIZE 4
+#define KAL_TASKID_PTR_SIZE 4
+
+#define KAL_BUFF_HEADER_SIZE (KAL_HEAD_PRINT_SIZE + KAL_TASKID_PTR_SIZE)
+
+#define KAL_BUFF_FOOTER_SIZE (KAL_FOOT_PRINT_SIZE + KAL_FOOT_BUFF_ID_SIZE)
+
+#define KAL_GET_TASKID_PTR_IN_BUFF_HEADER(buf_ptr) \
+    ((kal_char *)buf_ptr - KAL_TASKID_PTR_SIZE)
+#endif
+
+#if defined(DEBUG_BUF1) || defined(DEBUG_BUF2)
+#define KAL_GET_HEADER_PTR_IN_BUFF_HEADER(buf_ptr) \
+    ((kal_char *)buf_ptr - KAL_BUFF_HEADER_SIZE)
+
+#if defined(__MTK_TARGET__)
+#define SENSITIVE_BUFF_FLAG (0x1 << 1)  /* bit 1 of header is the sensitive flag */
+#endif
+#endif
+
+/*************************************************************************
+ * Define exported function prototype
+ *************************************************************************/
+extern void kal_set_free_pattern(void *user_ptr, kal_uint32 buff_size);
+extern void *kal_is_freepattern(void *user_ptr, kal_uint32 buff_size);
+
+#if defined(DEBUG_BUF1) || defined(DEBUG_BUF2)
+extern void kal_init_buff_header_footer(void *buff_pt, kal_poolid ext_pool_id,
+                                       kal_uint16 buff_id);
+extern void kal_update_buff_header_footer(kal_poolid pool_id, void *buff_ptr,
+                                          kal_taskid ext_task_id,
+                                          kal_uint32 buff_size,
+                                          kal_uint16 buff_number);
+extern void kal_is_valid_buffer(void *buff_ptr, kal_uint16 buff_number);
+#endif /* DEBUG_BUF1 ||DEBUG_BUF2 */
+
+#if defined(DEBUG_BUF3)
+extern void kal_check_free_pattern(void *user_ptr, kal_uint32 buff_size);
+extern void kal_set_alloc_pattern(void *user_ptr, kal_uint32 user_size,
+                                  kal_uint32 buff_size);
+extern void kal_check_frag_pattern(void *user_ptr, kal_uint32 user_size,
+                                   kal_uint32 buff_size);
+#endif /* DEBUG_BUF3 */
+#endif /* DEBUG_KAL */
+
+/*************************************************************************
+ * Define Console or Log Print Functions
+ *************************************************************************/
+extern void stack_print(char *string);
+
+#ifdef KAL_ON_OSCAR
+#define system_print osc_platform_print_msg
+#else
+#if !defined(__FUE__)
+#define system_print(s) stack_print(s)
+#else
+#define system_print(s) fue_dbg_print(s)
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _KAL_DEBUG_H */
diff --git a/mcu/service/kal/common/include/kal_debug_common_defs.h b/mcu/service/kal/common/include/kal_debug_common_defs.h
new file mode 100644
index 0000000..4175cdf
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_debug_common_defs.h
@@ -0,0 +1,366 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_debug_common_defs.h 
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file has definations for Debug version of KAL that
+ *   are common across different OSs.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+   (C) _____ (year of first publication) Sasken communication
+   Technologies Limited, All rights reserved.
+*   This file provides a template for .c files. This space
+*   should be used to describe the file contents
+*   Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _KAL_DEBUG_COMMON_DEFS_H
+#define _KAL_DEBUG_COMMON_DEFS_H
+
+#ifdef DEBUG_KAL
+
+#include "lcd_ip_cqueue.h"
+#include "kal_os.h"
+
+//#ifndef DEBUG_KAL
+//	#error "kal_debug_common_defs.h must included for debug only"
+//#endif	/* ifndef DEBUG_KAL */
+
+/*******************************************************************************
+ * Macros Without Parameters
+ *******************************************************************************/
+#define KAL_TIMER_SCALING_FACTOR    1
+#define KAL_MAX_NUM_QUEUES          50
+#define KAL_BUFF_HEAD_PRINT         (kal_uint8)0xF1
+#define KAL_BUFF_FOOT_PRINT         (kal_uint8)0xF2
+#if defined(SENSITIVE_BUFF_FLAG)
+#define KAL_BUFF_HDR_MASK           (kal_uint32)0xFFFFFFF0
+#define KAL_BUFF_HDR_STAMP          (kal_uint32)0xF1F1F1F0
+#else
+#define KAL_BUFF_HDR_MASK           (kal_uint32)0xFFFFFFFF
+#define KAL_BUFF_HDR_STAMP          (kal_uint32)0xF1F1F1F1
+#endif
+#define KAL_BUFF_FOOT_STAMP         (kal_uint32)0x0000F2F2
+#define KAL_MAX_ALLOCATIONS         5000
+#define KAL_MAX_BUFF_SIZE           ((~(kal_uint16)0)-(KAL_BUFFER_OVERHEAD + 1))
+#define KAL_MAX_BUFF_HISTORY        3
+#define KAL_MAX_NUM_BUFF_POOLS      40
+#define KAL_TASK_NAME_SIZE          16
+#define KAL_MAX_CALLER_ADDRESS      10
+#define KAL_BUFF_ALLO_STAMP         (kal_uint32)0x414C4C4F  /*ALLO*/
+#define KAL_BUFF_FREE_STAMP         (kal_uint32)0x46524545  /*FREE*/
+
+/*
+ * Using one more than KAL_MAX_ALLOC_ID allowed for external
+ * allocations
+ */
+#define KAL_INTERNAL_ALLOC_ID     ( KAL_MAX_ALLOC_ID + 1 )
+//#define KAL_DEBUG_CBS
+
+/*******************************************************************************
+ * Partial debug statistics structure definition
+ *******************************************************************************/
+
+#ifdef DEBUG_BUF2
+
+typedef enum {
+   KAL_BUFF_DEALLOCATED,
+   KAL_BUFF_ALLOCATED,
+   KAL_BUFF_CORRUPTED
+} kal_buff_state;
+
+typedef struct kal_history_node {
+   struct kal_int_task_struct*    owner_task;
+   kal_buff_state                 buffer_state;
+   kal_uint16                     alloc_id;
+   const kal_char*                file_name;
+   kal_uint32                     line;
+   kal_uint32                     size;
+   kal_uint32                     ticks_stamp;
+} kal_history_node_t;
+
+typedef struct kal_int_buff_stats {
+   kal_internal_taskid owner_task;
+   LCD_IP_CQUEUE( kal_history_node_t, KAL_MAX_BUFF_HISTORY ) buff_history;
+} *kal_internal_buff_statistics, kal_buff_stat_type;
+
+#endif /* DEBUG_BUF2 */
+#if defined(DEBUG_BUF3) && defined(__MTK_TARGET__)
+
+typedef struct kal_int_buff_callstack{
+kal_uint32 callstack[KAL_MAX_CALLER_ADDRESS];
+} *kal_internal_buff_callstack,kal_buff_callstack_type;
+
+#endif
+
+/*******************************************************************************
+ * Exported Function Prototypes
+ *******************************************************************************/
+#if defined(DEBUG_BUF1) || defined(DEBUG_BUF2)
+
+extern void kal_debug_validate_poolid(kal_internal_poolid pool_id, kal_uint32* pool_index_p);
+#ifdef DEBUG_BUF2
+extern void kal_debug_update_buff_history(void* usr_buff_ptr,
+                                          void* owner_task,
+                                          kal_buff_state buff_state,
+                                          kal_uint32 size,
+                                          const kal_char* file,
+                                          kal_uint32 line,
+                                          kal_uint32 alloc_id,
+                                          kal_uint32 ticks_stamp, 
+                                          kal_uint16 buffer_number);
+
+
+extern void kal_reset_pool(kal_internal_poolid pool_id);
+
+extern kal_bool kal_debug_is_buff_footer_corrupted(kal_uint8* usr_buff,
+                                                   kal_history_node_t* tail_node_p);
+
+extern void kal_debug_get_last_history_node(void* usr_buff_ptr, kal_history_node_t* tail_node_ptr);
+
+extern void kal_debug_validate_buff_footer(kal_uint8* usr_buff, kal_history_node_t* tail_node_p);
+
+
+#else	/* DEBUG_BUF2 */
+
+#define is_buff_over_run(ptr, size, index)   (KAL_FALSE)
+
+#endif /* DEBUG_BUF2 */
+
+extern kal_uint16 __kal_get_buff_num(void *buff_ptr, kal_uint16* index_p);
+
+extern kal_uint16 kal_get_buff_num(void *buff_ptr);
+
+
+#endif /* DEBUG_BUF1 || DEBUG_BUF2 */
+
+extern void kal_uint_2_hex_str( kal_uint32 num, kal_char* string );
+
+extern void kal_uint_2_str( kal_uint32 num, kal_char* string );
+
+extern kal_bool kal_debug_is_history_empty( kal_internal_poolid pool_id, void*  buff_ptr );
+
+extern void kal_validate_buff_footer(void *buff_ptr, kal_uint32 buff_size );
+
+extern void kal_take_reentrant_mutex(kal_os_mutex_type *mutex_id);
+
+extern void kal_give_reentrant_mutex(kal_os_mutex_type *mutex_id);
+
+/*******************************************************************************
+ * Memory Management
+ *******************************************************************************/
+/*******************************************************************************
+ * Declarations Of Exported Globals
+ *******************************************************************************/
+extern kal_buff_pool_info   pool_info_g [ KAL_MAX_NUM_BUFF_POOLS ];
+extern kal_uint8            num_buff_pools_created_g;
+
+#if 0
+/* under construction !*/
+#endif
+extern kal_internal_hisrid  kal_hisr_ptrs_g [ KAL_MAX_NUM_HISRS ];
+
+#endif /* DEBUG_KAL */
+#endif /* _KAL_DEBUG_COMMON_DEFS_H */
+
+
diff --git a/mcu/service/kal/common/include/kal_debug_msg_sap_defs.h b/mcu/service/kal/common/include/kal_debug_msg_sap_defs.h
new file mode 100644
index 0000000..87eda50
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_debug_msg_sap_defs.h
@@ -0,0 +1,228 @@
+#ifdef _DEBUG_MSG_SAP_
+
+#include "kal_public_defs.h"
+#include "module_msg_range.h"
+
+#undef MODULE_MSG_BEGIN
+#undef MODULE_MSG_END
+#define MODULE_MSG_BEGIN(BEGIN_POS) MSG_DEBUG_TAG_##BEGIN_POS = BEGIN_POS,
+#define MODULE_MSG_END(END_POS)
+
+/***************************************************************
+*  if add _msgid.h or _sap.h file, should include the _msgid.h or _sap.h in :                *
+*    kal_debug_msg_sap_defs.h & libParseDbModem.c & srcParseDbModem.c          *
+****************************************************************/
+typedef enum {
+#include "sysservice_msgid.h"
+#include "cc_msgid.h"
+#include "ciss_msgid.h"
+#include "mm_msgid.h"
+#include "sms_msgid.h"
+#include "sim_public_msgid.h"
+#include "sim_ps_msgid.h"
+#include "ps_public_l4_msgid.h"
+#include "l4_msgid.h"
+#include "psdm_msgid.h"
+#include "rr_msgid.h"
+#include "llc_msgid.h"
+#include "p2p_msgid.h"
+#include "sndcp_msgid.h"
+#include "sm_msgid.h"
+#include "data_msgid.h"
+#include "ps_public_vt_msgid.h"
+#include "VT_msgid.h"
+#include "nvram_msgid.h"
+#include "l1_msgid.h"
+#include "hal_l1_msgid.h"
+#include "l1hisr_msgid.h"
+#include "ft_msgid.h"
+#include "tst_msgid.h"
+#include "mtf_msgid.h"
+#include "audio_msgid.h"
+#include "ratcm_msgid.h"
+#include "ratdm_msgid.h"
+#include "urr_msgid.h"
+#include "ul2_msgid.h"
+#include "ul2d_msgid.h"
+#include "uas_gas_msgid.h"
+#include "uas_gas_gemini_msgid.h"
+#include "ul1_msgid.h"
+#include "ul1data_msgid.h"
+#include "ul1hisr_msgid.h"
+#include "ul1c_msgid.h"
+#include "ll1_msgid.h"
+#include "ul1tst_msgid.h"
+#include "ulcs_msgid.h"
+#include "gps_msgid.h"
+#include "tl1_msgid.h"
+#include "tl1data_ast_msgid.h"
+#include "tl1fta_ast_msgid.h"
+#include "rsva_msgid.h"
+#include "ndis_msgid.h"
+#include "ps_public_ups_msgid.h"
+#include "ups_msgid.h"
+#include "ps_public_supl_msgid.h"
+#include "supl_msgid.h"
+#include "cmux_msgid.h"
+#include "ppp_msgid.h"
+#include "ext_modem_msgid.h"
+#include "wmt_msgid.h"
+#include "cldmacore_msgid.h"
+#include "em_msgid.h"
+#include "fs_msgid.h"
+#include "med_msgid.h"
+#include "dps_msgid.h"
+#include "udps_msgid.h"
+#include "drv_msgid.h"
+#include "meut_msgid.h"
+#include "l1_ext_msgid.h"
+#include "haplus_msgid.h"
+/* Add by LTE SS */
+#include "el1_msgid.h"
+#include "l1edps_msgid.h"
+#include "mll1_msgid.h"
+#if (CUR_GEN <= MD_GEN95)
+#include "el2_msgid.h"
+#endif
+#include "hif_mw_msgid.h"
+#include "hif_svc_msgid.h"
+#include "tftlib_msgid.h"
+#include "nwsel_msgid.h"
+#include "emm_msgid.h"
+#include "eval_msgid.h"
+#include "etc_msgid.h"
+#include "esm_msgid.h"
+#include "upcm_msgid.h"
+#if defined(__U4G_ADAPTOR__)
+/* U4G adaptor.*/
+#include "ul1b_msgid.h"
+#include "el1b_msgid.h"
+#endif
+#if defined(__N5G_ADAPTOR__)
+#include "nl1b_msgid.h"
+#endif
+#include "ccifcore_msgid.h"
+#include "ccismcore_msgid.h"
+#include "cscdcore_msgid.h"
+#include "lhifcore_msgid.h"
+#include "atp_msgid.h"
+#include "bip_msgid.h"
+#include "kpalv_msgid.h"
+#include "cl1tst_l1ps_msgid.h"
+#include "cl1tst_msgid.h"
+#include "css_msgid.h"
+#include "d2_msgid.h"
+#include "ddm_msgid.h"
+#include "do_clc_msgid.h"
+#include "do_fcp_msgid.h"
+#include "do_rcp_msgid.h"
+#include "do_rmc_msgid.h"
+#include "do_sec_msgid.h"
+#include "do_slc_msgid.h"
+#include "el1_phs_msgid.h"
+#include "el1_tx_msgid.h"
+#include "el1tst_msgid.h"
+#include "elt_msgid.h"
+#include "gmss_msgid.h"
+#include "hlp_msgid.h"
+#include "hsc_msgid.h"
+#include "imc_msgid.h"
+#include "imcsms_msgid.h"
+#include "iwlan_msgid.h"
+#include "n3cf_msgid.h"
+#include "l1d_msgid.h"
+#include "l1tst_msgid.h"
+#include "l4b_msgid.h"
+#include "las_msgid.h"
+#include "lec_msgid.h"
+#include "lmd_msgid.h"
+#include "lmds_msgid.h"
+#include "lpp_msgid.h"
+#include "utt_msgid.h"
+#include "mcf_msgid.h"
+#include "mmrf_msgid.h"
+#include "mmrf_pcore_msgid.h"
+#include "mrs_msgid.h"
+#include "pam_msgid.h"
+#include "psw_msgid.h"
+#include "psws_msgid.h"
+#include "rlp_msgid.h"
+#include "sdm_msgid.h"
+#include "simmngr_msgid.h"
+#include "stub_msgid.h"
+#include "uim_msgid.h"
+#include "val_msgid.h"
+#include "vdm_msgid.h"
+#include "ltecsr_msgid.h"
+#include "ccci_ipc_msgid.h"
+#include "hif_ipc_msgid.h"
+#include "tcpip_msgid.h"
+#include "wifi_proxy_msgid.h"
+#include "dispatcher_msgid.h"
+
+#if defined(__LTE_RAT__) && defined(__MD97__)
+#include "el2_v2_msgid.h"
+#include "enl2_msgid.h"
+#endif
+#if defined(__NR_RAT__)
+#include "nrrc_msgid.h"
+#include "nl2_msgid.h"
+#ifndef __LTE_RAT__
+#include "enl2_msgid.h"
+#endif
+#endif /* __NR_RAT__ */
+
+#include "http_tls_msgid.h"
+} MSG_TYPE_DEBUG;
+
+#include "sap_range.h"
+
+#undef MODULE_SAP_BEGIN
+#undef MODULE_SAP_END
+#define MODULE_SAP_BEGIN(BEGIN_POS)
+#define MODULE_SAP_END(END_POS)
+
+typedef enum {
+#include "svc_sap.h"
+#include "md_sap.h"
+#include "md_svc_sap.h"
+#include "md_drv_sap.h"
+#include "md_mmi_sap.h"
+#include "md_mw_sap.h"
+#include "mw_sap.h"
+#include "drv_sap.h"
+} SAP_TYPE_DEBUG;
+
+#ifdef _DEBUG_MSG_SAP_
+#include "module_id_range.h"
+#undef MODULE_MOD_BEGIN
+#undef MODULE_MOD_END
+#define MODULE_MOD_BEGIN(BEGIN_POS) MOD_##BEGIN_POS = BEGIN_POS,
+#define MODULE_MOD_END(END_POS) MOD_##END_POS       = END_POS,
+typedef enum {
+#include "srv_modid.h"
+#include "modem_2g3g_modid.h"
+#include "modem_4g_modid.h"
+#include "modem_5g_modid.h"
+#include "middleware_modid.h"
+#include "drv_modid.h"
+#include "hisr_modid.h"
+#include "isr_modid.h"
+} MODULE_TYPE_DEBUG;
+#undef MODULE_MOD_BEGIN
+#undef MODULE_MOD_END
+#else
+typedef kal_uint16 MODULE_TYPE_DEBUG
+#endif
+
+typedef struct ilm_struct_debug {
+    MODULE_TYPE_DEBUG  src_mod_id;
+    MODULE_TYPE_DEBUG  dest_mod_id;
+    SAP_TYPE_DEBUG     sap_id;
+    MSG_TYPE_DEBUG     msg_id;
+    local_para_struct *local_para_ptr;
+    peer_buff_struct * peer_buff_ptr;
+} ilm_struct_debug;
+void dummyDebugInitForMsgSap(void);
+
+#endif //_DEBUG_MSG_SAP_
diff --git a/mcu/service/kal/common/include/kal_error_code.h b/mcu/service/kal/common/include/kal_error_code.h
new file mode 100644
index 0000000..b65287a
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_error_code.h
@@ -0,0 +1,1285 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_error_code.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   KAL error code
+ *
+ * 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!
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+
+
+/*************************************************************************
+ * Define macros.
+ *************************************************************************/
+
+#if defined(X_KAL_ERROR_CODE)
+#define X_KAL_ERROR(code, str) code,
+#define X_KAL_ERROR_ASSIGN(code, val, str) code = val,
+#endif  /* X_KAL_ERROR_CODE */
+
+#if defined(X_KAL_ERROR_STRING)
+#define X_KAL_ERROR(code, str) str,
+#define X_KAL_ERROR_ASSIGN(code, val, str) str = val,
+#endif  /* X_KAL_ERROR_STRING */
+
+
+/*************************************************************************
+ * Define KAL error code and strings.
+ *************************************************************************/
+
+/* General KAL Error */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KAL_INTERNAL_FAIL,                         0,       KAL_ERROR_KAL_INTERNAL_FAIL_)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KAL_SUB_ERROR_CODE1,                       1,       KAL_ERROR_KAL_SUB_ERROR_CODE1_)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KAL_SUB_ERROR_CODE2,                       2,       KAL_ERROR_KAL_SUB_ERROR_CODE2_)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KAL_SUB_ERROR_CODE3,                       3,       KAL_ERROR_KAL_SUB_ERROR_CODE3_)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KAL_SUB_ERROR_CODE4,                       4,       KAL_ERROR_KAL_SUB_ERROR_CODE4_)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KAL_SUB_ERROR_CODE5,                       5,       KAL_ERROR_KAL_SUB_ERROR_CODE5_)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KAL_SUB_ERROR_CODE6,                       6,       KAL_ERROR_KAL_SUB_ERROR_CODE6_)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KAL_SUB_ERROR_CODE7,                       7,       KAL_ERROR_KAL_SUB_ERROR_CODE7_)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KAL_SUB_ERROR_CODE8,                       8,       KAL_ERROR_KAL_SUB_ERROR_CODE8_)
+
+#if defined(__CR4__)
+/* ARM exception */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_UNDEF,                                     1,       Undefined_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_SWI,                                       2,       SWI_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_PABORT,                                    3,       Prefetch_abort)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DABORT,                                    4,       Data_abort)
+#elif defined (__MIPS_IA__) || defined(__MIPS_I7200__)
+/* MIPS exception */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TLB_MOD_EXCEPTION,                         1,       tlb_mod_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TLB_MISS_LOAD_EXCEPTION,                   2,       tlb_miss_load_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TLB_MISS_STORE_EXCEPTION,                  3,       tlb_miss_store_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADDRESS_ERROR_LOAD_EXCEPTION,              4,       address_error_load_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADDRESS_ERROR_STORE_EXCEPTION,             5,       address_error_store_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_INSTR_BUS_ERROR,                           6,       instr_bus_error_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DATA_BUS_ERROR,                            7,       data_bus_error_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_SYSTEM_CALL_EXCEPTION,                     8,       syscall_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BREAKPOINT_EXCEPTION,                      9,       break_point_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_RESERVED_INSTRUCTION_EXCEPTION,            10,      reserved_instruction_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_COPROCESSORS_UNUSABLE_EXCEPTION,           11,      coprocessor_unusable_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_INTEGER_OVERFLOW_EXCEPTION,                12,      interger_overflow_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TRAP_EXCEPTION,                            13,      trap_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_MSA_FLOATING_POINT_EXCEPTION,              14,      msa_floating_point_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_FLOATING_POINT_EXCEPTION,                  15,      floating_point_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_COPROCESSOR_2_IS_1_EXCEPTION,              16,      coprocessor_2_is_1_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_COR_EXTEND_UNUSABLE_EXCEPTION,             17,      corextend_unusable_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_COPROCESSOR_2_EXCEPTION,                   18,      coprocessor_2__exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TLB_READ_INHIBIT_EXCEPTION,                19,      tlb_read_inhibit_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TLB_EXECUTE_INHIBIT_EXCEPTION,             20,      tlb_execute_inhibit_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_MSA_UNUSABLE_EXCEPTION,                    21,      msa_unusable_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_MDMX_EXCEPTION,                            22,      mdmx_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_WATCH_EXCEPTION,                           23,      watch_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_MCHECK_EXCEPTION,                          24,      mcheck_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_THREAD_EXCEPTION,                          25,      thread_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DSP_UNUSABLE_EXCEPTION,                    26,      dsp_unusable_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_RESERVED_27_EXCEPTION,                     27,      reserved_27_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_RESERVED_28_EXCEPTION,                     28,      reserved_28_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_MPU_NOT_ALLOW_EXCEPTION,                   29,      mpu_not_allow_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_CACHE_ERROR_EXCEPTION_DBG_MODE,            30,      cache_error_exception_dbg_mode)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_RESERVED_31_EXCEPTION,                     31,      reserved_31_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_NMI_EXCEPTION,                             32,      nmi_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_CACHE_ERROR_EXCEPTION,                     33,      cache_error_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TLB_REFILL_LOAD_EXCEPTION,                 34,      tlb_refill_load_exception)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TLB_REFILL_STORE_EXCEPTION,                35,      tlb_refill_store_exception)
+#endif
+/* System Initialization */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_KALINIT_INIT_FAILED,                       0x0101,  KAL_ERROR_KALINIT_INIT_FAILED_)
+X_KAL_ERROR(KAL_ERROR_KALINIT_INIT_CREATE_SEM_FAILED,                            initialize_KAL___fail_to_create_a_semaphore)
+X_KAL_ERROR(KAL_ERROR_KALINIT_INIT_CREATE_QU_MUTEX_FAILED,                       initialize_KAL___fail_to_create_a_QUEUE_MUTEX)
+X_KAL_ERROR(KAL_ERROR_KALINIT_INIT_CREATE_POOL_MUTEX_FAILED,                     initialize_KAL___fail_to_create_a_POOL_MUTEX)
+X_KAL_ERROR(KAL_ERROR_KALINIT_INIT_CREATE_TIMER_MUTEX_FAILED,                    initialize_KAL___fail_to_create_a_TIMER_MUTEX)
+X_KAL_ERROR(KAL_ERROR_KALINIT_INIT_CREATE_MEM_MUTEX_FAILED,                      initialize_KAL___fail_to_create_a_MEM_MUTEX)
+X_KAL_ERROR(KAL_ERROR_KALINIT_INIT_MEMFAILED,                                    KAL_ERROR_KALINIT_INIT_MEMFAILED_)
+X_KAL_ERROR(KAL_ERROR_KALINIT_MEMINIT_FAILED,                                    KAL_ERROR_KALINIT_MEMINIT_FAILED_)
+X_KAL_ERROR(KAL_ERROR_KALINIT_CACHEINIT_FAILED,                                  KAL_ERROR_KALINIT_CACHEINIT_FAILED_)
+X_KAL_ERROR(KAL_ERROR_KALINIT_CRCCHECK_FAILED,                                   check_CRC___CRC_error)
+X_KAL_ERROR(KAL_ERROR_SW_FEATURE_CHECK_FAIL,                                     check_cat_error)
+X_KAL_ERROR(KAL_ERROR_MODE_FEATURE_CHECK_FAIL,                                   check_mode_error)
+X_KAL_ERROR(KAL_ERROR_GMN_FEATURE_CHECK_FAIL,                                    check_gmn_error)
+X_KAL_ERROR(KAL_ERROR_FRE_FEATURE_CHECK_FAIL,                                    check_fre_error) 
+X_KAL_ERROR(KAL_ERROR_EM_FEATURE_CHECK_FAIL,                                     check_em_error) 
+
+/* System Cache Operation */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_CACHE_NOT_IN_PREDEF_REGION_FAILED,         0x0111,  INVALID_CACHE_OPERATION_REGION)
+X_KAL_ERROR(KAL_ERROR_CACHE_OP_INVALID_ADDRESS_FAILED,                           not_cacheline_aligned_address)
+X_KAL_ERROR(KAL_ERROR_CACHE_OP_INVALID_LEN_FAILED,                               not_cacheline_aligned_length)
+X_KAL_ERROR(KAL_ERROR_CACHE_OP_INVALID_L2CACHE_LOCK_FAILED,                      invalidate_l2cache_lock_region)
+
+/* System Initialization Part2 */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_QAM_FEATURE_CHECK_FAIL,                    0x0121,  check_qam_error)
+X_KAL_ERROR(KAL_ERROR_GMN0829_FEATURE_CHECK_FAIL,                                check_gmn0829_error)
+X_KAL_ERROR(KAL_ERROR_FFMM_FEATURE_CHECK_FAIL,                                   check_ffmm_error)
+X_KAL_ERROR(KAL_ERROR_NRCC_FEATURE_CHECK_FAIL,                                   check_nrcc_error)
+X_KAL_ERROR(KAL_ERROR_DS_FEATURE_CHECK_FAIL,                                     check_ds_error)
+X_KAL_ERROR(KAL_ERROR_N_NOPT_FEATURE_CHECK_FAIL,                                 check_n_nopt_error)
+X_KAL_ERROR(KAL_ERROR_L_LNOPT_FEATURE_CHECK_FAIL,                                check_l_lnopt_error)
+X_KAL_ERROR(KAL_ERROR_SPDD_FEATURE_CHECK_FAIL,                                   check_spdd_error)
+X_KAL_ERROR(KAL_ERROR_NRCC2_FEATURE_CHECK_FAIL,                                  check_nrcc2_error)
+
+/* System bus detection */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DETECT_BUS_FAILED,                         0x0131,  BUS_ERROR)
+X_KAL_ERROR(KAL_ERROR_GIC_WD_EXCEPTION,                                          gic_wd_exception)
+X_KAL_ERROR(KAL_ERROR_WDT_EXCEPTION,                                             wdt_exception)
+
+/* Task Management Error */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TASKMNGT_CREATE_MEMFAILED,                 0x0201,  create_task___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_CREATE_STACKFAILED,                               KAL_ERROR_TASKMNGT_CREATE_STACKFAILED_)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_CREATE_FAILED,                                    create_task___fail)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_DELETE_FAILED,                                    delete_task___fail)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_SLEEP_FAILED,                                     KAL_ERROR_TASKMNGT_SLEEP_FAILED_)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_GETID_FAILED,                                     KAL_ERROR_TASKMNGT_GETID_FAILED_)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_STACKOVERFLOW,                                    thread_stack_is_overflow)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_MODULE_ID_OUT_OF_RANGE,                           module_id_is_out_of_range)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_STACKOVERFLOW_BY_MPU,                             stack_system_error__stack_overflow)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_STACKOVERFLOW_BY_WATCH,                           system_error_stack_overflow)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_OPERATION_FAILED,                                 operation_failed)
+X_KAL_ERROR(KAL_ERROR_TASKMNGT_STACK_CHECK_MAGIC_FAILED,                         stack_check_magic_failed)
+
+/* HISR Management Error */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_HISRMNGT_CREATE_MEMFAILED,                 0x0211,  create_HISR___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_CREATE_STACKFAILED,                               KAL_ERROR_HISRMNGT_CREATE_STACKFAILED_)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_CREATE_FAILED,                                    create_HISR___fail)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_CREATE_TOO_MANY_HISR,                             create_HISR___fail_too_many_hisr)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_SLEEP_FAILED,                                     KAL_ERROR_HISRMNGT_SLEEP_FAILED_)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_ACTIVATE_FAILED,                                  activate_HISR___fail)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_GETID_FAILED,                                     KAL_ERROR_HISRMNGT_GETID_FAILED_)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_STACKOVERFLOW,                                    KAL_ERROR_HISRMNGT_STACKOVERFLOW_)
+X_KAL_ERROR(KAL_HISRMNGT_REG_FAILED,                                             KAL_HISRMNGT_REG_FAILED_)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_DELETE_FAILED,                                    delete_HISR___fail)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_INIT_FAILED,                                      init_HISR___fail)
+X_KAL_ERROR(KAL_ERROR_HISRMNGT_INDEX_OUT_OF_RANGE,                               hisr_index_is_out_of_range)
+
+/* Communication Management */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_QCREATE_MEMFAILED,                     0x0301,  create_message_queue___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_ITC_QCREATE_DATAMEMFAILED,                                 KAL_ERROR_ITC_QCREATE_DATAMEMFAILED_)
+X_KAL_ERROR(KAL_ERROR_ITC_QCREATE_FAILED,                                        create_message_queue___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_QCREATE_FAILED_INT,                                    send_messages___internal_queue_is_not_created)
+X_KAL_ERROR(KAL_ERROR_ITC_QENQUE_EXT_FAILED,                                     enqueue_to_extq___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_QENQUE_INT_FAILED,                                     enqueue_to_intq___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_QENQUE_NIL_FAILED,                                     enqueue___pointer_is_NULL)
+X_KAL_ERROR(KAL_ERROR_ITC_QENQUE_SIG_FAILED,                                     enqueue___RTOS_fail)
+X_KAL_ERROR(KAL_ERROR_ITC_QENQUE_SUS_FAILED,                                     enqueue___suspend_type_is_invalid)
+X_KAL_ERROR(KAL_ERROR_ITC_QDEQUE_NIL_FAILED,                                     dequeue___pointer_is_NULL)
+X_KAL_ERROR(KAL_ERROR_ITC_QDEQUE_SIG_FAILED,                                     dequeue___RTOS_fail)
+X_KAL_ERROR(KAL_ERROR_ITC_QDEQUE_SUS_FAILED,                                     dequeue___suspend_type_is_invalid)
+X_KAL_ERROR(KAL_ERROR_ITC_QDELETE_FAILED,                                        delete_message_queue___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_QENQUE_ISR_FAILED,									 enqueue_to_isrq___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_QDEQUE_ISR_FAILED,									 dequeue_to_isrq___fail)
+ /*reserve for NR */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_QENQUE_ILM_NIL_FAILED,                  0x0321, enqueue___ilm_pointer_is_NULL)
+X_KAL_ERROR(KAL_ERROR_ITC_QENQUE_MSG_QUEUE_NIL_FAILED,                           enqueue___msg_queue_pointer_is_NULL)
+X_KAL_ERROR(KAL_ERROR_ITC_QENQUE_LOCAL_PARA_NIL_FAILED,                          enqueue___msg_local_para_pointer_is_NULL)   
+X_KAL_ERROR(KAL_ERROR_ITC_QDEQUE_ILM_NIL_FAILED,                                 dequeue___ilm_pointer_is_NULL)
+X_KAL_ERROR(KAL_ERROR_ITC_QDEQUE_MSG_QUEUE_NIL_FAILED,                           dequeue___not_msg_queue_in_target_HISR)
+X_KAL_ERROR(KAL_ERROR_ITC_QDEQUE_TID_NIL_FAILED,                                 dequeue___invalid_target_id)
+X_KAL_ERROR(KAL_ERROR_ITC_QDEQUE_INVALID_LOCAL_BUFFER,                           dequeue___local_buffer_size_is_too_small)
+            
+
+/* IPC management */
+  /* 0. mutex */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_MCREATE_MEMFAILED,                     0x0401,  create_MUTEX___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_ITC_MDELETE_FAILED,                                        delete_MUTEX___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_MCREATE_FAILED,                                        create_MUTEX___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_MTAKE_FAILED,                                          take_MUTEX___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_MGIVE_FAILED,                                          give_MUTEX___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_MTAKE_INTERNAL_FAILED,                                 take_reentrant_MUTEX___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_MGIVE_INTERNAL_FAILED,                                 give_reentract_MUTEX___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_MCREATE_OUT_OF_RANGE,                                  create_enhance_MUTEX___create_too_many_mutex)
+
+  /* 1. semaphore */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_SCREATE_MEMFAILED,                     0x0411,  create_semaphore___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_ITC_SDELETE_FAILED,                                        delete_semaphore___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_SCREATE_FAILED,                                        create_semaphore___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_STAKE_FAILED,                                          take_semaphore___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_SGIVE_FAILED,                                          give_semaphore___fail)
+
+  /* 2. event group */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_EGCREATE_MEMFAILED,                    0x0421,  create_event_group___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_ITC_EGDELETE_FAILED,                                       delete_event_group___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_EGCREATE_FAILED,                                       create_event_group___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_EGSET_FAILED,                                          set_event_to_an_event_group___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_EGRETRIEVE_FAILED,                                     retrieve_event_from_an_event_group___fail)
+
+  /* 3. ILM */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_ILM_MULTIALLOC,                        0x0431,  allocate_ILM___ILM_is_already_allocated)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_NOT_ALLOC,                                         send_messages___the_sending_ILM_is_not_allocated)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_DOUBLE_FREE,                                       send_messages___the_sended_ILM_is_double_free_or_corruption)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_WRONG_SAP_ID,                                      send_inline_messages___with_wrong_sap_id_in_task_context)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_APPEND_PEERBUF_FAILED,                             peerbuff_headspace_is_not_enough_or_inputlen_is_0_or_peerbuff_ptr_is_null)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_PREPEND_PEERBUF_FAILED,                            peerbuff_tailspace_is_not_enough_or_inputlen_is_0_or_peerbuff_ptr_is_null)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_REMOVE_TAIL_PEERBUF_FAILED,                        remove_tail_len_is_larger_than_pdu_len)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_REMOVE_HEAD_PEERBUF_FAILED,                        remove_head_len_is_larger_than_pdu_len)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_UPDATE_PEERBUF_FAILED,                             update_len_is_larger_than_orginal_peerbuff_len)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_CONSTRUCT_IN_INVALID_SIZE,                         construct_int_peer_buff_construct_int_local_para__invalid_allocated_size)
+X_KAL_ERROR(KAL_ERROR_ITC_ILM_UNEXPECTED_REF_COUNT,                              send_cc_ilm__ref_count_not_1)
+
+  /* 4. Misc */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_MSGID_CODE_EXCEED,                     0x0441,  check_message_ID_range___out_of_range)
+X_KAL_ERROR(KAL_ERROR_PEERBUFF_EXTEND_FAILED,                                    extend_peer_buffer___fail)
+
+  /* 5. enhanced mutex */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_ENH_MUTEX_CREATE_MEMFAILED,            0x0451,  create_ENH_MUTEX___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_ITC_ENH_MUTEX_DELETE_FAILED,                               delete_ENH_MUTEX___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_ENH_MUTEX_CREATE_FAILED,                               create_ENH_MUTEX___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_ENH_MUTEX_TAKE_FAILED,                                 take_ENH_MUTEX___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_ENH_MUTEX_GIVE_FAILED,                                 give_ENH_MUTEX___fail)
+
+  /* 6. spinlock */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_SPINLOCK_CREATE_MEMFAILED,            0x0461,  create_SPINLOCK___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_ITC_SPINLOCK_CREATE_FAILED,                               create_SPINLOCK___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_SPINLOCK_TAKE_FAILED,                                 take_SPINLOCK___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_SPINLOCK_DOUBLE_TAKE,                                 double_take_SPINLOCK___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_SPINLOCK_GIVE_FAILED,                                 give_SPINLOCK___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_SPINLOCK_GIVE_NOT_OWNED_FAILED,                       give_not_owned_SPINLOCK___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_SPINLOCK_TAKE_WRONG_CONTEXT,                          take_SPINLOCK_wrong_context__fail)
+X_KAL_ERROR(KAL_ERROR_ITC_SPINLOCK_GIVE_WRONG_CONTEXT,                          give_SPINLOCK_wrong_context__fail)
+X_KAL_ERROR(KAL_ERROR_ITC_SPINLOCK_TAKE_STARVATION,                             take_SPINLOCK_starvation__fail)
+
+  /* 7. internal protect */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_INTPROTECT_CREATE_MEMFAILED,          0x0471,  create_INTPROTECT___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_ITC_INTPROTECT_SPINLOCK_CREATE_FAILED,                    create_INTPROTECT___fail_to_create_spinlock)
+X_KAL_ERROR(KAL_ERROR_ITC_INTPROTECT_TAKE_FAILED,                               take_INTPROTECT___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_INTPROTECT_DOUBLE_TAKE,                               double_take_INTPROTECT___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_INTPROTECT_GIVE_FAILED,                               give_INTPROTECT___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_INTPROTECT_GIVE_NOT_OWNED_FAILED,                     give_not_owned_INTPROTECT___fail)
+
+  /* 8. hw itc */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_HWITC_TAKE_FAILED_WRONG_WAIT,         0x0481,  kal_hrt_take_itc_lock_or_kal_hrt_take_itc_lock_nonsafe___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_HWITC_TAKE_FAILED,                                    kal_hrt_take_itc_lock_nonsafe___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_HWITC_DOUBLE_TAKE_FAILED,                             kal_hrt_take_itc_lock_double_take_HWITC___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_HWITC_GIVE_FAILED,                                    kal_hrt_give_itc_lock_or_kal_hrt_give_itc_lock_nonsafe___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_HWITC_TAKE_GLOCK_INVALID_ITC_ID,                      kal_take_giant_lock___fail_invalid_itcid)
+X_KAL_ERROR(KAL_ERROR_ITC_HWITC_TAKE_GLOCK_WHEN_INTERRUPT_ENABLED,              kal_take_giant_lock___fail_when_interrupt_enabled)
+X_KAL_ERROR(KAL_ERROR_ITC_HWITC_GIVE_GLOCK_INVALID_ITC_ID,                      kal_give_giant_lock___fail_invalid_itcid)
+X_KAL_ERROR(KAL_ERROR_ITC_HWITC_GIVE_GLOCK_INVALID_VPE,                         kal_give_giant_lock___fail_invalid_vpe)
+X_KAL_ERROR(KAL_ERROR_ITC_HWITC_GIVE_GLOCK_WHEN_INTERRUPT_ENABLED,              kal_give_giant_lock___fail_when_interrupt_enabled)
+
+
+  /* 9. hrt api MT check */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_HRT_WORKQUEUE_INVALID_TC,             0x0491,  kal_restore_workqueue_or_kal_clear_workqueue_or_kal_backup_workqueue___fail)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_CHECK_WORKQUEUE_INVALID_TC,                       kal_hrt_tc_checkpoint___fail_invalid_tc)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_CHECK_WORKQUEUE_INVALID_PARAMETERS,               kal_hrt_tc_checkpoint___fail_invalid_parameters)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_DISPATCH_WORK_INVALID_PARAMETERS,                 kal_hrt_tc_dispatch_work__fail_invalid_parameters)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_DISPATCH_WORK_INVALID_TC,                         kal_hrt_tc_dispatch_work__fail_invalid_tc)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_DISPATCH_WORK_QUEUE_FULL,                         kal_hrt_tc_dispatch_work__fail_queue_full)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_TRIGGER_DUMMY_LISR_INVALID_ITCID,                 kal_hrt_trigger_dummy_lisr__fail)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_TRIGGER_DUMMY_LISR_INVALID_TC,                    kal_hrt_tc_dispatch_work__fail)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_EXECUTE_DUMMY_LISR_INVALID_VPE,                   hrt_dummy_lisr__fail)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_REVOKE_DUMMY_LISR_INVALID_ITCID,                  kal_hrt_revoke_dummy_lisr__fail_invalid_itcid)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_REVOKE_DUMMY_LISR_INVALID_TC,                     kal_hrt_revoke_dummy_lisr__fail_invalid_tc)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_REVOKE_DUMMY_LISR_INVALID_VPE,                    kal_hrt_revoke_dummy_lisr__fail_invalid_vpe)
+X_KAL_ERROR(KAL_ERROR_HRT_MT_NO_WORKQUEUE_FAILED,                               kal_hrt_tc_checkpoint___no_workqueue)
+X_KAL_ERROR(KAL_ERROR_HRT_MT_WORKQUEUE_INVALID,                                 kal_hrt_tc_checkpoint___invalid_workqueue)
+X_KAL_ERROR(KAL_ERROR_HRT_MT_INVALID_TC,                                        kal_hrt_tc_consume_work__fail_invalid_tc)
+X_KAL_ERROR(KAL_ERROR_HRT_MT_CHILD_TC_INVALID,                                  HRT_domain_C_env__fail_invalid_tc)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_DISPATCH_WORK_INVALID_VPE,                        kal_hrt_tc_dispatch_work__fail_invalid_vpe)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_CONSUME_WORK_NO_Q,                                kal_hrt_tc_consume_work__fail_no_common_q)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_CHECK_WORKQUEUE_INVALID_VPE,                      kal_hrt_tc_checkpoint___fail_invalid_vpe)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_CHECK_CHILD_INVALID_VPE,                          kal_hrt_tc_check_status___fail_invalid_vpe)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_CHECK_CHILD_INVALID_TC,                           kal_hrt_tc_check_status___fail_invalid_tc)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_CONSUME_INVALID_VPE,                              kal_hrt_tc_consume_work___fail_invalid_vpe)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_SET_NESTED_SHARED_INVALID_TC,                     kal_hrt_set_nested_queue___fail_invalid_tc)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_SET_NESTED_SHARED_NOT_DISABLED,                   kal_hrt_set_nested_queue___shared_not_disabled)
+X_KAL_ERROR(KAL_ERROR_ITC_HRT_CHECKPOINT_NOT_CALLED,                            kal_hrt_tc_checkpoint___fail_not_called)
+
+/* Timer Management */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_TIMER_CREATE_MEMFAILED,                    0x0601,  create_timer___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_TIMER_CREATE_FAILED,                                       create_timer___fail)
+X_KAL_ERROR(KAL_ERROR_TIMER_DELETE_FAILED,                                       deletel_timer___fail)
+X_KAL_ERROR(KAL_ERROR_TIMER_SET_FAILED,                                          set_timer___fail)
+X_KAL_ERROR(KAL_ERROR_TIMER_CANCEL_FAILED,                                       cancel_timer___fail)
+X_KAL_ERROR(KAL_ERROR_TIMER_GETTIME_FAILED,                                      KAL_ERROR_TIMER_GETTIME_FAILED_)
+X_KAL_ERROR(KAL_ERROR_TIMER_GETTIMEREMAINING_FAILED,                             KAL_ERROR_TIMER_GETTIMEREMAINING_FAILED_)
+X_KAL_ERROR(KAL_ERROR_TIMER_SCHED_FAILED,                                        KAL_ERROR_TIMER_SCHED_FAILED_)
+X_KAL_ERROR(KAL_ERROR_TIMER_CONTROL_FAILED,                                      KAL_ERROR_TIMER_CONTROL_FAILED_)
+X_KAL_ERROR(KAL_ERROR_TIMER_CALLBACK_OVERTIME_FAILED,                            KAL_ERROR_TIMER_CALLBACK_OVERTIME_FAILED_)
+X_KAL_ERROR(KAL_ERROR_TIMER_HISR_OVERTIME_FAILED,                                KAL_ERROR_TIMER_HISR_OVERTIME_FAILED_)
+X_KAL_ERROR(KAL_ERROR_TIMER_ENABLE_DELAYED_FAILED,                               enable_delayed_timer___fail)
+X_KAL_ERROR(KAL_ERROR_TIMER_DISABLE_DELAYED_FAILED,                              disable_delayed_timer___fail)
+
+/* Memory Management */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_MEMMNGT_ALLOC_FAILED,                      0x0701,  allocate_memory___out_of_memory)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_GET_FREE_INDEX,                                    get_free_index___no_more_free_index)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_ALLOC_DEBUGMEM_FAILED,                             KAL_ERROR_MEMMNGT_ALLOC_DEBUGMEM_FAILED_)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_DEALLOC_FAILED_INDEX,                              free_memory___out_of_range)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_DEALLOC_FAILED_MISMATCH,                           free_memory___pointer_is_not_matched)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_DEALLOC_FAILED_DOUBLE_FREE,                        free_memory___double_free)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_DEALLOC_FAILED_INVALID_PTR,                        free_memory___invalid_pointer)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_DEALLOC_DEBUGMEM_FAILED,                           KAL_ERROR_MEMMNGT_DEALLOC_DEBUGMEM_FAILED_)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_MEMCPY_FAILED,                                     KAL_ERROR_MEMMNGT_MEMCPY_FAILED_)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_BUFFER_OVERRUN,                                    buffer_overrun)
+X_KAL_ERROR(KAL_ERROR_MEMMNGT_MEM_OVERRUN,                                       memory_overrun)
+
+X_KAL_ERROR(KAL_ERROR_APPMEM_INVALID_TYPE,                                       allocate_APPMEM___invalid_APPMEM_type)
+X_KAL_ERROR(KAL_ERROR_APPMEM_ALLOC_FAIL,                                         allocate_APPMEM___out_of_memory)
+X_KAL_ERROR(KAL_ERROR_APPMEM_FREE_NULL,                                          free_APPMEM___the_given_pointer_is_NULL)
+
+/* buffer management */
+/* 0. create */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_CREATE_FAILED,                     0x0800, create_buffer_pool___failed)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_CREATE_MEMFAILED,                                 create_buffer_pool___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_DATAPOOL_CREATE_FAILED,                                    create_data_buffer_pool___failed)
+X_KAL_ERROR(KAL_ERROR_DATAPOOL_CREATE_MEMFAILED,                                 create_data_buffer_pool___fail_to_allocate_memory)
+/* 1. delete */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_DELETE_FAILED,                     0x0810, delete_buffer_pool___failed)
+/* 2. allocate */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_GETBUFF_FAILED,                    0x0820, get_buffer___failed)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_GETBUFF_POOLINDX_OUT_OF_RANGE,                    get_buffer___pool_index_is_out_of_range)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_GETBUFF_POOL_NOT_EXIST,                           get_buffer___inexistent_pool)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_GETBUFF_NOT_AVAILABLE,                            get_buffer___run_out_of_avaiable_buffer)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_GETBUFF_SIZE_FAILED,                              get_buffer___request_a_buffer_of_unspported_size)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_GET_DATABUFF_FAILED,                              get_data_buffer___incorrect_RLC_direction)
+/* 3. free */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_RELEASEBUFF_FAILED,                0x0830, release_buffer___failed)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_RELEASE_DATABUFF_FAILED,           0x0832, release_data_buffer___failed)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_DOUBLE_RELEASE_FAILED,             0x0833, double_release_data_buffer___failed)
+/* 4. guard pattern */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_FOOTER_FAILED,                     0x0840, validate_the_buffer_footer___footer_is_corrupted)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_HEADER_FAILED,                                    validate_the_buffer_header___header_is_corrupted)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_FOOTER_FAILED_GET,                                get_buffer___buffer_footer_is_corrupted)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_HEADER_FAILED_GET,                                get_buffer___buffer_header_is_corrupted)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_EXT_FOOTER_FAILED,                                validate_the_buffer_footer___extended_footer_is_corrupted)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_FREE_CORRUPTION,                                  get_or_release_buffer_FREE_is_corrupted)
+/* 5. null pointer */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_DELETE_NILPTR,                     0x0851, delete_buffer_pool___pool_is_nil_ptr)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_GETBUFF_NILPTR,                                   get_buffer___pool_is_nil_ptr)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_RELEASEBUFF_NILPTR,                               release_buffer___pool_is_nil_ptr)
+/* 6. bad block ID */
+/* 7. general */
+/* 8. misc */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_ISVALID_FAILED,                    0x0880, validate_the_buffer___invalid_buffer)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_POOLID_FAILED_GET,                                kal_get_buffer___poolid_is_corrupted)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_POSSIBLE_LEAKAGE,                                 kal_check_ctrl_buff_integrity_by_poolid___possible_leakage)
+/* 9. NU+ related */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_BUFFMNGR_CREATE_INTERNAL_FAILED,            0x0890, OS_create_buffer_pool___failed)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_DELETE_INTERNAL_FAILED,                           OS_delete_buffer_pool___failed)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_GETBUFF_INTERNAL_FAILED,                          OS_get_buffer___failed)
+X_KAL_ERROR(KAL_ERROR_BUFFMNGR_RELEASEBUFF_INTERNAL_FAILED,                      OS_release_buffer___failed)
+X_KAL_ERROR(KAL_ERROR_DATAPOOL_CREATE_INTERNAL_FAILED,                           OS_create_data_buffer___failed)
+X_KAL_ERROR(KAL_ERROR_DATAPOOL_GETBUFF_INTERNAL_FAILED,                          OS_get_data_buffer___failed)
+X_KAL_ERROR(KAL_ERROR_DATAPOOL_RELEASEBUFF_INTERNAL_FAILED,                      OS_release_data_buffer___failed)
+
+/* internal use */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ERRORMNGR_FATALHANDLER_FAILED,             0x0901,  KAL_ERROR_ERRORMNGR_FATALHANDLER_FAILED_)
+X_KAL_ERROR(KAL_ERROR_ERRORMNGR_REGISTERHANDLER_FAILED,                          KAL_ERROR_ERRORMNGR_REGISTERHANDLER_FAILED_)
+
+/* reserved for file system internal use */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_FILESYS_INTERNAL_FAILED,                   0x0a01,  file_system_internal_error)
+X_KAL_ERROR(KAL_ERROR_FILESYS_NORMAL_FAILED,                                     file_system_normal_error)
+X_KAL_ERROR(KAL_ERROR_FILESYS_CCCI_CONF_MISMATCH_FAILED,                         file_system_ccci_configuration_mismatch_error)
+X_KAL_ERROR(KAL_ERROR_FILESYS_CCCI_PARA_ERROR_FAILED,                            file_system_ccci_parameter_error)
+X_KAL_ERROR(KAL_ERROR_FILESYS_CCCI_NOPHY_FAILED,                                 file_system_ccci_no_phyiscal_channel_error)
+X_KAL_ERROR(KAL_ERROR_FILESYS_CCCI_FS_SHUTDOWN_FAILED,                           file_system_ccci_shutdown_error)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_FILESYS_NAND_FDM_INTERNAL_FAILED,          0x0a10,  file_system_nand_fdm_internal_error)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_FILESYS_NOR_FDM_INTERNAL_FAILED,           0x0a20,  file_system_nor_fdm_internal_error)
+
+/* reserved for RTOS/LISR/Standard C/C++ Library internal use */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_SHOULD_NOT_EXECUTE,                        0x0b01,  the_dummy_function_should_not_be_invoked)
+X_KAL_ERROR(KAL_ERROR_DIV_BY_0_FAILED,                                           sw_driven_divide_by_zero)
+X_KAL_ERROR(KAL_ERROR_ABNORMAL_RESET_FAILED,                                     abnormal_reset)
+X_KAL_ERROR(KAL_ERROR_CPU_DRIVEN_DIV_BY_0_FAILED,                                cpu_driven_divide_by_zero)
+X_KAL_ERROR(KAL_ERROR_EXCEPTION_FOR_OTHER_CORE,                                  cpu_exception_for_other_core)
+X_KAL_ERROR(KAL_ERROR_PC_OUT_OF_SPRAM,                                           pc_out_of_spram)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_OS_INTERNAL_FAILED,                   0x0b10,  OS_internal_error)
+X_KAL_ERROR(KAL_ERROR_SYS_CALL_WHEN_LISR,                                        invoke_sys_call_when_in_lisr)
+X_KAL_ERROR(KAL_ERROR_SYS_CALL_WHEN_TP_TAKEN,                                    invoke_sys_call_when_thread_protect_taken)
+X_KAL_ERROR(KAL_ERROR_SYS_CALL_WHEN_INTERRUPT_DISABLED,                          invoke_sys_call_when_interrupt_disabled)
+X_KAL_ERROR(KAL_ERROR_SYS_CALL_WHEN_SPINLOCK_ON_FORCE,                           invoke_sys_call_when_spinlock_on_force)
+X_KAL_ERROR(KAL_ERROR_SYS_CALL_WHEN_LISR_MT,                                     invoke_sys_call_when_in_lisr_with_MT)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DEMP_INVALID_LOCK_USER_FAILED,             0x0b20,  invalid_demp_lock_user)
+X_KAL_ERROR(KAL_ERROR_DEMP_EXHAUST_LOCK_QUOTA_FAILED,                            exhaust_the_given_demp_lock_quota)
+X_KAL_ERROR(KAL_ERROR_DEMP_OVER_LOCK_UNLOCK_FAILED,                              demp_over_lock_or_unlock)
+X_KAL_ERROR(KAL_ERROR_DEMP_HISR_MISUSE_DEMP_FAILED,                              hisr_demp_misuse)
+X_KAL_ERROR(KAL_ERROR_DEMP_LISR_MISUSE_DEMP_FAILED,                              lisr_demp_misuse)
+X_KAL_ERROR(KAL_ERROR_DEMP_LOCKOUT_IBIT_MISUSE_DEMP_FAILED,                      lockout_Ibit_demp_misuse)
+X_KAL_ERROR(KAL_ERROR_DEMP_HOLD_PROTECT_MISUSE_DEMP_FAILED,                      hisr_lisr_demp_abuse)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_NON_REGISTERED_LISR,                       0x0b30,  the_LISR_is_not_registered)
+X_KAL_ERROR(KAL_ERROR_OVER_QBIT_NORMAL_FAILED,                                   over_qbit_normal)
+X_KAL_ERROR(KAL_ERROR_DRV_EINT_INVALID_INDEX,                                    invalid_eint_index)
+X_KAL_ERROR(KAL_ERROR_SPINLOCK_OVERTIME_FAILED,                                  spinlock_overtime)
+X_KAL_ERROR(KAL_ERROR_OVER_QBIT_HRT_FAILED,                                      over_qbit_hrt)
+X_KAL_ERROR(KAL_ERROR_INTERRUPT_DISABLED_AFTER_LISR_FAILED,                      interrupt_disabled_after_leaving_lisr)
+X_KAL_ERROR(KAL_ERROR_INTERRUPT_DISABLED_AFTER_HISR_FAILED,                      interrupt_disabled_after_leaving_hisr)
+X_KAL_ERROR(KAL_ERROR_INTERRUPT_DISABLE_API_INVALID_VPE,                         interrupt_disable_api_invalid_vpe)
+X_KAL_ERROR(KAL_ERROR_INTERRUPT_RESTORE_API_INVALID_VPE,                         interrupt_restore_api_invalid_vpe)
+X_KAL_ERROR(KAL_ERROR_MEMSET_OVERSIZE,                                           kal_memset_api_invalid_size)
+X_KAL_ERROR(KAL_ERROR_MEMSET_OVERSIZE_64KB,                                      kal_memset_api_invalid_size_64KB)
+X_KAL_ERROR(KAL_ERROR_SHOULD_EXECUTE_IN_LISR,                                    function_should_be_invoked_in_lisr)
+X_KAL_ERROR(KAL_ERROR_SHOULD_NOT_EXECUTE_IN_HRT_LISR,                            function_should_not_be_invoked_in_HRT_lisr)
+X_KAL_ERROR(KAL_ERROR_SHOULD_EXECUTE_IN_HRT_DOMAIN,                              function_should_be_invoked_in_HRT_domain)
+X_KAL_ERROR(KAL_ERROR_SHOULD_NOT_SET_AFFINITY_OF_OTHER_CONTEXT,                  function_should_not_set_affinity_of_other_context)
+X_KAL_ERROR(KAL_ERROR_INTERRUPT_DISABLE_NOT_ALLOWED_ON_CHRT,                     interrupt_disabled_on_chrt_domain)
+
+X_KAL_ERROR_ASSIGN(KAL_ERROR_INVALID_DMA_STATUS,                        0x0b50,  configure_unfinished_dma_channel_again)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_GDMA_GET,                                      generic_dma_not_release_yet)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_GDMA_FREE,                                     release_mismatch_generic_dma)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_PDMA_GET,                                      peripheral_dma_not_release_yet)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_PDMA_FREE,                                     release_mismatch_peripheral_dma)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_GDMA_COUNT,                                    violate_generic_dma_transfer_length)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_PDMA_COUNT,                                    violate_peripheral_dma_transfer_length)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_ZERO_COUNT,                                    transfer_length_should_not_be_zero)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_CACHE_ACCESS,                                  dma_cannot_access_cacheable_region)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_HWRX_FP,                                       not_support_fixed_pattern_in_hwrx)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_NO,                                            invalid_dma_no)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_UNALIGNMENT,                                   violate_8bytes_alignment)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_TYPE,                                          mismatch_dma_type)
+X_KAL_ERROR(KAL_ERROR_INVALID_DMA_INTERRUPT_MODE,                                should_not_configure_interrupt_mode_for_shared_interrupt_design)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_HMU_DETECT_LONG_TIME_NO_RESPONSE,          0x0b60,  md_self_detect_by_hmu_long_time_no_response)
+
+/* Event Scheduler */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_EVTSCH_CREATE_MEMFAILED,                   0x0c01,  create_event_scheduler_pool___fail_to_allocate_memory)
+X_KAL_ERROR(KAL_ERROR_EVTSCH_CREATE_FAILED,                                      create_event_schedulers_pool___fail_to_create_partition_memory)
+X_KAL_ERROR(KAL_ERROR_EVTSCH_GETBUFF_FAILED,                                     fail_to_allocate_memory_for_event_scheduler)
+X_KAL_ERROR(KAL_ERROR_EVTSCH_RELEASEBUFF_FAILED,                                 fail_to_free_memory_to_the_event_schedulers_pool)
+X_KAL_ERROR(KAL_ERROR_EVTSCH_CANCEL_FAILED,                                      cancel_event___the_event_is_owned_by_another_event_scheduler_or_null_field)
+X_KAL_ERROR(KAL_ERROR_EVTSCH_CANCEL_FAILED2,                                     cancel_event___the_event_id_or_es_id_is_null)
+X_KAL_ERROR(KAL_ERROR_EVTSCH_ILLEGAL_PARAMETERS,                                 illegal_parameters_to_event_schedule_api)
+X_KAL_ERROR(KAL_ERROR_EVTSCH_EVENT_POOL_CORRUPTED,                               allocate_or_release_event___event_pool_is_corrupted)
+X_KAL_ERROR(KAL_ERROR_EVTSCH_INVALID_EVENT_SCHEDULER,                            set_event___input_invalid_event_scheduler)
+X_KAL_ERROR(KAL_ERROR_EVTSCH_CONCURRENT_OPERATION,                               concurrent___event_scheduler_concurrent_operation_detected)
+
+/* reserved for IPC use */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_IPC_INTERNAL_FAILED,                      0x0d01,   ipc_internal_fatal_error)
+
+/* general error */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_MODULE_ID_OUT_OF_RANGE,                   0x0e01,   general_error_module_id_out_of_range)
+X_KAL_ERROR(KAL_ERROR_INVALID_PARAMETERS,                                        general_error_invalid_parameter)
+
+/* reserved */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DEBUGBUFFMNGR_GETPOOLSTAT_FAILED,          0x1001,  get_pool_statistics___pool_id_is_invalid)
+X_KAL_ERROR(KAL_ERROR_DEBUGBUFFMNGR_RESETPOOLSTAT_FAILED,                        resset_pool_statistics___pool_id_is_invalid)
+X_KAL_ERROR(KAL_ERROR_DEBUGBUFFMNGR_GETBUFFSTAT_FAILED,                          KAL_ERROR_DEBUGBUFFMNGR_GETBUFFSTAT_FAILED_)
+X_KAL_ERROR(KAL_ERROR_DEBUGBUFFMNGR_RESETBUFFSTAT_FAILED,                        reset_buffer_statistics___buffer_is_not_valid)
+X_KAL_ERROR(KAL_ERROR_DEBUGBUFFMNGR_POOLID_VALIDATION_FALIED,                    invalid_pool_id)
+X_KAL_ERROR(KAL_ERROR_DEBUGBUFFMNGR_BUFF_OVERRUN_FAILED,                         check_buffer_overrun___the_given_buffer_is_not_allocated)
+
+/* reserved */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DEBUGERRORMNGR_REGISTERPRINT_FAILED,       0x1101,  KAL_ERROR_DEBUGERRORMNGR_REGISTERPRINT_FAILED_)
+X_KAL_ERROR(KAL_ERROR_DEBUGERRORMNGR_PRINT_FAILED,                               KAL_ERROR_DEBUGERRORMNGR_PRINT_FAILED_)
+
+/* reserved */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DEBUGITC_GETQSTAT_FAILED,                  0x1201,  get_queue_statistics___queue_id_is_invaild)
+X_KAL_ERROR(KAL_ERROR_DEBUGITC_RESETQSTAT_FAILED,                                reset_queue_statistics___queue_id_is_invalid)
+
+/* reserved */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DEBUGTIMER_GETTIMERSTAT_FAILED,            0x1301,  get_timer_statistics___timer_id_is_invalid)
+X_KAL_ERROR(KAL_ERROR_DEBUGTIMER_RESETTIMERSTAT_FAILED,                          reset_timer_statistics___timer_id_is_invalid)
+
+/* customization reserved */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_CUSTOMER_TASK_ID_EXCEED_UPPER_BOUND,       0x1501,  create_too_many_custom_tasks)
+X_KAL_ERROR(KAL_ERROR_CUSTOMER_MOD_ID_EXCEED_UPPER_BOUND,                        add_too_many_custom_modules)
+X_KAL_ERROR(KAL_ERROR_CUSTOMER_MEESAGE_ID_EXCEED_UPPER_BOUND,                    add_too_many_custom_messages)
+X_KAL_ERROR(KAL_ERROR_CUSTOMER_SAP_ID_EXCEED_UPPER_BOUND,                        add_too_many_custom_SAP)
+
+/* UAS FSM */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ESM_ADD_INST_INVALID_SERVICE_ID,           0x1601,  fail_to_add_instance___invalid_service_id)
+X_KAL_ERROR(KAL_ERROR_ESM_ADD_INST_NULL_CONTEXT,                                 fail_to_add_instance___null_context)
+X_KAL_ERROR(KAL_ERROR_ESM_ADD_INST_INVALID_PROCESS_ID,                           fail_to_add_instance___invalid_process_id)
+X_KAL_ERROR(KAL_ERROR_ESM_ADD_INST_ZERO_DATA_SIZE,                               fail_to_add_instance___zero_data_size)
+X_KAL_ERROR(KAL_ERROR_ESM_ADD_INST_INVALID_INST_ID,                              fail_to_add_instance___invalid_instance_id)
+X_KAL_ERROR(KAL_ERROR_ESM_ADD_INST_FAIL,                                         fail_to_add_instance)
+X_KAL_ERROR(KAL_ERROR_ESM_ADD_FIRST_INST_NULL_COMP,                              fail_to_add_first_instance___null_component)
+X_KAL_ERROR(KAL_ERROR_ESM_ADD_FIRST_INST_OVER_MAX_PROCESS,                       fail_to_add_first_instance___over_max_process)
+X_KAL_ERROR(KAL_ERROR_ESM_ADD_FIRST_INST_INSERT_FAIL,                            fail_to_add_first_instance___fail_to_insert_instance_at_start)
+X_KAL_ERROR(KAL_ERROR_ESM_DEL_INSTENTRY_INVALID_PROCESS_ID,                      fail_to_delete_instance_entry___invalid_process_id)
+X_KAL_ERROR(KAL_ERROR_ESM_DEL_INSTENTRY_NULL_COMP_INFO,                          fail_to_delete_instance_entry___null_component_info)
+X_KAL_ERROR(KAL_ERROR_ESM_DEL_INSTENTRY_OVER_MAX_PROCESS,                        fail_to_delete_instance_entry___over_max_process_number)
+X_KAL_ERROR(KAL_ERROR_ESM_DEL_INSTENTRY_OVER_MAX_INST,                           fail_to_delete_instance_entry___over_max_instance)
+X_KAL_ERROR(KAL_ERROR_ESM_DEL_INSTENTRY_INVALID_INST_ID,                         fail_to_delete_instance_entry___invalid_instance_id)
+X_KAL_ERROR(KAL_ERROR_ESM_DEL_INSTENTRY_INACTIVE_INST,                           fail_to_delete_instance_entry___inactive_instance)
+X_KAL_ERROR(KAL_ERROR_ESM_DEL_INSTENTRY_ROOT_INST,                               fail_to_delete_instance_entry___root_instance)
+X_KAL_ERROR(KAL_ERROR_ESM_EXEC_CONTEXT_NULL_CONTEXT,                             fail_to_execute_context___null_context)
+X_KAL_ERROR(KAL_ERROR_ESM_EXEC_CONTEXT_NULL_MSG,                                 fail_to_execute_context___null_message)
+X_KAL_ERROR(KAL_ERROR_ESM_EXEC_CONTEXT_TRAN_NULL_MSG,                            fail_to_execute_context___translate_null_message)
+X_KAL_ERROR(KAL_ERROR_ESM_EXEC_CONTEXT_NON_NULL_LAST_EVENT,                      fail_to_execute_context___last_event_is_not_null)
+X_KAL_ERROR(KAL_ERROR_ESM_EXEC_CONTEXT_TRAN_MSG_FAIL,                            fail_to_execute_context___translate_message_failed)
+X_KAL_ERROR(KAL_ERROR_ESM_GET_INSTPTR_NULL_COMP_INFO,                            fail_to_get_instance_pointer___null_component_info)
+X_KAL_ERROR(KAL_ERROR_ESM_GET_INSTPTR_OVER_PROCESS_ID,                           fail_to_get_instance_pointer___over_process_id)
+X_KAL_ERROR(KAL_ERROR_ESM_GET_INSTPTR_OVER_INST_ID,                              fail_to_get_instance_pointer___over_instance_id)
+X_KAL_ERROR(KAL_ERROR_ESM_GET_INSTPTR_NULL_INST_ARRAY,                           fail_to_get_instance_pointer___null_instance_array)
+X_KAL_ERROR(KAL_ERROR_ESM_GET_INSTPTR_NULL_INST,                                 fail_to_get_instance_pointer___null_instance)
+X_KAL_ERROR(KAL_ERROR_ESM_POPULATE_NULL_SM,                                      fail_to_populate_state_machine___null_state_machine)
+X_KAL_ERROR(KAL_ERROR_ESM_POPULATE_OVER_MAX_SERVICE_NAME,                        fail_to_populate_state_machine___over_max_service_name)
+X_KAL_ERROR(KAL_ERROR_ESM_POPULATE_NULL_STATE_TBL,                               fail_to_populate_state_machine___null_state_table)
+X_KAL_ERROR(KAL_ERROR_ESM_POPULATE_NULL_EVENT_DESC,                              fail_to_populate_state_machine___null_event_description)
+X_KAL_ERROR(KAL_ERROR_ESM_POPULATE_NO_EVENT,                                     fail_to_populate_state_machine___no_event)
+X_KAL_ERROR(KAL_ERROR_ESM_INIT_INST_ARRAY_NON_NULL_INST_ARRAY,                   fail_to_init_instance_array___non_instance_array)
+X_KAL_ERROR(KAL_ERROR_ESM_INIT_INST_ARRAY_ZERO_PROCESS,                          fail_to_init_instance_array___zero_process)
+X_KAL_ERROR(KAL_ERROR_ESM_INIT_INST_ARRAY_INVALID_MAX_INST,                      fail_to_init_instance_array___invalid_max_instance)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_EVENTS_NULL_EVENT,                                 fail_to_add_events___null_event)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_EVENTS_NULL_SERVICE,                               fail_to_add_events___null_service)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_EVENTS_NULL_INST,                                  fail_to_add_events___null_instance)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_EVENTS_NULL_EVENT_LIST,                            fail_to_add_events___null_event_list)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_EVENTS_OVER_MAX_PROCESS,                           fail_to_add_events___over_max_process)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_INSTENTRY_NULL_COMP_INFO,                          fail_to_add_instance_entry___null_component_info)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_INSTENTRY_OVER_MAX_PROCESS,                        fail_to_add_instance_entry___over_max_process_number)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_INSTENTRY_ZERO_DATA_SIZE,                          fail_to_add_instance_entry___zero_data_size)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_INSTENTRY_INVALID_ID,                              fail_to_add_instance_entry___invalid_instance_id)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_INSTENTRY_NULL_LINK,                               fail_to_add_instance_entry___null_link)
+X_KAL_ERROR(KAL_ERROR_FSM_ADD_INSTENTRY_INSERT_FAIL,                             fail_to_add_instance_entry___fail_to_insert_instance_at_start)
+X_KAL_ERROR(KAL_ERROR_FSM_DEL_INST_INVALID_SERVICE_ID,                           fail_to_delete_instance___invalid_service_id)
+X_KAL_ERROR(KAL_ERROR_FSM_DEL_INST_INVALID_PROCESS_ID,                           fail_to_delete_instance___invalid_process_id)
+X_KAL_ERROR(KAL_ERROR_FSM_EXEC_TRAN_NULL_CONTEXT,                                fail_to_execute_transition_function___null_context)
+X_KAL_ERROR(KAL_ERROR_FSM_GET_FREEINST_NULL_COMP_INFO,                           fail_to_get_free_instance___null_component_info)
+X_KAL_ERROR(KAL_ERROR_FSM_GET_FREEINST_NO_FREE_INST,                             fail_to_get_free_instance___no_free_instance)
+X_KAL_ERROR(KAL_ERROR_FSM_GET_FREEINST_INVALID_SERVICE_ID,                       fail_to_get_free_instance___invalid_service_id)
+X_KAL_ERROR(KAL_ERROR_FSM_GET_INSTDATA_NULL_CONTEXT,                             fail_to_get_instance_data___null_context)
+X_KAL_ERROR(KAL_ERROR_FSM_GET_INSTDATA_INVALID_SERVICE_ID,                       fail_to_get_instance_data___invalid_service_id)
+X_KAL_ERROR(KAL_ERROR_FSM_GET_INSTDATA_INVALID_INST_ID,                          fail_to_get_instance_data___invalid_instance_id)
+X_KAL_ERROR(KAL_ERROR_FSM_GET_INSTDATA_INACTIVE_INST,                            fail_to_get_instance_data___inactive_instance)
+X_KAL_ERROR(KAL_ERROR_FSM_HANDLE_SEVENT_NULL_EVENT,                              fail_to_handle_saved_events___null_event)
+X_KAL_ERROR(KAL_ERROR_FSM_HANDLE_SEVENT_INVALID_SERVICE_ID,                      fail_to_handle_saved_events___invalid_service_id)
+X_KAL_ERROR(KAL_ERROR_FSM_HANDLE_SEVENT_INVALID_INST_ID,                         fail_to_handle_saved_events___invalid_instance_id)
+X_KAL_ERROR(KAL_ERROR_FSM_HANDLE_SEVENT_NULL_CONTEXT,                            fail_to_handle_saved_events___null_context)
+X_KAL_ERROR(KAL_ERROR_FSM_HANDLE_SEVENT_TRAN_FAIL,                               fail_to_handle_saved_events___transition_failed)
+X_KAL_ERROR(KAL_ERROR_FSM_PROCESS_EVENTS_NULL_EVENT,                             fail_to_process_events___null_event)
+X_KAL_ERROR(KAL_ERROR_FSM_PROCESS_EVENTS_INVALID_PROCESS_ID,                     fail_to_process_events___invalid_process_id)
+X_KAL_ERROR(KAL_ERROR_FSM_PROCESS_EVENTS_INVALID_INST_ID,                        fail_to_process_events___invalid_instance_id)
+X_KAL_ERROR(KAL_ERROR_FSM_PROCESS_EVENTS_OVER_MAX_PROCESS,                       fail_to_process_events___over_max_process)
+X_KAL_ERROR(KAL_ERROR_FSM_PROCESS_EVENTS_TRAN_FAIL,                              fail_to_process_events___transition_failed)
+X_KAL_ERROR(KAL_ERROR_LSM_DEL_EVENTLIST_FAILED,                                  delete_a_non_empty_event_list)
+X_KAL_ERROR(KAL_ERROR_LSM_UNDEL_LISTOBJ_FAILED,                                  dirty_count_not_consistent)
+X_KAL_ERROR(KAL_ERROR_ESM_GET_INST_STATE_NULL_CONTEXT,                           fail_to_get_instance_state___null_context)
+X_KAL_ERROR(KAL_ERROR_ESM_ADD_INST_ALLOC_SYSTEMMEM_FAILED,                       fail_to_add_instance___out_of_system_memory)
+X_KAL_ERROR(KAL_ERROR_ESM_INIT_INST_ARRAY_ALLOC_SYSTEMMEM_FAILED,                fail_to_init_instance_array___out_of_system_memory)
+X_KAL_ERROR(KAL_ERROR_ESM_INIT_CONTEXT_ALLOC_SYSTEMMEM_FAILED,                   fail_to_init_context___out_of_system_memory)
+
+/* ADM */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_CREATE_FAILED,                        0x1700,   create___adm_create_failed)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_DELETE_FAILED,                        0x1710,   delete___adm_delete_failed)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_ALLOC_FAILED,                         0x1720,   alloc___adm_alloc_failed)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_ALLOC_DYNCACHE_FAILED,                0x1726,   alloc___adm_switch_cache_failed)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_REALLOC_FAILED,                       0x172c,   realloc___adm_realloc_failed)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_FREE_FAILED,                          0x1730,   free___adm_free_failed)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_FREE_DOUBLEFREE,                      0x1732,   free___adm_double_free)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_FOOTER_FAILED,                        0x1740,   free___adm_footer_corrupted)
+X_KAL_ERROR(KAL_ERROR_ADM_HEADER_FAILED,                                         free___adm_header_corrupted)
+X_KAL_ERROR(KAL_ERROR_ADM_FREEPATTERN_CORRUPTION,                                alloc_or_free___adm_freepattern_corrupted)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_NILPTR,                               0x1750,   fail___adm_get_a_null_pointer)
+X_KAL_ERROR(KAL_ERROR_ADM_DELETE_NILPTR,                                         delete___adm_delete_null_pool)
+X_KAL_ERROR(KAL_ERROR_ADM_ALLOC_NILPTR,                                          alloc___adm_alloc_null_pool)
+X_KAL_ERROR(KAL_ERROR_ADM_FREE_NILPTR,                                           free___adm_free_null_pool)
+X_KAL_ERROR(KAL_ERROR_ADM_REALLOC_NILPTR,                                        realloc___adm_realloc_null_pool)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_BADID,                                0x1760,   fail___admid_in_cb_corrupted)
+X_KAL_ERROR(KAL_ERROR_ADM_DELETE_BADID,                                          delete___admid_in_cb_corrupted)
+X_KAL_ERROR(KAL_ERROR_ADM_ALLOC_BADID,                                           alloc___admid_in_cb_corrupted)
+X_KAL_ERROR(KAL_ERROR_ADM_FREE_BADID,                                            free___admid_in_cb_corrupted)
+X_KAL_ERROR(KAL_ERROR_ADM_REALLOC_BADID,                                         realloc___admid_in_cb_corrupted)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_CONCURRENT_OPERATION,                 0x1770,   concurrent___adm_concurrent_operation_detected)
+X_KAL_ERROR(KAL_ERROR_ADM_BADPTR,                                                fail___adm_get_a_bad_pointer)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_GETEXTHEADER_FAILED,                  0x1781,   get_extheader___no_extheader_on_this_adm)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ADM_CHECK_FAILED,                         0x1790,   check___adm_mb_check_failed)
+
+/* AFM */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_AFM_CREATE_FAILED,                        0x1800,   create___afm_create_failed)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_AFM_ALLOC_FAILED,                         0x1820,   alloc___afm_alloc_failed)
+X_KAL_ERROR(KAL_ERROR_AFM_FREE_DOUBLEFREE,                                       free___afm_double_free)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_AFM_FOOTER_FAILED,                        0x1840,   free___afm_footer_corrupted)
+X_KAL_ERROR(KAL_ERROR_AFM_HEADER_FAILED,                                         free___afm_header_corrupted)
+X_KAL_ERROR(KAL_ERROR_AFM_FOOTER_FAILED_GET,                                     alloc___afm_footer_corrupted)
+X_KAL_ERROR(KAL_ERROR_AFM_HEADER_FAILED_GET,                                     alloc___afm_header_corrupted)
+X_KAL_ERROR(KAL_ERROR_AFM_FREEPATTERN_CORRUPTION,                                alloc___afm_freepattern_corrupted)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_AFM_NILPTR,                               0x1850,   fail___afm_get_a_null_pointer)
+X_KAL_ERROR(KAL_ERROR_AFM_DELETE_NILPTR,                                         fail___afm_delete_null_pool)
+X_KAL_ERROR(KAL_ERROR_AFM_ALLOC_NILPTR,                                          fail___afm_alloc_null_pool)
+X_KAL_ERROR(KAL_ERROR_AFM_FREE_NILPTR,                                           fail___afm_free_null_pool)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_AFM_BADID,                                0x1860,   fail___afmid_in_cb_corrupted)
+X_KAL_ERROR(KAL_ERROR_AFM_DELETE_BADID,                                          delete___afmid_in_cb_corrupted)
+X_KAL_ERROR(KAL_ERROR_AFM_ALLOC_BADID,                                           alloc___afmid_in_cb_corrupted)
+X_KAL_ERROR(KAL_ERROR_AFM_FREE_BADID,                                            free___afmid_in_cb_corrupted)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_AFM_CONCURRENT_OPERATION,                 0x1870,   concurrent___afm_concurrent_operation_detected)
+
+/* RCU */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_CC_INVALID_RCU_UNALIGNMENT,               0x2100,   rcu_create___violate_32bytes_alignment)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_RCU_ALLOCATED_SIZE,                             rcu_create___wrong_allocated_size)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_RCU_ID,                                         rcu_general___wrong_rcu_pointer)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_RCU_READ_COUNT,                                 rcu_general___wrong_read_conut)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_RCU_BUFF,                                       rcu_get_buff___no_avail_buff)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_RCU_DATA,                                       rcu_get_data___no_data_to_read)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_RCU_COMMIT,                                     rcu_commit_data___wrong_data)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_RCU_CORRUPT_READ_ONLY_DATA,                     rcu_free_data___corrupt_read_only_data)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_RCU_CREATE_BUFFER_COUNT,                        rcu_create___num_of_buffer_must_more_than_one)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_RCU_DATA_RCU_ID,                                rcu_general___wrong_buffer_pointer)
+
+
+/* DSM */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_INVALID_DSM_LOAD_ID_OUT_OF_RANGE,            0x2200,    dsm_load___load_section_id_out_of_range)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_LOAD_STILL_PROCESSING_OVERLAP_SECTION,             dsm_load___load_section_still_processing_overlap_section)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_LOAD_BEFORE_UNLOAD_OVERLAP_SECTION,                dsm_load___load_section_before_unload_overlap_section)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_LOAD_CORRUPTION,                                   dsm_load___load_section_corruption)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_NNLOAD_ID_OUT_OF_RANGE,                            dsm_unload___unload_section_id_out_of_range)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_UNLOAD_STILL_PROCESSING_OVERLAP_SECTION,           dsm_unload___unload_section_still_processing_overlap_section)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_UNLOAD_TARGET_SECTION_IS_NOT_LOAD,                 dsm_unload___unload_section_target_section_is_not_loaded)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_UNLOAD_CORRUPTION,                                 dsm_unload___unload_section_corruption)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_REGISTER_INVALID_REGISTER_CALLBACK,                dsm_register_cb___invalid_register_function)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_LOAD_INVALID_CPU_AFFINITY,                         dsm_load___invalid_cpu_affinity)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_UNLOAD_INVALID_CPU_AFFINITY,                       dsm_unload___invalid_cpu_affinity)
+X_KAL_ERROR(KAL_ERROR_INVALID_DSM_ACCESS_WRONG_ADDRESS,                              kal_fatal_error_handler_int___dsm_access_wrong_address)
+
+/* Cross Core ILM */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_CC_GLOBAL_DEST_MOD_ID_TO_LOCAL_NOT_FOUND,    0x2300,    ilm___cross_core_global_dest_mod_id_to_local_not_found)
+X_KAL_ERROR(KAL_ERROR_CC_SRC_MOD_ID_TO_GLOBAL_NOT_FOUND,                            ilm___cross_core_src_mod_id_to_global_not_found)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_SRC_MOD_ID_TO_GLOBAL,                              ilm___cross_core_invalid_src_mod_id_to_global)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_GLOBAL_DEST_MOD_ID_TO_LOCAL,                       ilm___cross_core_invalid_global_dest_mod_id_to_local)
+X_KAL_ERROR(KAL_ERROR_CC_ILM_QENQUE_NIL_FAILED,                                     enqueue_cc___pointer_is_NULL)
+
+X_KAL_ERROR_ASSIGN(KAL_ERROR_ITC_ILM_INVALID_DIRECTION,                   0x2310,   ilm___inout_wrong_direction)
+
+
+/* Cross Core Event Group */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_CC_INVALID_ITC_EGSET_FAILED,                 0x2400,   set_cc_event_to_an_event_group___fail)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_ITC_EGRETRIEVE_FAILED,                             retrieve_cc_event_from_an_event_group___fail)
+X_KAL_ERROR(KAL_ERROR_CC_INVALID_ITC_EGCREATE_MEMFAILED,                            create_cc_event_group___fail_to_allocate_memory)
+
+/*L2 LOCK*/
+X_KAL_ERROR_ASSIGN(KAL_ERROR_INVALID_DL2CM_LOCK_EXCEED_SIZE,              0x2500,   dl2cm_lock___exceed_size)
+X_KAL_ERROR(KAL_ERROR_INVALID_DL2CM_LOCK_EXCEED_TIME,                               dl2cm_lock___exceed_time)
+X_KAL_ERROR(KAL_ERROR_INVALID_DL2CM_LOCK_SECTION_UNLOCKING,                         dl2cm_lock___section_status_unlocking)
+X_KAL_ERROR(KAL_ERROR_INVALID_DL2CM_UNLOCK_SECTION_LOCKING,                         dl2cm_unlock___section_status_locking)
+X_KAL_ERROR(KAL_ERROR_INVALID_DL2CM_SECTION_FLAG_CONFIG_FAIL, 						dl2cm_config___section_flag_config)
+
+ 
+/* Multi-core exception */
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DSP_INTERRUPT_TRIGGER_INVALID,                0x2F00,   DSP__interrupt_triggered_more_than_once)
+X_KAL_ERROR(KAL_ERROR_DSP_CUIF_INTERRUPT_TRIGGER_INVALID,                            DSP__CUIF_interrupt_triggered_more_than_once)
+
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DSP_DDL_CHG_MODE_NOT_ACTIVATE,                0x2F10,   DSP_DDL__not_activate_before_changing_binmode)
+X_KAL_ERROR(KAL_ERROR_DSP_DDL_CHG_MODE_NOT_IN_IDLE,                                  DSP_DDL__dsp_not_in_idle_before_changing_binmode)
+X_KAL_ERROR(KAL_ERROR_DSP_DDL_DOUBLE_CHG_MODE,                                       DSP_DDL__changing_binmode_twice)
+X_KAL_ERROR(KAL_ERROR_DSP_DDL_MODE_INVALID,                                          DSP_DDL__binmode_incorrect)
+
+X_KAL_ERROR_ASSIGN(KAL_ERROR_DSP_SLP_ACTIVATE_FAILED,                      0x2F18,   DSP_SLP__not_deactivate_before_activating)
+X_KAL_ERROR(KAL_ERROR_DSP_SLP_DEACTIVATE_FAILED,                                     DSP_SLP__not_activate_before_deactivating)
+X_KAL_ERROR(KAL_ERROR_DSP_SLP_CHECK_ACTIVATE_DONE_FAILED,                            DSP_SLP__not_all_activation_are_done_before_deactivating)
+
+
+X_KAL_ERROR_ASSIGN(KAL_ERROR_C2K_EXCP,                                     0x3000,   C2K___excp)
+X_KAL_ERROR(KAL_ERROR_C2K_LONG_TIME_NO_RESPONSE,                                     C2K___long_time_no_response)
+X_KAL_ERROR(KAL_ERROR_C2K_IS_NOT_SUPPORT,                                            C2K___MD3_is_not_existent_user_cant_use_ccirq_service)
+X_KAL_ERROR(KAL_ERROR_C2K_IS_NOT_SUPPORT_ILM,                                        C2K___MD3_is_not_existent_user_cant_use_ilm_to_c2k)
+X_KAL_ERROR(KAL_ERROR_C2K_CC_ILM_QENQUE_EXT_FAILED,                                  C2K___do_send_msg_extq_to_head___fail)
+X_KAL_ERROR(KAL_ERROR_C2K_CC_ILM_QENQUE_NIL_FAILED,                                  C2K___enqueue___pointer_is_NULL)
+X_KAL_ERROR(KAL_ERROR_C2K_CC_ILM_QENQUE_WRONG_DEST,                                  C2K___kal_cc_irq_msg_send___dest_mod_id_is_WRONG)
+X_KAL_ERROR(KAL_ERROR_C2K_CC_ILM_QENQUE_WRONG_SRC,                                   C2K___msg_send_cc_irq___src_mod_id_is_WRONG)
+X_KAL_ERROR_ASSIGN(KAL_ERROR_CC_INTERCORE_EXCP,                            0x3100,   INTERCORE___excp)
+X_KAL_ERROR(KAL_ERROR_CC_SONIC_EXCP,                                                 SONIC_DSP___excp)
+X_KAL_ERROR(KAL_ERROR_CC_MD32_EXCP,                                                  MD32_DSP___excp)
+X_KAL_ERROR(KAL_ERROR_CC_VC_EXCP,                                                    VC___excp)
+X_KAL_ERROR(KAL_ERROR_CC_RMPU_EXCP,                                                  RMPU_VIOLATION___excp)
+X_KAL_ERROR(KAL_ERROR_CC_UNKNOWN_EXCP,                                               UnknowCore___excp)
+X_KAL_ERROR(KAL_ERROR_INTERCORE_LONG_TIME_NO_RESPONSE,                               INTERCORE___long_time_no_response)
+X_KAL_ERROR(KAL_ERROR_L1CORE_HW_WDT_TIMEOUT_EXCP,                                    L1CORE_HWWDT_unexpected_timeout___excp)
+X_KAL_ERROR(KAL_ERROR_CC_USIP_EXCP,                                                  USIP_DSP___excp)
+X_KAL_ERROR(KAL_ERROR_CC_SCQ_EXCP,                                                   SCQ_DSP___excp)
+
+
+X_KAL_ERROR_ASSIGN(KAL_ERROR_CC_SAP_EXCP,                                  0x3200,   sAP___excp)
+X_KAL_ERROR(KAL_ERROR_CC_SAP_WDT_TIMEOUT_EXCP,                                       sAP_WDT_unexpected_timeout___excp)
+
+
+
+/* leave me at the end of file to be a boundary checked by SST_InvokEngine */
+X_KAL_ERROR(KAL_ERROR_MAX_GROUP,                                                 bound___SST_InvokEngine)
+
+#undef X_KAL_ERROR
+#undef X_KAL_ERROR_ASSIGN
+
diff --git a/mcu/service/kal/common/include/kal_internal_api.h b/mcu/service/kal/common/include/kal_internal_api.h
new file mode 100644
index 0000000..fcfb5a3
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_internal_api.h
@@ -0,0 +1,1644 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_internal_api.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This header file is used to define internal api, do not export!
+ *
+ * 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!
+ * 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 __KAL_INTERNAL_API__
+#define __KAL_INTERNAL_API__
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "task_config.h"
+#include "hisr_config.h"
+#include "mof_config.h"
+
+#include "kal_internal_def.h"
+#include "kal_itc.h"
+
+#include "kal_debug.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define KAL_INTERNAL_NILTASK_ID     (kal_internal_taskid)NULL
+#define KAL_INTERNAL_NILTIMER_ID    (kal_internal_timerid)NULL
+#define KAL_INTERNAL_NILPOOL_ID     (kal_internal_poolid)NULL
+#define KAL_INTERNAL_NILMUTEX_ID    (kal_internal_mutexid)NULL
+#define KAL_INTERNAL_NILSEM_ID      (kal_internal_semid)NULL
+#define KAL_INTERNAL_NILQ_ID        (kal_internal_msgqid)NULL
+
+typedef enum {
+#define X_KAL_ERROR_CODE
+#include "kal_error_code.h"
+    KAL_ERROR_CODE_END
+#undef X_KAL_ERROR_CODE
+} kal_error_type;
+
+typedef enum {
+#define X_KAL_ERROR_STRING
+#include "kal_error_code.h"
+    KAL_ERROR_STRING_END
+#undef X_KAL_ERROR_STRING
+} kal_error_str;
+
+
+extern kal_uint32 mod_task_g[];
+
+
+#ifdef __KAL_VM__
+
+/* opaque type for First Level Memory Manager identity */
+typedef struct {
+    kal_uint8 unused;
+} * KAL_FLMM_ID;
+
+/* opaque type for Second Level Memory Manager identity */
+typedef struct {
+    kal_uint8 unused;
+} * KAL_SLMM_ID;
+
+#define KAL_VM_PAGESIZE (4096)              /* KAL VM page size */
+#define KAL_VM_PAGEMASK (KAL_VM_PAGESIZE-1) /* KAL VM page mask */
+/* align to next KAL VM page size */
+#define KAL_VM_PAGE_UPALIGN(x)   ((((kal_uint32)(x)) + KAL_VM_PAGESIZE - 1) & \
+                                  ~(KAL_VM_PAGESIZE - 1))
+/* align to KAL VM page size */
+#define KAL_VM_PAGE_DOWNALIGN(x) (((kal_uint32)(x)) & ~(KAL_VM_PAGESIZE - 1))
+/* is KAL VM page size aligned */
+#define KAL_VM_PAGE_ALIGNED(x)   (!(((kal_uint32)(x)) & (KAL_VM_PAGESIZE - 1)))
+/* how many bytes needed to align to next KAL VM page size */
+#define KAL_VM_PAGE_MARGIN(x) (KAL_VM_PAGE_UPALIGN(x) - (x))
+
+/* option for kal_flmm_alloc: user part */
+/* they must sync with KAL_VM_* in kal_vmint.h */
+#define KAL_VM_NONCONTINUOUS 0x0001 /* allocate physical non-continuous memory */
+#define KAL_VM_CONTINUOUS    0x0010 /* allocate physical continuous memory */
+#define KAL_VM_CACHEABLE     0x0002 /* allocate cacheable memory */
+#define KAL_VM_NONCACHEABLE  0x0020 /* allocate non-cacheable memory */
+#define KAL_VM_MOVABLE       0x0004 /* allocate physical movable memory */
+#define KAL_VM_LOCKED        0x0040 /* allocate physical locked memory */
+#define KAL_VM_ONDEMAND      0x0008 /* allocate physical memory on-demand */
+/* allocate physical memory on-demand, but reserve them first */
+#define KAL_VM_ONDEMAND_RESERVENOW 0x0080 
+#define KAL_VM_POPULATENOW   0x0100 /* allocate physical memory now */
+#define KAL_VM_DEFRAGMENT    0x0200 /* do defragment first when allocate */
+#define KAL_VM_TOP           0x0400 /* topmost, exclusive with KAL_VM_DEFRAGMENT */
+
+/* option for kal_create_slmm */
+/* record every allocation's file name & line number */
+#define KAL_SLMM_RECORD_LOCATION 0x10000
+/* KAL VM error code */
+#define KAL_VM_E_INVALID_PARAMETER  (-1) /* invalid parameter */
+#define KAL_VM_E_VIRTUAL_EXHAUSTED  (-2) /* not enough virtual space */
+#define KAL_VM_E_VIRTUAL_FRAGMENT   (-3) /* virtual space fragmentation */
+#define KAL_VM_E_PHYSICAL_EXHAUSTED (-4) /* not enough physical space */
+#define KAL_VM_E_PHYSICAL_FRAGMENT  (-5) /* physical space fragmentation */
+
+/* KAL VM memory information */
+typedef struct {
+    kal_uint32  attr;     /* memory attribute */
+    kal_uint32  size;     /* memory size */
+    kal_uint32  usersize; /* memory size without footer*/
+    void *      physical; /* physical address, for available for locked memory */
+    KAL_SLMM_ID slmm;     /* SLMM id if this memory is allocated for SLMM */
+    kal_char *  filename; /* file which allocate this memory */
+    kal_uint32  line;     /* line where allocate this memory */
+} kal_vm_meminfo_t;
+
+#endif /* __KAL_VM__ */
+
+#define KAL_CONTEXT_IRQID_MASK 0xFFF
+#define KAL_CONTEXT_IRQID_SHIFT 20
+#define KAL_CONTEXT_IRQCOUNT_MASK 0xFF
+#define KAL_CONTEXT_IRQCOUNT_SHIFT 8
+#define KAL_CONTEXT_TCID_MASK 0xF
+#define KAL_CONTEXT_TCID_SHIFT 4
+#define KAL_CONTEXT_VPEID_MASK 0xF
+#define KAL_CONTEXT_VPEID_SHIFT 16
+#define KAL_CONTEXT_IRQ_SHIFT 1
+#define KAL_CONTEXT_IRQ (1 << KAL_CONTEXT_IRQ_SHIFT)
+/*******************************************************************************
+ * Category 1 : StdLib-like Function (MISC.)
+ *******************************************************************************/
+extern char *basename(const char *file);
+
+/*******************************************************************************
+ * Category 3 : LISR, HISR and TASK functions
+ *******************************************************************************/
+void *kal_create_thread_stack(kal_uint32 stack_size, kal_bool in_intsram,
+                              kal_uint32 *real_size);
+kal_taskid kal_create_task(kal_char *task_name_ptr, kal_uint16 priority,
+                           void *stack_addr, kal_uint32 stack_size,
+                           kal_task_func_ptr entry_func_ptr, void *entry_param_ptr,
+                           kal_uint8 options);
+void kal_delete_task(kal_taskid task_id);
+#if !defined(__MTK_TARGET__)
+kal_hisrid kal_create_hisr(kal_char *hisr_name, kal_uint8 priority,
+                           kal_uint32 stack_size, kal_hisr_func_ptr entry_func,
+                           kal_uint8 options);
+#endif
+extern kal_bool stack_is_task_existed(module_type module_id);
+
+extern kal_uint32 kal_get_task_priority(kal_taskid taskid);
+extern kal_uint32 kal_get_task_base_priority(kal_taskid taskid);
+extern kal_uint32 kal_get_task_priority_by_index(kal_uint32 index);
+extern kal_uint32 kal_get_task_default_priority_by_index(kal_uint32 index);
+extern void kal_switch_task_to_highest_priority(void);
+extern kal_uint32 kal_get_idle_task_priority(kal_uint32 vpe_id);
+
+extern module_type stack_get_active_module_id(void);
+extern void stack_set_active_module_id(kal_uint32 task_index, module_type module_id);
+extern void *kal_get_task_stack_ptr(kal_taskid taskid);
+
+extern kal_uint32 remap_task_index(kal_uint32 task_indx);
+extern kal_uint32 remap_module_id(kal_uint32 module_id);
+extern kal_uint32 remap_task_index_by_module_id(kal_uint32 module_id);
+extern kal_uint32 kal_get_task_index_From_mod_task_g(module_type module_id,
+                                                     kal_bool    beNeedRemap);
+extern kal_taskid kal_get_task_by_index(task_indx_type index);
+extern kal_uint32 kal_get_current_task_index(void);
+extern kal_uint32 kal_get_task_index(kal_taskid taskid);
+
+extern kal_uint32 kal_get_hisr_id_by_module_id(module_type mod_id);
+extern kal_uint32 kal_get_lisr_id_by_module_id(module_type mod_id);
+extern module_type kal_get_lisr_module_id_by_lisr_id(kal_uint32 irq_id);
+
+#define kal_inline_is_mod_id_on_current_core(module_id)                           \
+    (((module_id > MOD_ID_SRV_CODE_BEGIN && module_id < MOD_ID_HISR_CODE_TAIL) || \
+      module_id == MOD_TIMER) ? KAL_TRUE : KAL_FALSE)
+
+
+
+/*************************************************************************
+* FUNCTION
+*  kal_get_internal_context
+*
+* DESCRIPTION
+*   This function return current context. Pointer is taskid, hisrid or
+*   combination of irqid, irq count, tcid, vpeid and bit 1 to distinguish it from pointer.
+*
+* PARAMETERS
+*  none
+*
+* RETURNS
+*	 void pointer to current context or NULL.
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+void *kal_get_internal_context(void);
+
+#if defined(__MTK_TARGET__)
+/*************************************************************************
+* FUNCTION
+*  kal_set_task_affinity
+*
+* DESCRIPTION
+*  Set the affinity of a task  
+*
+* PARAMETERS
+*  taskID:  [IN] pointer to the task id of the task which you want to set affinity
+*  affinity:  [IN] the affinity you want to set
+*
+* RETURNS
+*
+*************************************************************************/
+kal_bool kal_set_task_affinity(kal_taskid taskID, kal_affinity_group affinity);
+
+/*************************************************************************
+* FUNCTION
+*  kal_register_task_to_affinity_group
+*
+* DESCRIPTION
+*  Registers the given task to the given affinity group.
+*
+* PARAMETERS
+*  taskID:  [IN] pointer to the task id of the task which you want to register
+*  groupid:  [IN] affinity group ID
+*
+* RETURNS
+*
+*************************************************************************/
+void kal_register_task_to_affinity_group(kal_taskid        taskID,
+                                         kal_task_group_id groupid);
+
+/*************************************************************************
+* FUNCTION
+*  kal_set_hisr_affinity
+*
+* DESCRIPTION
+*  Set the affinity of a HISR  
+*
+* PARAMETERS
+*  taskID:  [IN] pointer to the HISR id of the task which you want to set affinity
+*  affinity:  [IN] the affinity you want to set
+*
+* RETURNS
+*
+*************************************************************************/
+kal_bool kal_set_hisr_affinity(kal_hisrid HISRID, kal_affinity_group affinity);
+
+/*************************************************************************
+* FUNCTION
+*  kal_add_core_to_scheduling
+*
+* DESCRIPTION
+*  Adds core back to scheduling  
+*
+* PARAMETERS
+*  whole_core:  [IN]  TRUE: whole core FALSE: current VPE only 
+*
+* RETURNS
+* None
+*
+*************************************************************************/
+void kal_add_core_to_scheduling(kal_bool whole_core);
+
+/*************************************************************************
+* FUNCTION
+*  kal_remove_core_from_scheduling
+*
+* DESCRIPTION
+*  Removes core from scheduling  
+*
+* PARAMETERS
+*  None 
+*
+* RETURNS
+* Status: Success: 1 / Fail: 0
+*************************************************************************/
+kal_uint32 kal_remove_core_from_scheduling(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_set_slave_vpe_idle_flag
+*
+* DESCRIPTION
+*  Set the idle flag when enter idle  
+*
+* PARAMETERS
+*  None 
+*
+* RETURNS
+* None
+*************************************************************************/
+void kal_set_slave_vpe_idle_flag(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_remove_slave_vpe_idle_flag
+*
+* DESCRIPTION
+*  Remove the idle flag when dormant abort  
+*
+* PARAMETERS
+*  None 
+*
+* RETURNS
+* None
+*************************************************************************/
+void kal_remove_slave_vpe_idle_flag(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_os_ipi_init
+*
+* DESCRIPTION
+*   Set up the IPI feature for use in OS  
+*
+* PARAMETERS
+*  None 
+*
+* RETURNS
+* None
+*************************************************************************/
+void kal_os_ipi_init(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_start_nu_init
+*
+* DESCRIPTION
+*   Start NU specific OS initialization 
+*
+* PARAMETERS
+*  None 
+*
+* RETURNS
+* None
+*************************************************************************/
+void kal_start_nu_init(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_os_initialization_phase0
+*
+* DESCRIPTION
+*   Phase 0 of OS initialization 
+*
+* PARAMETERS
+*  None 
+*
+* RETURNS
+* None
+*************************************************************************/
+void kal_os_initialization_phase0(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_os_enter_scheduling
+*
+* DESCRIPTION
+*   Enter OS scheduling 
+*
+* PARAMETERS
+*  None 
+*
+* RETURNS
+* None
+*************************************************************************/
+void kal_os_enter_scheduling(void);
+
+#endif /* __SMP_ARCH__ */
+
+/*******************************************************************************
+ * Category 4 : Message Passing and Queue
+ *******************************************************************************/
+#if !defined(KAL_ON_MERTOS)
+kal_msgqid kal_create_msg_q(kal_char *queue_name_ptr, kal_uint16 msg_size,
+                            kal_uint16 max_msgs);
+kal_status kal_deque_msg(kal_msgqid ext_msg_q_id, void *buffer_ptr,
+                         kal_uint16 *msg_size, kal_wait_mode wait_mode);
+#else
+kal_msgqid kal_get_msg_q(kal_taskid task_id);
+kal_status kal_deque_msg(kal_msgqid ext_msg_q_id, void* buffer_ptr, kal_uint16 *msg_size,
+                         kal_wait_mode wait_mode);
+#endif
+#if 0
+/* under construction !*/
+/* under construction !*/
+#else
+#define kal_enque_msg(ext_msg_q_id, buffer_ptr, msg_size, wait_mode,   \
+                      message_to_head)                                 \
+    (message_to_head ? kal_msg_enque_to_head(ext_msg_q_id, buffer_ptr) \
+                     : kal_msg_enque(ext_msg_q_id, buffer_ptr));
+#endif
+kal_status kal_msg_enque_to_head(kal_msgqid ext_msg_q_id, void *buffer_ptr);
+kal_status kal_msg_enque(kal_msgqid ext_msg_q_id, void *buffer_ptr);
+
+
+/*******************************************************************************
+ * Category 5 : Synchronous Mechanism
+ *******************************************************************************/
+kal_uint32 kal_take_thread_protect(void);
+void kal_give_thread_protect(kal_uint32 v);
+
+#define KAL_PROTECT_DECLARE(n) kal_protectid(n)
+#define KAL_PROTECT_DECLARE_EXTERN(n) extern kal_protectid(n)
+void kal_create_internal_protect(kal_protectid *protect_id, kal_char *protect_name);
+void kal_take_internal_protect(kal_protectid protect_id);
+void kal_give_internal_protect(kal_protectid protect_id);
+
+extern void *     kal_get_internal_context();
+extern kal_uint32 kal_spinlock_DI_caller_address[];
+extern kal_uint32 kal_spinlock_EI_caller_address[];
+extern void *     kal_spinlock_caller_context[];
+
+#define KAL_ENABLE_IRQ_CALLER_CHECK(addr, vpeid)                                 \
+    do {                                                                         \
+        if (kal_spinlock_EI_caller_address[vpeid] &&                             \
+            (kal_spinlock_caller_context[vpeid] == kal_get_internal_context())) { \
+            addr = kal_spinlock_EI_caller_address[vpeid];                        \
+        }                                                                        \
+    } while (0)
+
+#define KAL_DISABLE_IRQ_CALLER_CHECK(addr, vpeid)                                \
+    do {                                                                         \
+        if (kal_spinlock_DI_caller_address[vpeid] &&                             \
+            (kal_spinlock_caller_context[vpeid] == kal_get_internal_context())) { \
+            addr = kal_spinlock_DI_caller_address[vpeid];                        \
+        }                                                                        \
+    } while (0)
+
+
+/*******************************************************************************
+ * Category 7 : System and Modem Memory Management
+ *******************************************************************************/
+extern void *kal_sys_mem_alloc(kal_uint32 size);
+extern void kal_sys_mem_free(void *ptr);
+extern kal_uint32 kal_sys_mem_query_freesize(void);
+extern void       kal_sys_mem_sort_frags(void);
+extern kal_bool kal_locate_stack(void *mem_ptr);
+#ifdef DEBUG_KAL
+extern void *kal_debug_mem_alloc(kal_uint32 size);
+extern void kal_debug_mem_free(void *p);
+extern kal_uint32 kal_debug_mem_query_freesize(void);
+#endif
+
+kal_poolid kal_create_buff_pool(kal_uint32 buff_size, kal_uint16 num_buffs);
+void kal_delete_buff_pool(kal_poolid pool_id);
+void *kal_get_buffer(kal_poolid ext_pool_id, kal_uint32 alloc_id, kal_uint32 size,
+                     const kal_char *alloc_file, kal_uint32 alloc_line,
+                     kal_uint32 caller_addr);
+void kal_release_buffer(void *usr_buff, kal_uint32 dealloc_id,
+                        const kal_char *dealloc_file, kal_uint32 dealloc_line);
+kal_uint32 kal_get_num_free_buffs(kal_poolid pool_id);
+kal_bool kal_query_ctrlbuf_max_consumption(kal_uint32 *ptr);
+
+kal_uint32 kal_query_ctrlbuf_size_level(void);
+kal_uint32 kal_query_ctrlbuf_size(kal_uint32 level);
+kal_bool kal_query_ctrlbuf_alloc_num(kal_uint32 *ptr);
+kal_bool kal_retrieve_ctrlbuf_info(kal_uint32 level, kal_uint32 index,
+                                   kal_uint32 *ptr);
+kal_bool kal_modify_ctrlbuf_info(void *buff_ptr, kal_uint16 src_mod_id,
+                                 kal_uint16 dst_mod_id, kal_uint16 msg_id);
+
+#define isCheckPattern(c) ((c >= 'A') ? KAL_TRUE : KAL_FALSE)
+
+#if defined(DEBUG_KAL) && (defined(DEBUG_BUF1) || defined(DEBUG_BUF2))
+void kal_check_ctrl_buff_integrity();
+void kal_check_ctrl_buff_pool_integrity(void *user_buff);
+void kal_check_nearby_ctrl_buff_integrity(void *user_buff);
+#endif /* DEBUG_KAL && ( DEBUG_BUF1 || DEBUG_BUF2 ) */
+
+#if defined(DEBUG_BUF_MOD_USAGE) && !defined(__MTK_TARGET__)
+#define DECRE_CTRLBUF_CURR(buff_ptr)                              \
+    do {                                                          \
+        kal_uint16         pool_index;                            \
+        kal_history_node_t last_history;                          \
+        __kal_get_buff_num(buff_ptr, &pool_index);                \
+        kal_debug_get_last_history_node(buff_ptr, &last_history); \
+        mod_ctrlBuf_curr[pool_index][last_history.alloc_id]--;    \
+    } while (0)
+
+#else /* else of DEBUG_BUF_MOD_USAGE && !__MTK_TARGET__ */
+
+#define DECRE_CTRLBUF_CURR(buff_ptr)
+
+#endif /* end of "else of DEBUG_BUF_MOD_USAGE && !__MTK_TARGET__" */
+
+/*************************************************************************
+* FUNCTION
+*  kal_clear_all_sensitive_buff_data
+*
+* DESCRIPTION
+*  This routine clear all sensitive buffer data
+*
+* PARAMETERS
+*
+* RETURNS
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+void kal_clear_all_sensitive_buff_data(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_debug_cbs_init
+*
+* DESCRIPTION
+*  This routine create multi-task event scheduler 
+*
+* PARAMETERS
+*  none
+*
+* RETURNS
+*  KAL_TRUE
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_bool kal_debug_cbs_init(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_debug_cbs_evshed_timer_handler
+*
+* DESCRIPTION
+*  This routine handle cbs event 
+*
+* PARAMETERS
+*  none
+*
+* RETURNS
+*  none
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+void kal_debug_cbs_evshed_timer_handler(void);
+
+/*************************************************************************
+* FUNCTION
+*  get_ctrlbuf_max_size
+*
+* DESCRIPTION
+*
+* PARAMETERS
+*
+* RETURNS
+*  0:    Could not target the maximal size
+*  else: maximal size supported.
+*
+* GLOBALS AFFECTED
+*
+*************************************************************************/
+kal_uint32 get_ctrlbuf_max_size(void);
+
+/*******************************************************************************
+ * Category 8 : Timer Service
+ *******************************************************************************/
+/*******************************************************************************
+ *
+ * FUNCTION
+ *  kal_timer_interrupt
+ * DESCRIPTION
+ *  This is the wrapper function for for the OS timer interrupt.
+ * PARAMETERS
+ *  N/A
+ * RETURNS
+ *  N/A
+ * NOTE
+ *  Please note that function should be called only by the driver indicating timeout
+ * 
+ ******************************************************************************/
+void kal_timer_interrupt(void); 
+ 
+void  kal_evshed_create_pool(void);
+void *kal_evshed_get_mem(kal_uint32 size);
+void kal_evshed_free_mem(void *buff_ptr);
+
+kal_uint32 kal_check_allowed_sleep_clock(kal_uint32 period_ticks);
+void kal_recover_clock(kal_uint32 delayed_ticks);
+void kal_invoke_expired_events(kal_uint32 delayed_ticks);
+#ifdef KAL_ON_OSCAR
+/* this routine adjust simulated tick time in millisecond by user */
+void kal_adjust_sim_tick(kal_uint32 new_msec);
+#endif
+
+/*******************************************************************************
+ * Category 9 : Error Handling
+ *******************************************************************************/
+void kal_initialize(void);
+typedef void (*kal_error_func_ptr)(kal_uint32, kal_uint32);
+
+
+#if !defined(__COSIM_BYPASS_DRV__) || defined(__ESL_ENABLE_BREAK__)
+#if defined(__MTK_TARGET__)
+#define kal_fatal_error_handler(code1, code2)                                      \
+    do {                                                                           \
+        kal_uint32          _code2                 = (kal_uint32)(code2);          \
+        register kal_uint32 _code1 __asm__("$a0")  = (kal_uint32)code1;            \
+        register kal_uint32 __code2 __asm__("$a1") = _code2;                       \
+        __asm__ __volatile__(".set   push      \n"                                 \
+                             ".set   noreorder \n"                                 \
+                             ".set   noat      \n"                                 \
+                             "break %2         \n"                                 \
+                             ".set   pop       \n"                                 \
+                             :                                                     \
+                             : "r"((_code1)), "r"((__code2)), "K"(KAL_FATAL_ERROR) \
+                             :);                                                   \
+        __builtin_unreachable();                                                   \
+    } while (0)
+
+/* Call this only when EXL bit is set and assert is needed. 
+ * 
+ * This saves old EPC value to $a3 and then sets EPC to point to
+ * break instruction */
+#define kal_fatal_error_handler_EXL_SAFE(code1, code2)                            \
+    do {                                                                          \
+        register kal_uint32 _code1 __asm__("$a0")  = (kal_uint32)(code1);         \
+        register kal_uint32 _code2 __asm__("$a1") = (kal_uint32)(code2);          \
+        __asm__ __volatile__(".set   push      \n"                                \
+                             ".set   noreorder \n"                                \
+                             ".set   noat      \n"                                \
+                             "mfc0 $a3, $14    \n"                                \
+                             "la   $a2, 1f     \n"                                \
+                             "mtc0 $a2, $14    \n"                                \
+                             "ehb              \n"                                \
+                             "1:break %2       \n"                                \
+                             ".set   pop       \n"                                \
+                             :                                                    \
+                             : "r"(((_code1))), "r"(((_code2))), "K"(KAL_FATAL_ERROR) \
+                             :);                                                  \
+        __builtin_unreachable();    \
+    } while (0)
+
+/* Call this only when EXL bit is set and assert is needed. 
+ * 
+ * This saves old EPC value to $a3 and then sets EPC to point to
+ * break instruction */
+#define ASSERT_EXL_SAFE(expr)                                                \
+    do {                                                                     \
+        register const kal_char *_file __asm__("$a0") = __FILE__;           \
+        register long            _line __asm__("$a1") = __LINE__;           \
+        if (!(expr)) {                                                       \
+            __asm__ __volatile__(".set   push      \n"                       \
+                                 ".set   noreorder \n"                       \
+                                 ".set   noat      \n"                       \
+                                 "mfc0 $a3, $14    \n"                       \
+                                 "la   $a2, 1f     \n"                       \
+                                 "mtc0 $a2, $14    \n"                       \
+                                 "ehb              \n"                       \
+                                 "1:break %2       \n"                       \
+                                 ".set   pop       \n"                       \
+                                 :                                           \
+                                 : "r"((_file)), "r"((_line)), "K"(ASSERT_EXL) \
+                                 :);                                         \
+            __builtin_unreachable();                                         \
+        }                                                                    \
+    } while (0)
+#else /* __MTK_TARGET__ */
+#define kal_fatal_error_handler(code1, code2)                              \
+    do {                                                                   \
+        extern void kal_fatal_error_handler_int(kal_uint32 error_code,     \
+                                                kal_uint32 os_error_code); \
+        kal_fatal_error_handler_int(code1, (kal_uint32)(code2));                         \
+    } while (0)
+#define ASSERT_EXL_SAFE(expr)
+#define kal_fatal_error_handler_EXL_SAFE(code1, code2) kal_fatal_error_handler(code1, code2)
+#endif /* __MTK_TARGET__ */
+#else  /* !__COSIM_BYPASS_DRV__ || __ESL_ENABLE_BREAK__ */
+extern void MDM_kal_fatal_error_handler(kal_uint32, kal_uint32);
+#define kal_fatal_error_handler(code1, code2)      \
+    do {                                           \
+        MDM_kal_fatal_error_handler(code1, (kal_uint32)(code2)); \
+    } while (0)
+#define kal_fatal_error_handler_EXL_SAFE(code1, code2)      \
+    do {                                           \
+        MDM_kal_fatal_error_handler(code1, (kal_uint32)(code2)); \
+    } while (0)
+#define ASSERT_EXL_SAFE(expr)    \
+    do {                         \
+        if (!(expr))             \
+            MDM_ASSERT(0, 0, 0); \
+    } while (0)
+#endif /* !__COSIM_BYPASS_DRV__ || __ESL_ENABLE_BREAK__ */
+void kal_exit(void);
+void kal_initialize_mem(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_RecordSSTOwner
+*
+* DESCRIPTION
+*  record offender owner
+*
+* PARAMETERS
+*
+* RETURNS
+*
+*************************************************************************/
+void kal_RecordSSTOwner(kal_char *owner);
+
+/*************************************************************************
+* FUNCTION
+*  kal_CleanSSTOwnerRecord
+*
+* DESCRIPTION
+*  set SST owner record as 0xCC, SST will copy record to EX_LOG_ANALYSIS_OWNER
+*
+* PARAMETERS
+*
+* RETURNS
+*
+*************************************************************************/
+void kal_CleanSSTOwnerRecord(void);
+
+/*************************************************************************
+* FUNCTION
+*  kal_GetSSTOwnerRecord
+*
+* DESCRIPTION
+*  get offender owner ptr
+*
+* PARAMETERS
+*
+* RETURNS
+*
+*************************************************************************/
+kal_char *kal_GetSSTOwnerRecord(void);
+
+//extern void stack_rand_seed(kal_uint32 seed);
+
+
+/*************************************************************************
+ * Type Definitions
+ *************************************************************************/
+struct ptr_node {
+    void *           ptr;
+    kal_uint32       size;
+    struct ptr_node *next_ptr;
+};
+
+#if defined(DEBUG_KAL) && defined(DEBUG_BUF1)
+typedef struct kal_pool_statistics_struct {
+    kal_uint32 current_allocation;
+    kal_uint32 max_num_allocated;
+} * kal_pool_statistics;
+#endif /* defined(DEBUG_KAL) && defined(DEBUG_BUF1)  */
+
+#if defined(DEBUG_KAL) && defined(DEBUG_BUF2)
+typedef struct kal_pool_statistics_struct {
+    kal_uint32 current_allocation;
+    kal_uint32 max_num_allocated;
+    kal_uint32 max_size_requested; /* Maximum requested size from the pool */
+} * kal_pool_statistics;
+#endif /* defined(DEBUG_KAL) && defined(DEBUG_BUF2)  */
+
+
+#if defined(DEBUG_KAL) && defined(DEBUG_BUF1)
+
+typedef struct kal_int_pool_statistics_struct {
+    struct kal_pool_statistics_struct pool_info;
+    kal_uint32 *                      buff_caller_addr;
+} * kal_internal_pool_statistics, kal_pool_stat_type;
+
+#endif /* defined(DEBUG_KAL) && defined(DEBUG_BUF1) */
+
+
+#if defined(DEBUG_KAL) && defined(DEBUG_BUF2)
+
+typedef struct kal_int_pool_statistics_struct {
+    struct kal_pool_statistics_struct pool_info;
+    struct kal_int_buff_stats *       buff_stat;
+#if defined(DEBUG_BUF3) && defined(__MTK_TARGET__)
+    struct kal_int_buff_callstack *buff_callstack;
+#endif
+} * kal_internal_pool_statistics, kal_pool_stat_type;
+
+#endif /* defined(DEBUG_KAL) && defined(DEBUG_BUF2) */
+
+typedef void (*kal_print_string_func_ptr)(kal_char *);
+
+#if defined(DEBUG_KAL) && defined(DEBUG_TASK)
+typedef struct kal_task_statistics_struct {
+    kal_uint8 unused;
+} * kal_task_statistics;
+#endif /* defined(DEBUG_KAL) && defined(DEBUG_TASK) */
+
+#if defined(DEBUG_KAL) && defined(DEBUG_ITC)
+
+typedef struct kal_queue_statistics_struct {
+    kal_uint8 unused;
+} * kal_queue_statistics;
+
+#endif /* defined(DEBUG_KAL) && defined(DEBUG_ITC) */
+
+#define NUM_OF_CORE 4
+
+/*************************************************************************
+ * Task Management
+ *************************************************************************/
+#if defined(DEBUG_KAL) && defined(DEBUG_TASK)
+
+
+#define kal_get_task_statistics( task_id, stat_ptr ) {}
+#define kal_reset_task_statistics(  task_id ) {}
+
+#else	/* defined(DEBUG_KAL) && defined(DEBUG_TASK) */
+
+#define kal_get_task_statistics( task_id, stat_ptr ) {}
+#define kal_reset_task_statistics(  task_id ) {}
+
+#endif /* defined(DEBUG_KAL) && defined(DEBUG_TASK) */
+void *kal_get_task_name_ptr(void *taskid);
+/*************************************************************************
+ * ITC Management
+ *************************************************************************/
+#if defined(DEBUG_KAL) && defined(DEBUG_ITC)
+
+#define kal_get_q_statistics(queue_id, stat_ptr) \
+    kal_debug_get_q_statistics(queue_id, stat_ptr)
+
+#define kal_reset_q_statistics(queue_id) kal_debug_reset_q_statistics(queue_id)
+
+void kal_debug_get_q_statistics(kal_msgqid queue_id, kal_queue_statistics *stat_ptr);
+void kal_debug_reset_q_statistics(kal_msgqid queue_id);
+
+#else /* defined(DEBUG_KAL) && defined(DEBUG_ITC) */
+
+#define kal_get_q_statistics(queue_id, stat_ptr ) {}
+#define kal_reset_q_statistics(  queue_id ) {}
+
+#endif /* defined(DEBUG_KAL) && defined(DEBUG_ITC) */
+
+kal_bool kal_get_queue_info(kal_msgqid task_ext_qid, kal_msgq_info *msgq_info);
+
+/*************************************************************************
+ * Memory Management
+  *************************************************************************/
+extern void *__real_memset(void *dest, kal_int32 value, kal_uint32 size);
+INLINE_MODIFIER INLINE void *kal_mem_set_init(void *dest, kal_int32 value,
+                                              kal_uint32 size)
+{
+    return __real_memset(dest, value, size);
+}
+
+extern void *__real_memcpy(void *dest, void *src, kal_uint32 size);
+INLINE_MODIFIER INLINE void *kal_mem_cpy_init(void *dest, void *src,
+	                                          kal_uint32 size)
+{
+    return __real_memcpy(dest, src, size);
+}
+
+/*************************************************************************
+ * Timer Management
+ *************************************************************************/
+#if defined(DEBUG_KAL) && defined(DEBUG_TIMER)
+#define TIMER_HISR_EXECUTION_BOUND (40) /* 40 ms */
+#endif
+
+/*************************************************************************
+ * Sleep Management
+ *************************************************************************/
+typedef enum { NO_TIMER, UNLIMITED_SLEEP_TIME, LIMITED_SLEEP_TIME } kal_sleep_state;
+
+typedef struct {
+    kal_uint32      sleep_time;
+    kal_uint32      first_timer_time;
+    kal_sleep_state sleep_status;
+} Sleep_Time;
+
+#ifdef __HAPS_FPGA_CLK_ADJUST__
+#define MAX_SLEEP_TIME (kal_uint32)(29.8 * 1000 / KAL_MILLISECS_PER_TICK_REAL)
+#else
+#define MAX_SLEEP_TIME (kal_uint32)(29.8 * 1000 / KAL_MILLISECS_PER_TICK)
+#endif
+
+extern void kal_get_sleep_time(Sleep_Time *cal_ticks);
+extern kal_uint32 kal_is_valid_sleep_time(Sleep_Time *sl);
+
+/*************************************************************************
+ * Error Handling and Debug Management
+ *************************************************************************/
+/*What a pity, RVCT C doesn't support inline function*/
+#ifdef __MTK_TARGET__
+#define kal_get_linker_address(ret_value)                                                     \
+    do {                                                                                      \
+        kal_uint32 link_register;                                                             \
+        /* \
+     * NoteXXX: retrieve link register before any function call\
+     *\
+     */ \
+        GET_RETURN_ADDRESS(link_register);                                                    \
+        if (link_register & 0x01) {                                                           \
+            link_register -= 3;                                                               \
+        } else {                                                                              \
+            link_register -= 4;                                                               \
+        }                                                                                     \
+        ret_value = link_register;                                                            \
+    } while (0)
+#else
+#define kal_get_linker_address(ret_value)         \
+    do {                                          \
+        ret_value = (kal_uint32)_ReturnAddress(); \
+    } while (0)
+#endif
+
+#ifdef __MTK_TARGET__
+#define GET_INTERRUPT_MASK(ibit)                     \
+    do {                                             \
+        __asm__ __volatile__("mfc0 %0, $12, 0\n\t"   \
+                             "ext  %0, %0, 0, 1\n\t" \
+                             : "+r"(ibit));          \
+    } while (0)
+#else /* ifdef __MTK_TARGET__ */
+/* return 'interrupts enabled' status in non-target builds */
+#define GET_INTERRUPT_MASK(ibit) 1
+#endif /* ifdef __MTK_TARGET__ */
+
+#if defined(DEBUG_KAL)
+
+#ifdef DEBUG_LEAK
+void kal_settimeout(void *addr, kal_timer_func_ptr handler_func_ptr,
+                    void *handler_param_ptr, kal_uint32 delay);
+void kal_untimeout(void *addr);
+void kal_default_timeouthandler(void *);
+#endif /* DEBUG_LEAK */
+
+void kal_debug_register_print_string_function(kal_print_string_func_ptr func_ptr);
+void kal_debug_print(kal_char *string_to_be_printed);
+void kal_debug_print_int(kal_int32 int_to_be_printed);
+void kal_debug_print_uint(kal_uint32 int_to_be_printed);
+void kal_debug_print_uint_in_hex(kal_uint32 int_to_be_printed);
+void kal_debug_reset(void);
+
+#define kal_register_print_string_function(to_be_registered_func) \
+    kal_debug_register_print_string_function(to_be_registered_func)
+
+#define kal_print_int(int_to_be_printed) kal_debug_print_int(int_to_be_printed)
+
+#define kal_print_uint(int_to_be_printed) kal_debug_print_uint(int_to_be_printed)
+
+#define kal_print_uint_in_hex(int_to_be_printed) \
+    kal_debug_print_uint_in_hex(int_to_be_printed)
+
+#define kal_enable_debug(debug_code, flag) kal_debug_enable_debug(debug_code, flag)
+
+#define kal_abort() {}
+
+#define kal_reset() kal_debug_reset()
+
+#else /* defined(DEBUG_KAL) */
+
+#define kal_register_print_string_function( to_be_registered_func) {}
+#define kal_print_int( int_to_be_printed )  {}
+#define kal_print_uint( int_to_be_printed )  {}
+#define kal_print_uint_in_hex( int_to_be_printed )  {}
+#define kal_enable_debug( debug_code, flag ) {}
+#define kal_abort() {}
+#define kal_reset() {}
+
+#endif /* defined(DEBUG_KAL) */
+
+/*************************************************************************
+ * Types used by run-time sysmem statistic
+ *************************************************************************/ 
+#if defined(__MTK_TARGET__) 
+#define KAL_RT_SYSMEM_SIZE_MUTEX ( sizeof(kal_mutex_type) )
+#define KAL_RT_SYSMEM_SIZE_SEM ( sizeof(kal_sem_type) )
+#define KAL_RT_SYSMEM_SIZE_EVENT_GROUP ( sizeof(kal_eventgrp_type) )
+#define KAL_RT_SYSMEM_SIZE_KAL_TIMER ( sizeof(kal_timer_type) ) 
+#define KAL_RT_SYSMEM_SIZE_STACK_TIMER ( 0 ) 
+#define KAL_RT_SYSMEM_SIZE_SPINLOCK ( sizeof(kal_itc_lock_s) )
+#define KAL_RT_SYSMEM_SIZE_PROTECT ( sizeof(kal_itc_lock_s) )
+#if defined(ALWAYS_ENABLE_EVSHED_PROTECT)
+#define KAL_RT_SYSMEM_SIZE_EVSHED                                 \
+    (KAL_RT_SYSMEM_SIZE_KAL_TIMER + sizeof(event_scheduler_int) + \
+     (sizeof(struct TC_PROTECT_STRUCT)))
+#else
+#define KAL_RT_SYSMEM_SIZE_EVSHED \
+    (KAL_RT_SYSMEM_SIZE_KAL_TIMER + sizeof(event_scheduler_int))
+#endif
+#if defined(DEBUG_KAL)
+extern kal_uint8 system_resource_amount[];
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#if defined(__MTK_TARGET__)
+/*************************************************************************
+ * TC PRIO API
+ *************************************************************************/
+
+#if defined(__MD97__)
+#if defined(MT6297_IA)
+#define IDX_OF_TC_PRIO_COUNT(count, vpe_id, tc_id) \
+    do {                                           \
+        count = ((vpe_id >> 1) * 6 + tc_id);       \
+    } while (0);
+#else
+#define IDX_OF_TC_PRIO_COUNT(count, vpe_id, tc_id) \
+    do {                                           \
+        count = ((vpe_id/3) * 6 + tc_id);          \
+    } while (0);
+#endif
+#else // end of __MD97__
+#define IDX_OF_TC_PRIO_COUNT(count, vpe_id, tc_id) \
+    do {                                           \
+        count = ((vpe_id >> 1) * 4 + tc_id);       \
+    } while (0);
+#endif
+
+#define GET_VPE_ID_TC_ID_IDX_COUNT(count, vpe_id, tc_id) \
+    do {                                                 \
+        vpe_id = kal_get_current_vpe_id();               \
+        tc_id  = kal_get_current_tc_id();                \
+        IDX_OF_TC_PRIO_COUNT(count, vpe_id, tc_id);      \
+    } while (0);
+
+
+#endif // MTK TARGET
+
+#if defined(__MTK_TARGET__)
+/*************************************************************************
+ * CC Spinlock API
+ *************************************************************************/
+/*KAL_CC_SPINLOCK*/
+void kal_cc_create_spinlock(kal_char *lock_name);
+#endif
+
+/*************************************************************************
+ * Clib UTC API
+ *************************************************************************/
+
+void clib_update_TZ(kal_int32 tz_minuteswest);
+void clib_update_DST(kal_int32 tz_dsttime);
+void clib_update_UTC(kal_uint32 year, kal_uint32 month, kal_uint32 day,
+                     kal_uint32 hour, kal_uint32 minute, kal_uint32 second);
+
+#endif /* __KAL_INTERNAL_API__ */
diff --git a/mcu/service/kal/common/include/kal_internal_def.h b/mcu/service/kal/common/include/kal_internal_def.h
new file mode 100644
index 0000000..37d4594
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_internal_def.h
@@ -0,0 +1,207 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_internal_api.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This header file is used to define internal api, do not export!
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __KAL_INTERNAL_DEFINATIONS__
+#define __KAL_INTERNAL_DEFINATIONS__
+
+#include "kal_general_types.h"
+#include "task_config.h"
+#include "srv_modid.h"
+#include "drv_modid.h"
+#include "modem_2g3g_modid.h"
+#include "middleware_modid.h"
+#include "hisr_modid.h"
+#include "isr_modid.h"
+
+#undef TASK_PRIORITY_MACRO
+
+#undef SRV_TASK_CONFIG
+#undef MODEM_2G3G_TASK_CONFIG
+#undef MIDDLEWARE_TASK_CONFIG
+#undef DRIVER_TASK_CONFIG
+
+#define SRV_TASK_CONFIG
+#define MODEM_2G3G_TASK_CONFIG
+#define MIDDLEWARE_TASK_CONFIG
+#define DRIVER_TASK_CONFIG
+
+#define DEBUG_KAL_INTERNAL
+#define DEBUG_DEADLOCKS
+
+#undef task_index
+
+/*define all macros as empty*/
+#define task_name(p1)
+#define task_queue_name(p1)
+#define task_priority(p1, p2)
+#define task_stack_size(p1)
+#define null_task_create_entry(p1)
+#define compatible_code(p1)
+#define task_create_function(p1)
+#define task_stack_internalRAM(p1)
+#define task_external_queue_size(p1)
+#define task_internal_queue_size(p1)
+#define task_boot_mode(p1)
+#define task_affinity_group(p1)
+#define MODULE_ID_MAP_TO_NULL_TASK_CAN_ALLOCATE_ILM(p1)
+#define MODULE_ID_FOR_PRINT_TRACE(p1)
+#define task_module_map(p1, p2)
+#define task_index(p1)
+
+typedef enum {
+
+    LAST_MOD_ID = (MODULE_TAG_SRV_TAIL - MOD_ID_SRV_CODE_BEGIN + 1 +
+                   MODULE_TAG_MODEM_DUMMY_TAIL - MOD_MODEM_DUMMY_BEGIN + 1 +
+                   MODULE_TAG_MODEM_4G_DUMMY_TAIL - MOD_MODEM_4G_DUMMY_BEGIN + 1 +
+                   MODULE_TAG_MODEM_5G_DUMMY_TAIL - MOD_MODEM_5G_DUMMY_BEGIN + 1 +
+                   MODULE_TAG_MW_DUMMY_TAIL - MOD_MW_DUMMY_BEGIN + 1 +
+                   MODULE_TAG_DRV_DUMMY_TAIL - MOD_DRV_DUMMY_BEGIN + 1),
+
+    RPS_TOTAL_STACK_MODULES = LAST_MOD_ID,
+    MOD_LIBRARY_BEGIN       = 1400,
+    MOD_BOUNDARY,
+    MAX_MODULE_ID = 1500
+
+} module_type_t;
+
+
+/*************************************************************************
+ * module type boundary check
+ * Don't use this array in your code
+ *************************************************************************/
+typedef unsigned int module_id_boundary_check[MAX_MODULE_ID - MOD_BOUNDARY];
+typedef unsigned int total_stack_modules_boundary_check[MOD_LIBRARY_BEGIN + 1 -
+                                                        RPS_TOTAL_STACK_MODULES];
+/************************************************************************/
+
+/* unmark this defination would use static memory for default prioriry node*/
+//#define KAL_PRIORITY_NODE_BY_CTRL_BUFF 1
+
+/*******************************************************************************
+ * Category 9 : Error Handling
+ *******************************************************************************/
+typedef struct {
+    kal_uint32 type;
+    kal_uint32 param1;
+    kal_uint32 param2;
+    kal_uint32 param3;
+    kal_uint32 param4;
+    kal_uint32 param5;
+    kal_uint32 param6;
+    kal_uint32 param7;
+    kal_uint32 param8;
+    kal_uint32 param9;
+    kal_uint32 param10;
+} kal_error_param;
+
+typedef struct {
+    kal_uint32 type;
+    kal_uint32 expr;
+    kal_uint32 file;
+    kal_uint32 line;
+    kal_uint32 offendingPC;
+    kal_uint32 ext1;
+    kal_uint32 ext2;
+    kal_uint32 ext3;
+    kal_uint32 dump_param;
+    kal_uint32 ext;
+    kal_uint32 custom_param;
+} kal_assert_param;
+
+typedef struct {
+    kal_uint32 type;
+    kal_uint32 err_code;
+    kal_uint32 os_err_code;
+    kal_uint32 offendingPC;
+    kal_uint32 regs;
+    kal_uint32 param5; /* cpu triggered = 0xCCCCCCCC */
+    kal_uint32 param6; /* abnormal reset = *os_err_code */
+    kal_uint32 param7; /* abnormal reset = *(os_err_code4) */
+    kal_uint32 param8;
+    kal_uint32 param9;
+    kal_uint32 param10; /* CPU_DRIVEN_DIV_BY_0_FAILED = UDIV or SDIV */
+} kal_fatalerr_param;
+
+typedef enum {
+    EX_ASSERT,
+    EX_FATALERR,
+    EX_CC_TRIGGERED_ERR,
+    EX_CPU_TRIGGERED_EXCEPTION,
+    EX_DC_OFFSHOOT, /* dependent core offshoot */
+    EX_HW_OFFSHOOT, /* other hw access offshoot */
+    EX_INT_OFFSHOOT,
+} ex_category;
+
+/* opaque type for internal protect identity */
+typedef struct {
+    kal_uint8 unused;
+} kal_protectid_s;
+
+typedef kal_protectid_s *kal_protectid;
+
+#define KAL_NILPROTECT_ID (kal_protectid) NULL
+//#define KAL_HISR_STACK_SHARING
+
+
+#endif /* __KAL_INTERNAL_DEFINATIONS__  */
diff --git a/mcu/service/kal/common/include/kal_os.h b/mcu/service/kal/common/include/kal_os.h
new file mode 100644
index 0000000..fab3acb
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_os.h
@@ -0,0 +1,82 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_os.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file includes specific OS header.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+
+
+#if !defined(_KAL_OS_H)
+#define _KAL_OS_H
+
+#if defined(KAL_ON_OSCAR)
+#include "kal_oscar.h"
+#elif defined(KAL_ON_MERTOS)
+#include "kal_mertos.h"
+#endif
+
+extern kal_uint32 kal_os_rand_seed_init(void);
+
+#endif /* _KAL_OS_H */
diff --git a/mcu/service/kal/common/include/kal_profiling.h b/mcu/service/kal/common/include/kal_profiling.h
new file mode 100644
index 0000000..2e9e34a
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_profiling.h
@@ -0,0 +1,178 @@
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+ * ---------
+ *   kal_profiling.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file contains declarations of kal profiling hooks.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef KAL_PROFILING_H 
+#define KAL_PROFILING_H 
+
+#ifndef __KTEST_RTOS_PROFILING__
+#define KAL_PROF_HOOK(tag)
+#else
+extern void ktest_profiling_measpoint(kal_uint32 meas_point);
+#define KAL_PROF_HOOK(tag) ktest_profiling_measpoint(tag)
+#endif // __KTEST_RTOS_PROFILING__
+
+typedef enum
+{
+    KAL_PROF_CALL,
+    RTOS_PROF_CALL,
+    RTOS_PROF_LOCK,
+    RTOS_PROF_UNLOCK,
+    RTOS_PROF_RET,
+    KAL_PROF_RET,
+    KAL_PROF_SIZE
+} kal_test_points;
+
+typedef enum
+{
+    KAL_QUEUE_PUSH_CALL = KAL_PROF_CALL,
+    RTOS_QUEUE_PUSH_CALL = RTOS_PROF_CALL,
+    RTOS_QUEUE_PUSH_RETURN = RTOS_PROF_RET,
+    KAL_QUEUE_PUSH_RETURN = KAL_PROF_RET,
+
+    KAL_QUEUE_PULL_CALL = KAL_PROF_CALL,
+    RTOS_QUEUE_PULL_CALL = RTOS_PROF_CALL,
+    RTOS_QUEUE_PULL_RETURN = RTOS_PROF_RET,
+    KAL_QUEUE_PULL_RETURN = KAL_PROF_RET,
+
+    KAL_QUEUE_INFO_CALL = KAL_PROF_CALL,
+    RTOS_QUEUE_INFO_CALL = RTOS_PROF_CALL,
+    RTOS_QUEUE_INFO_RETURN = RTOS_PROF_RET,
+    KAL_QUEUE_INFO_RETURN = KAL_PROF_RET,   
+    
+    KAL_SEMA_TAKE_CALL = KAL_PROF_CALL,
+    RTOS_SEMA_TAKE_CALL = RTOS_PROF_CALL,
+    RTOS_SEMA_TAKE_RETURN = RTOS_PROF_RET,
+    KAL_SEMA_TAKE_RETURN = KAL_PROF_RET,
+
+    KAL_SEMA_GIVE_CALL = KAL_PROF_CALL,
+    RTOS_SEMA_GIVE_CALL = RTOS_PROF_CALL,
+    RTOS_SEMA_GIVE_RETURN = RTOS_PROF_RET,
+    KAL_SEMA_GIVE_RETURN = KAL_PROF_RET,
+    
+    KAL_MUTEX_TAKE_CALL = KAL_PROF_CALL,
+    KAL_MUTEX_TAKE_RETURN = KAL_PROF_RET,
+    KAL_MUTEX_GIVE_CALL = KAL_PROF_CALL,
+    KAL_MUTEX_GIVE_RETURN = KAL_PROF_RET,
+    
+    KAL_EVENT_SET_CALL = KAL_PROF_CALL,
+    RTOS_EVENT_SET_CALL = RTOS_PROF_CALL,
+    RTOS_EVENT_SET_RETURN = RTOS_PROF_RET,
+    KAL_EVENT_SET_RETURN = KAL_PROF_RET,
+    
+    KAL_EVENT_GET_CALL = KAL_PROF_CALL,
+    RTOS_EVENT_GET_CALL = RTOS_PROF_CALL,
+    RTOS_EVENT_GET_RETURN = RTOS_PROF_RET,
+    KAL_EVENT_GET_RETURN = KAL_PROF_RET,
+
+    KAL_TIMER_SET_CALL = KAL_PROF_CALL,
+    RTOS_TIMER_SET_CALL = RTOS_PROF_CALL,
+    RTOS_TIMER_SET_RETURN = RTOS_PROF_RET,
+    KAL_TIMER_SET_RETURN = KAL_PROF_RET,
+
+    KAL_TIMER_GET_CALL = KAL_PROF_CALL,
+    RTOS_TIMER_GET_CALL = RTOS_PROF_CALL,
+    RTOS_TIMER_GET_RETURN = RTOS_PROF_RET,
+    KAL_TIMER_GET_RETURN = KAL_PROF_RET,
+
+    KAL_TIMER_CANCEL_CALL = KAL_PROF_CALL,
+    RTOS_TIMER_CANCEL_CALL = RTOS_PROF_CALL,
+    RTOS_TIMER_CANCEL_RETURN = RTOS_PROF_RET,
+    KAL_TIMER_CANCEL_RETURN = KAL_PROF_RET,
+
+    KAL_ALLOC_CALL = KAL_PROF_CALL,
+    RTOS_ALLOC_CALL = RTOS_PROF_CALL,
+    RTOS_ALLOC_RETURN = RTOS_PROF_RET,
+    KAL_ALLOC_RETURN =KAL_PROF_RET,
+
+    KAL_DEALLOC_CALL = KAL_PROF_CALL,
+    RTOS_DEALLOC_CALL = RTOS_PROF_CALL,
+    RTOS_DEALLOC_RETURN = RTOS_PROF_RET,
+    KAL_DEALLOC_RETURN =KAL_PROF_RET,
+
+    KAL_ACTIVATE_HISR_CALL = KAL_PROF_CALL,
+    RTOS_ACTIVATE_HISR_CALL = RTOS_PROF_CALL,
+    RTOS_ACTIVATE_HISR_RETURN = RTOS_PROF_RET,
+    KAL_ACTIVATE_HISR_RETURN =KAL_PROF_RET,
+    
+    KAL_EMUX_TAKE_CALL = KAL_PROF_CALL,
+    RTOS_EMUX_TAKE_CALL = RTOS_PROF_CALL,
+    RTOS_EMUX_TAKE_RETURN = RTOS_PROF_RET,
+    KAL_EMUX_TAKE_RETURN = KAL_PROF_RET,
+    KAL_EMUX_GIVE_CALL = KAL_PROF_CALL,
+    RTOS_EMUX_GIVE_CALL = RTOS_PROF_CALL,
+    RTOS_EMUX_GIVE_RETURN = RTOS_PROF_RET,
+    KAL_EMUX_GIVE_RETURN = KAL_PROF_RET,
+    
+    KAL_ACTIVATE_ISR = KAL_PROF_CALL,
+    KAL_ACTIVATE_ISR_RETURN = KAL_PROF_RET,
+    MIPS_IRQ_IN = RTOS_PROF_CALL,
+    MIPS_IRQ_OUT = RTOS_PROF_RET,
+
+} kal_profiling_mapping;
+
+
+#endif // KAL_PROFILING_H
diff --git a/mcu/service/kal/common/include/kal_system_init.h b/mcu/service/kal/common/include/kal_system_init.h
new file mode 100644
index 0000000..64b9683
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_system_init.h
@@ -0,0 +1,62 @@
+
+/*****************************************************************************
+*  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) 2018
+*
+*  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:
+* ---------
+*   kal_system_init.h
+*
+* Project:
+* --------
+*   modem
+*
+* Description:
+* ------------
+*   Declare system related definition
+*
+* Author:
+* -------
+*   
+*
+*****************************************************************************/
+
+#ifndef __KAL_SYSTEM_INIT_H__
+#define __KAL_SYSTEM_INIT_H__
+
+void kal_system_init(void);
+
+#endif /* __KAL_SYSTEM_INIT_H__ */
diff --git a/mcu/service/kal/common/include/kal_time.h b/mcu/service/kal/common/include/kal_time.h
new file mode 100644
index 0000000..f69065b
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_time.h
@@ -0,0 +1,96 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kal_time.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file contains declarations of time-related functions.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#if !defined(_KAL_TIME_H)
+#define _KAL_TIME_H
+
+#ifndef __time_h
+#error "time.h must be included before kal_time.h"
+#endif /* !TIME_H */
+
+/*******************************************************************************
+ * Exported Function Prototypes
+ *******************************************************************************/
+extern struct tm *kal_gmtime_r(const time_t *timer, struct tm *t);
+
+#endif /* _KAL_TIME_H */
diff --git a/mcu/service/kal/common/include/kal_ut_api.h b/mcu/service/kal/common/include/kal_ut_api.h
new file mode 100644
index 0000000..c3f42c1
--- /dev/null
+++ b/mcu/service/kal/common/include/kal_ut_api.h
@@ -0,0 +1,113 @@
+#ifndef _KAL_UT_API_H
+#define _KAL_UT_API_H
+
+#include "kal_general_types.h"
+
+#ifdef __MTK_TARGET__
+
+#define kal_ut_store_sp()
+#define kal_ut_restore_sp()
+
+#else
+
+#define kal_ut_store_sp()            \
+    do {                             \
+        kal_int32 ut_sp;             \
+        {                            \
+            __asm mov ut_sp, esp     \
+        }                            \
+        kal_ut_set_sp_var(ut_sp);    \
+    } while (0)
+
+#define kal_ut_restore_sp()          \
+    do {                             \
+        kal_int32 ut_sp;             \
+        ut_sp = kal_ut_get_sp_var(); \
+        {                            \
+            __asm mov esp, ut_sp     \
+        }                            \
+    } while (0)
+
+#endif
+
+typedef enum {
+    KAL_UT_ASSERT_USER_END_INVALID,
+    KAL_UT_ASSERT_USER_END_ABORT,
+    KAL_UT_ASSERT_USER_END_RETURN
+} kal_ut_assert_user_end_handler_enum;
+
+#define kal_ut_run_assert_user_end_handler()                   \
+    do {                                                       \
+        kal_ut_assert_user_end_handler_enum handler =          \
+            kal_ut_get_assert_user_end_handler();              \
+        if (handler == KAL_UT_ASSERT_USER_END_ABORT) {         \
+            abort();                                           \
+        } else if (handler == KAL_UT_ASSERT_USER_END_RETURN) { \
+            return;                                            \
+        } else {                                               \
+            /* Bypass */                                       \
+        }                                                      \
+    }                                                          \
+    while (0)
+
+
+/*************************************************************************
+ * Type Definitions
+ *************************************************************************/
+typedef void (*kal_ut_assert_user_handler_fp)(kal_char *file, kal_uint32 line);
+typedef void (*kal_ut_fatal_error_user_handler_fp)(kal_uint32 error_code,
+                                                   kal_uint32 os_err_code);
+
+/*************************************************************************
+ * Exported Function Prototypes
+ *************************************************************************/
+
+/*******************************************************************************
+ * <GROUP Functions>
+ * 
+ * FUNCTION
+ *  kal_ut_register_assert_user_handler
+ * DESCRIPTION
+ *  Register user assert handler
+ * PARAMETERS
+ *  user_fp: [IN] the function pointer of user handler.
+ * RETURNS
+ *  N/A
+ * NOTE
+ *  This API only used for unit test environment. The kal assert handler will 
+ *  call the resitered user handler, and the user handler should not return.
+ ******************************************************************************/
+extern void
+kal_ut_register_assert_user_handler(kal_ut_assert_user_handler_fp user_fp);
+
+/*******************************************************************************
+ * <GROUP Functions>
+ * 
+ * FUNCTION
+ *  kal_ut_register_fatal_error_user_handler
+ * DESCRIPTION
+ *  Register user fatal error handler
+ * PARAMETERS
+ *  user_fp: [IN] the function pointer of user handler.
+ * RETURNS
+ *  N/A
+ * NOTE
+ *  This API only used for unit test environment. The kal fatal error handler will
+ *  call the regsitered user handler, and the user handler should not return.
+ ******************************************************************************/
+extern void
+kal_ut_register_fatal_error_user_handler(kal_ut_fatal_error_user_handler_fp user_fp);
+
+
+/*************************************************************************
+ * Internal Function Prototypes
+ *************************************************************************/
+extern void kal_ut_run_assert_user_handler(kal_char *file, kal_uint32 line);
+extern void kal_ut_register_assert_user_end_handler(
+    kal_ut_assert_user_end_handler_enum user_enum);
+extern kal_ut_assert_user_end_handler_enum kal_ut_get_assert_user_end_handler();
+extern void kal_ut_run_fatal_error_user_handler(kal_uint32 error_code,
+                                                kal_uint32 os_err_code);
+extern void kal_ut_set_sp_var(kal_int32 sp);
+extern kal_int32 kal_ut_get_sp_var();
+#endif
\ No newline at end of file
diff --git a/mcu/service/kal/common/include/kalcc_rcu.h b/mcu/service/kal/common/include/kalcc_rcu.h
new file mode 100644
index 0000000..4b7bd37
--- /dev/null
+++ b/mcu/service/kal/common/include/kalcc_rcu.h
@@ -0,0 +1,121 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   kalcc_rcu.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef __KALCC_RCU__
+#define __KALCC_RCU__
+
+#include "cache_sw.h"
+
+#define KALCC_RCU_MAGIC (0x554352)
+
+typedef struct kalcc_rcu_buff_t {
+    struct kalcc_internal_rcu_t *rcu_ptr;
+    struct kalcc_rcu_buff_t *    rcu_next;
+    kal_uint32                   rcu_reader_count;
+    kal_uint32                   rcu_checksum;
+
+    /* for debug purpose */
+    struct kalcc_rcu_buff_t *rcu_debug_pre_buff;  //for traverse all rcu buff
+    struct kalcc_rcu_buff_t *rcu_debug_next_buff; //no use mlib dll
+    kal_uint32               rcu_buff_count;
+} kalcc_rcu_buffer_type, *kalcc_rcu_buffid;
+
+
+typedef struct kalcc_internal_rcu_t {
+    kal_uint32       rcu_id;
+    kalcc_rcu_buffid rcu_avail_buff;
+    kalcc_rcu_buffid rcu_curr_data;
+    kal_uint32       rcu_total_alloc_buff;
+    kal_uint32       rcu_total_avail_buff;
+    kal_uint32       rcu_buff_size;
+    kal_spinlockid   rcu_spinlock;
+    module_type      rcu_lastest_commit_modid;
+} kalcc_internal_rcu_type, *kalcc_internal_rcuid;
+
+
+/* align RCU to cache line size */
+#define ALIGN_RCU_SIZE (ALIGNTOCACHELINE(sizeof(kalcc_internal_rcu_type)))
+
+/* align RCU buff header to cache line size */
+#define ALIGN_RCU_HEADER_SIZE (ALIGNTOCACHELINE(sizeof(kalcc_rcu_buffer_type)))
+
+#endif /* __KALCC_RCU__  */
diff --git a/mcu/service/kal/common/include/spinlock.h b/mcu/service/kal/common/include/spinlock.h
new file mode 100644
index 0000000..28b0f85
--- /dev/null
+++ b/mcu/service/kal/common/include/spinlock.h
@@ -0,0 +1,112 @@
+/*****************************************************************************
+*  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) 2009
+*
+*  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:
+ * ---------
+ *   spinlock.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   This header file defines the spinlock operations.
+ *
+ * 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!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __SPINLOCK_H__
+#define __SPINLOCK_H__
+
+#include "kal_general_types.h"
+
+typedef struct {
+    volatile kal_uint32 lock;
+    volatile kal_uint32 owner_module;
+} spinlock_t;
+
+typedef struct {
+    volatile kal_uint32 lock;
+} rwlock_t;
+
+void spinlock_init(spinlock_t *lock);
+kal_uint32 spin_lock(spinlock_t *lock);
+kal_uint32 spin_trylock(spinlock_t *lock, kal_bool *success);
+void spin_unlock(spinlock_t *lock, kal_uint32 status);
+
+void rwlock_init(rwlock_t *lock);
+kal_uint32 write_lock(rwlock_t *rw);
+kal_uint32 write_trylock(rwlock_t *rw, kal_bool *success);
+void write_unlock(rwlock_t *rw, kal_uint32 status);
+kal_uint32 read_lock(rwlock_t *rw);
+kal_uint32 read_trylock(rwlock_t *rw, kal_bool *success);
+void read_unlock(rwlock_t *rw, kal_uint32 status);
+
+#endif /* __SPINLOCK_H__ */
diff --git a/mcu/service/kal/common/include/stack_buff_alloc.h b/mcu/service/kal/common/include/stack_buff_alloc.h
new file mode 100644
index 0000000..2766b26
--- /dev/null
+++ b/mcu/service/kal/common/include/stack_buff_alloc.h
@@ -0,0 +1,177 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   stack_buff_alloc.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This file contains the function prototypes of the buffer allocation module.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+   (C) _____ (year of first publication) Sasken communication
+   Technologies Limited, All rights reserved.
+*   This file provides a template for .c files. This space
+*   should be used to describe the file contents
+*   Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _STACK_BUFF_ALLOC_H
+#define _STACK_BUFF_ALLOC_H
+
+#include "kal_general_types.h"
+
+/*************************************************************************
+ * Exported Function Prototypes
+ *************************************************************************/
+extern kal_bool stack_is_new_call_allowed(void);
+
+extern void *get_int_ctrl_buffer(kal_uint32 size, const kal_char *file,
+                                 kal_uint32 line, kal_uint32 caller_addr);
+extern void kal_clear_mod_usage_count(module_type module_id);
+
+/*************************************************************************
+ * Macro Definition
+ *************************************************************************/
+#if defined(DEBUG_KAL) && defined(DEBUG_BUF1)
+
+#define GET_BUFFER(size, ptr_type, return_ptr, file_name, line, caller_addr)    \
+    {                                                                           \
+        return_ptr = (ptr_type)get_int_ctrl_buffer(size, NULL, 0, caller_addr); \
+    }
+
+#elif defined(DEBUG_KAL) && defined(DEBUG_BUF2)
+
+#define GET_BUFFER(size, ptr_type, return_ptr, file_name, line, caller_addr)  \
+    {                                                                         \
+        return_ptr = (ptr_type)get_int_ctrl_buffer(size, file_name, line, 0); \
+    }
+
+#else
+
+#define GET_BUFFER(size, ptr_type, return_ptr, file_name, line, caller_addr) \
+    {                                                                        \
+        return_ptr = (ptr_type)get_int_ctrl_buffer(size, NULL, 0, 0);        \
+    }
+
+#endif
+
+#endif /* _STACK_BUFF_ALLOC_H */
diff --git a/mcu/service/kal/common/include/stack_internal_macros.h b/mcu/service/kal/common/include/stack_internal_macros.h
new file mode 100644
index 0000000..7dad9f3
--- /dev/null
+++ b/mcu/service/kal/common/include/stack_internal_macros.h
@@ -0,0 +1,179 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   stack_internal_macros.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+   (C) _____ (year of first publication) Sasken communication
+   Technologies Limited, All rights reserved.
+*   This file provides a template for .c files. This space
+*   should be used to describe the file contents
+*   Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _STACK_INTERNAL_MACROS_H
+#define _STACK_INTERNAL_MACROS_H
+
+/*fix compile warning*/
+#if defined(DEBUG_KAL) && defined(DEBUG_BUF2)
+extern module_type stack_get_active_module_id(void);
+#endif
+
+/*************************************************************************
+ * Macros With Parameters
+ *************************************************************************/
+#if defined(DEBUG_KAL) && defined(DEBUG_BUF1)
+
+#define GET_BUFFER_FROM_POOL(pool_id, size, file_name, line, buff_ptr, caller_addr) \
+    {                                                                               \
+        buff_ptr = kal_get_buffer(pool_id, 0, size, NULL, 0, caller_addr);          \
+    }
+
+#define FREE_BUFFER(ptr, file_name, line) kal_release_buffer(ptr, 0, NULL, 0)
+
+#elif defined(DEBUG_KAL) && defined(DEBUG_BUF2)
+
+#define GET_BUFFER_FROM_POOL(pool_id, size, file_name, line, buff_ptr, caller_addr) \
+    {                                                                               \
+        buff_ptr = kal_get_buffer(pool_id, stack_get_active_module_id(), size,      \
+                                  file_name, line, 0);                              \
+    }
+
+#define FREE_BUFFER(ptr, file_name, line) \
+    kal_release_buffer(ptr, stack_get_active_module_id(), file_name, line)
+
+#else
+
+#define GET_BUFFER_FROM_POOL(pool_id, size, file_name, line, buff_ptr, caller_addr) \
+    {                                                                               \
+        buff_ptr = kal_get_buffer(pool_id, 0, 0, NULL, 0, 0);                       \
+    }
+
+#define FREE_BUFFER(ptr, file_name, line) kal_release_buffer(ptr, 0, NULL, 0)
+
+#endif
+
+/*
+ * No mutex protection for the global while incrementing.
+ * This is for statistics collection
+ */
+#define INCR_NUM_OF_MISSES(__pool_info, __i) \
+{                                            \
+        __pool_info[__i].num_of_misses++;    \
+}
+
+#endif /* _STACK_INTERNAL_MACROS_H */
diff --git a/mcu/service/kal/common/include/stack_timer.h b/mcu/service/kal/common/include/stack_timer.h
new file mode 100644
index 0000000..6f444c0
--- /dev/null
+++ b/mcu/service/kal/common/include/stack_timer.h
@@ -0,0 +1,209 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   stack_timer.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This module has prototypes of the functions and a structure
+ *   defined to support concurrency issues related to a timer.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+	(C) _____ (year of first publication) Sasken communication
+	Technologies Limited, All rights reserved.
+*   This file provides a template for .c files. This space
+*   should be used to describe the file contents
+*   Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _STACK_TIMER_H
+#define _STACK_TIMER_H
+
+#include "kal_general_types.h"
+#include "stack_config.h"
+
+typedef void *stack_timer_msg_ptr;
+typedef void (*stack_msg_post_fptr)(stack_timer_msg_ptr);
+
+
+/*************************************************************************
+ * Exported Data
+ *************************************************************************/
+#if defined(KAL_ON_OSCAR)
+#include "kal_public_defs.h"
+extern kal_uint8 ut_monitor_mod[1024];
+extern kal_uint8 ut_send_msg;
+
+typedef struct {
+    kal_uint8   ref_count;
+    kal_uint16  msg_len;
+    kal_uint32  init_time;
+    module_type src_module;
+    kal_uint16  timer_id;
+} stack_sim_timer_start_struct, stack_sim_timer_stop_struct,
+    stack_sim_timer_expiry_struct;
+#endif
+
+#endif /* _STACK_TIMER_H */
diff --git a/mcu/service/kal/common/include/stack_timer_defs.h b/mcu/service/kal/common/include/stack_timer_defs.h
new file mode 100644
index 0000000..916e00d
--- /dev/null
+++ b/mcu/service/kal/common/include/stack_timer_defs.h
@@ -0,0 +1,113 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   stack_timer_defs.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This module has prototypes of the functions and a structure
+ *   defined to support concurrency issues related to a timer.
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+   (C) _____ (year of first publication) Sasken communication
+   Technologies Limited, All rights reserved.
+*   This file provides a template for .c files. This space
+*   should be used to describe the file contents
+*   Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _STACK_TIMER_DEFS_H
+#define _STACK_TIMER_DEFS_H
+
+/*************************************************************************
+ * Macros Without Parameters
+ *************************************************************************/
+//#define STACK_TIMER_NIL_TIMER_ID   (kal_timerid)-1
+
+/*************************************************************************
+ * Type Definitions
+ *************************************************************************/
+typedef enum { STACK_TIMER_ERROR } stack_timer_error_code_type;
+#endif /* _STACK_TIMER_DEFS_H */