diff --git a/riscv32/Liteos.ld b/riscv32/Liteos.ld index f7e88326408a8eadf6042e9b82acf0fe7a420109..79d6df121c50b004504c1fa2e3d1c2ae8c326d8b 100755 --- a/riscv32/Liteos.ld +++ b/riscv32/Liteos.ld @@ -14,7 +14,7 @@ SECTIONS __text_start = .; . = ALIGN(0x10); *(.start.text) - *(.interrupt.text) + *(.interrupt.*) *(.text.*) . = ALIGN(0x20); __rodata_start = .; diff --git a/riscv32/Makefile b/riscv32/Makefile index 813e0cb202887521a7225802ef7b8f37db0fdd72..77807e5a8f54631ec45fcbfe9501e29292ec8a12 100755 --- a/riscv32/Makefile +++ b/riscv32/Makefile @@ -29,6 +29,7 @@ CFLAGS := -I $(LITEOSTOPDIR)/utils \ -I $(LITEOSTOPDIR)/kernel/include \ -I $(LITEOSTOPDIR)/kernel/arch/risc-v \ -I $(LITEOSTOPDIR)/kernel/arch/risc-v/asm \ + -I $(LITEOSTOPDIR)/kernel/arch/include \ -I $(LITEOSTOPDIR)/components/cpup \ -I $(OPENHARMONYDIR)/device/qemu/$(LITEOS_PLATFORM)/include \ -I $(OPENHARMONYDIR)/device/qemu/$(LITEOS_PLATFORM)/include/asm \ @@ -38,6 +39,7 @@ CFLAGS := -I $(LITEOSTOPDIR)/utils \ LOCAL_CSRCS := $(wildcard $(LITEOSTOPDIR)/kernel/src/*.c) \ $(wildcard $(LITEOSTOPDIR)/kernel/src/mm/*.c) \ $(wildcard $(LITEOSTOPDIR)/kernel/arch/risc-v/*.c) \ + $(wildcard $(LITEOSTOPDIR)/utils/*.c) \ $(wildcard $(OPENHARMONYDIR)/device/qemu/$(LITEOS_PLATFORM)/*.c) \ $(wildcard $(OPENHARMONYDIR)/device/qemu/$(LITEOS_PLATFORM)/driver/*.c) \ $(wildcard $(LITEOSTOPDIR)/components/cpup/*.c) \ diff --git a/riscv32/driver/mtimer.c b/riscv32/driver/mtimer.c index 8e6acd3a0355d258b19c2f3105e52487a2af26c7..f000021b7e7bdcd4df88e73325de285b5b94b767 100755 --- a/riscv32/driver/mtimer.c +++ b/riscv32/driver/mtimer.c @@ -43,6 +43,8 @@ extern "C" { #endif #endif +STATIC OS_TICK_HANDLER g_TickHandler = NULL; + VOID MTimerCpuCycle(UINT32 *contHi, UINT32 *contLo) { READ_UINT32(*contLo, MTIMER); @@ -63,16 +65,20 @@ STATIC INLINE VOID UpdateMtimerCmp(UINT32 tick) WRITE_UINT32((UINT32)(timer >> 32), MTIMERCMP + 4); } -STATIC VOID OsMachineTimerInterrupt(UINT32 sysCycle) +STATIC VOID OsMachineTimerInterrupt(VOID *sysCycle) { - OsTickHandler(); - UpdateMtimerCmp(sysCycle); + UINT32 period = (UINT32)(UINTPTR)sysCycle; + + g_TickHandler(); + UpdateMtimerCmp(period); } -UINT32 MTimerTickInit(UINT32 period) +UINT32 MTimerTickInit(OS_TICK_HANDLER handler, UINT32 period) { unsigned int ret; - ret = LOS_HwiCreate(RISCV_MACH_TIMER_IRQ, 0x1, 0, OsMachineTimerInterrupt, period); + g_TickHandler = handler; + + ret = HalHwiCreate(RISCV_MACH_TIMER_IRQ, 0x1, 0, OsMachineTimerInterrupt, period); if (ret != LOS_OK) { return ret; } @@ -81,7 +87,7 @@ UINT32 MTimerTickInit(UINT32 period) WRITE_UINT32(period, MTIMERCMP); WRITE_UINT32(0x0, MTIMERCMP + 4); - OsIrqEnable(RISCV_MACH_TIMER_IRQ); + HalIrqEnable(RISCV_MACH_TIMER_IRQ); return LOS_OK; } diff --git a/riscv32/driver/mtimer.h b/riscv32/driver/mtimer.h index d5204447d36a2bd5befad25350b52188d953928b..f3c98adeabefce749d921d5795013a561591a7c3 100755 --- a/riscv32/driver/mtimer.h +++ b/riscv32/driver/mtimer.h @@ -33,6 +33,7 @@ #define _MTIMER_H #include "los_compiler.h" +#include "los_context.h" #ifdef __cplusplus #if __cplusplus @@ -41,7 +42,7 @@ extern "C" { #endif extern VOID MTimerCpuCycle(UINT32 *contHi, UINT32 *contLo); -extern UINT32 MTimerTickInit(UINT32 period); +extern UINT32 MTimerTickInit(OS_TICK_HANDLER handler, UINT32 period); #ifdef __cplusplus #if __cplusplus diff --git a/riscv32/driver/plic.c b/riscv32/driver/plic.c index 643cda55f811068debd77e78e918f0f09a2727db..0b1d51f3e577fac7e9686c1b971dbe899a96bfb5 100755 --- a/riscv32/driver/plic.c +++ b/riscv32/driver/plic.c @@ -32,7 +32,7 @@ #include "plic.h" #include "soc.h" #include "los_reg.h" -#include "los_interrupt.h" +#include "los_arch_interrupt.h" #include "los_debug.h" #ifdef __cplusplus @@ -41,7 +41,7 @@ extern "C" { #endif #endif -static VOID OsMachineExternalInterrupt(UINT32 arg) +STATIC VOID OsMachineExternalInterrupt(VOID *arg) { volatile UINT32 *plicReg = (volatile UINT32 *)(PLIC_REG_BASE + 0x4); UINT32 irqNum, saveIrqNum; @@ -50,7 +50,7 @@ static VOID OsMachineExternalInterrupt(UINT32 arg) saveIrqNum = irqNum; if ((irqNum >= OS_RISCV_CUSTOM_IRQ_VECTOR_CNT) || (irqNum == 0)) { - OsHwiDefaultHandler(irqNum); + HalHwiDefaultHandler((VOID *)irqNum); } irqNum += RISCV_SYS_MAX_IRQ; @@ -80,7 +80,7 @@ VOID PlicIrqInit() WRITE_UINT32(0, plicReg); - ret = LOS_HwiCreate(RISCV_MACH_EXT_IRQ, 0x1, 0, OsMachineExternalInterrupt, 0); + ret = HalHwiCreate(RISCV_MACH_EXT_IRQ, 0x1, 0, OsMachineExternalInterrupt, 0); if (ret != LOS_OK) { PRINT_ERR("Creat machine external failed! ret : 0x%x\n", ret); } diff --git a/riscv32/include/asm/soc.h b/riscv32/include/asm/soc.h index 470c4b17b58e59aa40ce7b939033a21cc85352bd..e93cb0c489c4a47e03529c8377bd2b1b69544864 100755 --- a/riscv32/include/asm/soc.h +++ b/riscv32/include/asm/soc.h @@ -32,6 +32,11 @@ #define _SOC_H #include "soc_common.h" +/* + * Get the response interrupt number via mcause. + * id = mcause & MCAUSE_INT_ID_MASK + */ +#define MCAUSE_INT_ID_MASK 0x7FFFFFF #define MSIP 0x2000000 #define MTIMERCMP 0x2004000 #define MTIMER 0x200BFF8 diff --git a/riscv32/include/riscv_hal.h b/riscv32/include/riscv_hal.h index 7a021e5e1fc129c679d04eb67e8c2c8bbc8f4343..128cecdbb285064ae41230870cc1455560fa68d0 100755 --- a/riscv32/include/riscv_hal.h +++ b/riscv32/include/riscv_hal.h @@ -33,6 +33,7 @@ #define _RISCV_HAL_H #include "los_compiler.h" +#include "los_context.h" #ifdef __cplusplus #if __cplusplus @@ -49,15 +50,15 @@ extern CHAR *__text_start; extern CHAR *__text_end; extern CHAR *__bss_end; -extern BOOL OsBackTraceRaCheck(UINT32 value); -extern BOOL OsBackTraceFpCheck(UINT32 value); +extern BOOL HalBackTraceRaCheck(UINT32 value); +extern BOOL HalBackTraceFpCheck(UINT32 value); -extern VOID OsIrqDisable(UINT32 vector); -extern VOID OsIrqEnable(UINT32 vector); -extern VOID OsSetLocalInterPri(UINT32 vector, UINT16 prior); +extern VOID HalIrqDisable(UINT32 vector); +extern VOID HalIrqEnable(UINT32 vector); +extern VOID HalSetLocalInterPri(UINT32 vector, UINT16 prior); -extern VOID OsGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo); -extern VOID SysClockInit(UINT32 period); +extern VOID HalGetSysCpuCycle(UINT32 *cntHi, UINT32 *cntLo); +extern VOID HalClockInit(OS_TICK_HANDLER handler, UINT32 period); #ifdef __cplusplus #if __cplusplus diff --git a/riscv32/los_start.S b/riscv32/los_start.S index d6a2420f926d0d40e1adca986fa6b57b28a7d563..7282cdac37cabe13f11308bf38e515b92d9ebfc9 100755 --- a/riscv32/los_start.S +++ b/riscv32/los_start.S @@ -59,7 +59,7 @@ _start: li t0, RISCV_MSTATUS_MPP csrw mstatus, t0 csrw mie, zero - la t0, TrapVector + la t0, HalTrapVector csrw mtvec, t0 # direct mode .option push diff --git a/riscv32/riscv_hal.c b/riscv32/riscv_hal.c index ad4a70048f7ced951536d40dbb3b580a0ed5d806..566bd7ceeb2cae3061cd701e1157116582f0c6aa 100755 --- a/riscv32/riscv_hal.c +++ b/riscv32/riscv_hal.c @@ -41,7 +41,7 @@ extern "C" { #endif #endif -VOID OsIrqDisable(UINT32 vector) +VOID HalIrqDisable(UINT32 vector) { if (vector <= RISCV_SYS_MAX_IRQ) { CLEAR_CSR(mie, 1 << vector); @@ -50,7 +50,7 @@ VOID OsIrqDisable(UINT32 vector) } } -VOID OsIrqEnable(UINT32 vector) +VOID HalIrqEnable(UINT32 vector) { if (vector <= RISCV_SYS_MAX_IRQ) { SET_CSR(mie, 1 << vector); @@ -59,12 +59,12 @@ VOID OsIrqEnable(UINT32 vector) } } -VOID OsSetLocalInterPri(UINT32 interPriNum, UINT16 prior) +VOID HalSetLocalInterPri(UINT32 interPriNum, UINT16 prior) { PlicIrqSetPrio(interPriNum, prior); } -VOID OsGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo) +VOID HalGetSysCpuCycle(UINT32 *cntHi, UINT32 *cntLo) { if ((cntHi == NULL) || (cntLo == NULL)) { return; @@ -73,7 +73,7 @@ VOID OsGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo) MTimerCpuCycle(cntHi, cntLo); } -BOOL OsBackTraceFpCheck(UINT32 value) +BOOL HalBackTraceFpCheck(UINT32 value) { if (value >= (UINT32)(UINTPTR)(&__bss_end)) { return TRUE; @@ -86,7 +86,7 @@ BOOL OsBackTraceFpCheck(UINT32 value) return FALSE; } -BOOL OsBackTraceRaCheck(UINT32 value) +BOOL HalBackTraceRaCheck(UINT32 value) { BOOL ret = FALSE; @@ -98,10 +98,10 @@ BOOL OsBackTraceRaCheck(UINT32 value) return ret; } -VOID SysClockInit(UINT32 period) +VOID HalClockInit(OS_TICK_HANDLER handler, UINT32 period) { UINT32 ret; - ret = MTimerTickInit(period); + ret = MTimerTickInit(handler, period); if (ret != LOS_OK) { PRINT_ERR("Creat Mtimer failed! ret : 0x%x \n", ret); return; @@ -109,7 +109,7 @@ VOID SysClockInit(UINT32 period) PlicIrqInit(); - OsIrqEnable(RISCV_MACH_EXT_IRQ); + HalIrqEnable(RISCV_MACH_EXT_IRQ); } #ifdef __cplusplus diff --git a/riscv32/target_config.h b/riscv32/target_config.h index 04528d996c7430779295676e225ae2284500a2ca..44152db90e3e2b58cd9b436ebeac42ec1a3966bc 100755 --- a/riscv32/target_config.h +++ b/riscv32/target_config.h @@ -1,205 +1,110 @@ -/* - * Copyright (c) 2013-2020, Huawei Technologies Co., Ltd. All rights reserved. - * Copyright (c) 2020, Huawei Device Co., Ltd. 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 copyright holder 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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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. - */ - -#ifndef _TARGETS_CONFIG_H -#define _TARGETS_CONFIG_H - -#include "soc.h" -#include "los_compiler.h" - -#ifdef __cplusplus -#if __cplusplus -extern "C" { -#endif /* __cplusplus */ -#endif /* __cplusplus */ - -#define OS_SYS_CLOCK 10000000UL - -#define LOSCFG_BASE_CORE_TICK_PER_SECOND 1000 - -/****************************** System clock module configuration ****************************/ -#define LOSCFG_BASE_CORE_TIMER_NUM 7 - -/****************************** Task module configuration ********************************/ -/** - * @ingroup los_config - * Default task priority - */ -#define LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO 10 - -/** - * @ingroup los_config - * Maximum supported number of tasks except the idle task rather than the number of usable tasks - */ -#define LOSCFG_BASE_CORE_TSK_LIMIT 20 // max num task - -/** - * @ingroup los_config - * Size of the idle task stack - */ -#define LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE SIZE(0x500) // IDLE task stack - -/** - * @ingroup los_config - * Default task stack size - */ -#define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE SIZE(0x2D0) // default stack - -/** - * @ingroup los_config - * Minimum stack size. - */ -#define LOS_TASK_MIN_STACK_SIZE (ALIGN(0x130, 16)) - -/** - * @ingroup los_config - * Configuration item for task Robin tailoring - */ -#define LOSCFG_BASE_CORE_TIMESLICE YES // task-ROBIN moduel cutting switch - -/** - * @ingroup los_config - * Longest execution time of tasks with the same priorities - */ -#define LOSCFG_BASE_CORE_TIMESLICE_TIMEOUT 10 - -/** - * @ingroup los_config - * Configuration item for task (stack) monitoring module tailoring - */ -#define LOSCFG_BASE_CORE_TSK_MONITOR YES - -/** - * @ingroup los_config - * Define a usable task priority.Highest task priority. - */ -#define LOS_TASK_PRIORITY_HIGHEST 0 - -/** - * @ingroup los_config - * Define a usable task priority.Lowest task priority. - */ -#define LOS_TASK_PRIORITY_LOWEST 31 - -/****************************** Semaphore module configuration ******************************/ -/** - * @ingroup los_config - * Configuration item for semaphore module tailoring - */ -#define LOSCFG_BASE_IPC_SEM YES - -/** - * @ingroup los_config - * Maximum supported number of semaphores - */ -#define LOSCFG_BASE_IPC_SEM_LIMIT 10 // the max sem-numb - -/****************************** mutex module configuration ******************************/ -/** - * @ingroup los_config - * Configuration item for mutex module tailoring - */ -#define LOSCFG_BASE_IPC_MUX YES - -/** - * @ingroup los_config - * Maximum supported number of mutexes - */ -#define LOSCFG_BASE_IPC_MUX_LIMIT 10 // the max mutex-num - -/****************************** Queue module configuration ********************************/ -/** - * @ingroup los_config - * Configuration item for queue module tailoring - */ -#define LOSCFG_BASE_IPC_QUEUE YES - -/** - * @ingroup los_config - * Maximum supported number of queues rather than the number of usable queues - */ -#define LOSCFG_BASE_IPC_QUEUE_LIMIT 10 //the max queue-numb - -/****************************** Software timer module configuration **************************/ -/** - * @ingroup los_config - * Configuration item for software timer module tailoring - */ -#define LOSCFG_BASE_CORE_SWTMR YES - -/** - * @ingroup los_config - * Maximum supported number of software timers rather than the number of usable software timers - */ -#define LOSCFG_BASE_CORE_SWTMR_LIMIT 10 // the max SWTMR numb - -/****************************** Memory module configuration **************************/ -/** - * @ingroup los_config - * Configuration module tailoring of mem node integrity checking - */ -#define LOSCFG_BASE_MEM_NODE_INTEGRITY_CHECK YES - -/** - * @ingroup los_config - * Configuration module tailoring of mem node size checking - */ -#define LOSCFG_BASE_MEM_NODE_SIZE_CHECK YES - -#define LOSCFG_MEMORY_BESTFIT YES - -#define LOSCFG_PLATFORM_EXC YES -/** - * @ingroup los_config - * Number of memory checking blocks - */ -#define OS_SYS_MEM_NUM 20 - -#define LOSCFG_KERNEL_MEM_SLAB NO - -#ifdef LITEOSCFG_EXTENDED_KERNEL -#define LOSCFG_KERNEL_TICKLESS NO -#define LOSCFG_BASE_CORE_CPUP YES -#endif - -#ifdef LITEOSCFG_CMSIS -#define CMSIS_OS_VER 1 -#define LOSCFG_COMPAT_CMSIS_FW YES -#endif - -#ifdef __cplusplus -#if __cplusplus -} -#endif /* __cplusplus */ -#endif /* __cplusplus */ - - -#endif /* _TARGETS_CONFIG_H */ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved. + * Description: 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 copyright holder 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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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. + * --------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + */ + +/**@defgroup los_config System configuration items + * @ingroup kernel + */ + +#ifndef _TARGET_CONFIG_H +#define _TARGET_CONFIG_H + +#include "soc.h" +#include "los_compiler.h" + +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif /* __cplusplus */ +#endif /* __cplusplus */ + +/*============================================================================= + System clock module configuration +=============================================================================*/ +#define OS_SYS_CLOCK 10000000UL +#define LOSCFG_BASE_CORE_TICK_PER_SECOND (1000UL) +#define LOSCFG_BASE_CORE_TICK_HW_TIME 0 +/*============================================================================= + Task module configuration +=============================================================================*/ +#define LOSCFG_BASE_CORE_TSK_LIMIT 24 +#define LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE (0x500U) +#define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE (0x2D0U) +#define LOSCFG_BASE_CORE_TSK_MIN_STACK_SIZE (0x130U) +#define LOSCFG_BASE_CORE_TIMESLICE 1 +#define LOSCFG_BASE_CORE_TIMESLICE_TIMEOUT 10 +#define LOSCFG_BASE_CORE_TSK_MONITOR 1 +/*============================================================================= + Semaphore module configuration +=============================================================================*/ +#define LOSCFG_BASE_IPC_SEM 1 +#define LOSCFG_BASE_IPC_SEM_LIMIT 48 +/*============================================================================= + Mutex module configuration +=============================================================================*/ +#define LOSCFG_BASE_IPC_MUX 1 +#define LOSCFG_BASE_IPC_MUX_LIMIT 24 +/*============================================================================= + Queue module configuration +=============================================================================*/ +#define LOSCFG_BASE_IPC_QUEUE 1 +#define LOSCFG_BASE_IPC_QUEUE_LIMIT 24 +/*============================================================================= + Software timer module configuration +=============================================================================*/ +#define LOSCFG_BASE_CORE_SWTMR 1 +#define LOSCFG_BASE_CORE_SWTMR_ALIGN 1 +#define LOSCFG_BASE_CORE_SWTMR_LIMIT 48 +/*============================================================================= + Memory module configuration +=============================================================================*/ +#define OS_SYS_MEM_SIZE 0x00013000 +#define LOSCFG_BASE_MEM_NODE_INTEGRITY_CHECK 0 +#define LOSCFG_BASE_MEM_NODE_SIZE_CHECK 0 +#define LOSCFG_MEM_MUL_POOL 0 +#define OS_SYS_MEM_NUM 20 +#define LOSCFG_KERNEL_MEM_SLAB 0 +#define LOSCFG_MEMORY_BESTFIT 1 +/*============================================================================= + Exception module configuration +=============================================================================*/ +#define LOSCFG_PLATFORM_EXC 1 + +#define OS_HWI_WITH_ARG 1 + +#ifdef __cplusplus +#if __cplusplus +} +#endif /* __cplusplus */ +#endif /* __cplusplus */ + + +#endif /* _TARGET_CONFIG_H */