diff --git a/kernel/arch/include/los_context.h b/kernel/arch/include/los_context.h
index 058d71047e1515e9b65f085a871260bea5da653d..493f33ff52cf958362d33e8895e119a5fb32fb60 100644
--- a/kernel/arch/include/los_context.h
+++ b/kernel/arch/include/los_context.h
@@ -82,7 +82,7 @@ extern VOID *HalTskStackInit(UINT32 taskID, UINT32 stackSize, VOID *topStack);
*
- los_hw.h: the header file that contains the API declaration.
* @see None.
*/
-LITE_OS_SEC_TEXT_MINOR VOID HalSysExit(VOID);
+LITE_OS_SEC_TEXT_MINOR VOID HalSysExit(VOID) NORETURN;
/* *
* @ingroup los_context
diff --git a/kernel/include/los_task.h b/kernel/include/los_task.h
index 73fb1b129cebbd7eff385a3b91b825faefcfa793..0f0d85c0d98a0057c30a1efcff51478a4af84009 100644
--- a/kernel/include/los_task.h
+++ b/kernel/include/los_task.h
@@ -501,8 +501,8 @@ extern VOID LOS_Msleep(UINT32 mSecs);
* @see
*/
extern UINT32 LOS_Start(VOID);
-extern VOID LOS_Reboot(VOID);
-extern VOID LOS_Panic(const CHAR *fmt, ...);
+extern VOID LOS_Reboot(VOID) NORETURN;
+extern VOID LOS_Panic(const CHAR *fmt, ...) NORETURN;
/**
diff --git a/utils/los_compiler.h b/utils/los_compiler.h
index 94d08417fc9eebc722fd8451b3916310e0bfd665..6d1579caa527816878327ce109c881ca0569633e 100755
--- a/utils/los_compiler.h
+++ b/utils/los_compiler.h
@@ -70,6 +70,10 @@ extern "C" {
#define CLZ __iar_builtin_CLZ
#endif
+#ifndef NORETURN
+#define NORETURN __attribute__ ((__noreturn__))
+#endif
+
/* for ARM Compiler */
#elif defined(__CC_ARM)
@@ -97,6 +101,10 @@ extern "C" {
#define CLZ __clz
#endif
+#ifndef NORETURN
+#define NORETURN __declspec(noreturn)
+#endif
+
#pragma anon_unions
/* for GNU Compiler */
@@ -126,6 +134,10 @@ extern "C" {
#define CLZ __builtin_clz
#endif
+#ifndef NORETURN
+#define NORETURN __attribute__ ((__noreturn__))
+#endif
+
#else
#error Unknown compiler.
#endif