You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
LiteOS-Reading/src/kernel/include/los_builddef.h

120 lines
5.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/* ----------------------------------------------------------------------------
* Copyright (c) Huawei Technologies Co., Ltd. 2013-2019. All rights reserved.
* Description: System Build Define HeadFile
* Author: Huawei LiteOS Team
* Create: 2013-01-01
* 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 _LOS_BUILDEF_H
#define _LOS_BUILDEF_H
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif /* __cplusplus */
#endif /* __cplusplus */
#define OS_LITTLE_ENDIAN 0x1234 /* Little endian *///±íʾС¶ËÐò£¬ÊýֵΪ 0x1234
#define OS_BIG_ENDIAN 0x4321 /* Big endian *///±íʾ´ó¶ËÐò£¬ÊýֵΪ 0x4321
#ifndef OS_BYTE_ORDER
#define OS_BYTE_ORDER OS_LITTLE_ENDIAN//Èç¹û䶨Òå OS_BYTE_ORDER£¬Ôò½«ÆäÉèÖÃΪ OS_LITTLE_ENDIAN
#endif
/* Define OS code data sections */
/* The indicator function is inline */
#ifndef LITE_OS_SEC_ALW_INLINE
#define LITE_OS_SEC_ALW_INLINE /* __attribute__((always_inline)) *///¶¨ÒåÁËÒ»¸öºê£¬ÓÃÓÚ½«º¯ÊýÉùÃ÷ΪÄÚÁªº¯Êý
#endif
#ifndef LITE_OS_SEC_TEXT
#define LITE_OS_SEC_TEXT /* __attribute__((section(".text.sram"))) *///¶¨ÒåÁËÒ»¸öºê£¬ÓÃÓÚ½«´úÂë¶Î·ÅÖÃÔÚ .text.sram ¶ÎÖÐ
#endif
#ifndef LITE_OS_SEC_TEXT_MINOR
#define LITE_OS_SEC_TEXT_MINOR /* __attribute__((section(".text.ddr"))) *///¶¨ÒåÁËÒ»¸öºê£¬ÓÃÓÚ½«´úÂë¶Î·ÅÖÃÔÚ .text.ddr ¶ÎÖÐ
#endif
#ifndef LITE_OS_SEC_TEXT_INIT
#define LITE_OS_SEC_TEXT_INIT /* __attribute__((section(".text.init"))) *///ºê¶¨ÒåÁËÒ»¸ö´úÂë¶Î£¬ÓÃÓÚ·ÅÖóõʼ»¯´úÂ룬ÆäλÖÃÔÚ .text.init ¶ÎÖС£
#endif
#ifndef LITE_OS_SEC_DATA
#define LITE_OS_SEC_DATA /* __attribute__((section(".data.sram"))) *///ºê¶¨ÒåÁËÒ»¸öÊý¾Ý¶Î£¬ÓÃÓÚ·ÅÖÃÊý¾Ý£¬ÆäλÖÃÔÚ .data.sram ¶ÎÖС£
#endif
#ifndef LITE_OS_SEC_DATA_MINOR
#define LITE_OS_SEC_DATA_MINOR /* __attribute__((section(".data.ddr"))) *///¶¨ÒåÁËÒ»¸ö´ÎÒªÊý¾Ý¶Î£¬ÓÃÓÚ·ÅÖôÎÒªµÄÊý¾Ý£¬ÆäλÖÃÔÚ .data.ddr ¶ÎÖС£
#endif
#ifndef LITE_OS_SEC_DATA_INIT
#define LITE_OS_SEC_DATA_INIT /* __attribute__((section(".data.init"))) *///ºê¶¨ÒåÁËÒ»¸öÊý¾Ý¶Î£¬ÓÃÓÚ·ÅÖóõʼ»¯Êý¾Ý£¬ÆäλÖÃÔÚ .data.init ¶ÎÖС£
#endif
#ifndef LITE_OS_SEC_DATA_VEC
#define LITE_OS_SEC_DATA_VEC __attribute__((section(".data.vector")))//ºê¶¨ÒåÁËÒ»¸öÊý¾Ý¶Î£¬ÓÃÓÚ·ÅÖÃÏòÁ¿±íÊý¾Ý£¬ÆäλÖÃÔÚ .data.vector ¶ÎÖС£
#endif
#ifndef LITE_OS_SEC_BSS
#define LITE_OS_SEC_BSS /* __attribute__((section(".bss.sram"))) *///ºê¶¨ÒåÁËÒ»¸öÊý¾Ý¶Î£¬ÓÃÓÚ·ÅÖÃδ³õʼ»¯µÄÊý¾Ý£¨BSS¶Î£©£¬ÆäλÖÃÔÚ .bss.sram ¶ÎÖС£
#endif
#ifndef LITE_OS_SEC_BSS_MINOR
#define LITE_OS_SEC_BSS_MINOR /* __attribute__((section(".bss.ddr"))) */// ºê¶¨ÒåÁËÒ»¸öÊý¾Ý¶Î£¬ÓÃÓÚ·ÅÖÃδ³õʼ»¯µÄ´ÎÒªÊý¾Ý£¨BSS¶Î£©£¬ÆäλÖÃÔÚ .bss.ddr ¶ÎÖС£
#endif
#ifndef LITE_OS_SEC_BSS_INIT
#define LITE_OS_SEC_BSS_INIT /* __attribute__((section(".bss.init"))) *///ºê¶¨ÒåÁËÒ»¸öÊý¾Ý¶Î£¬ÓÃÓÚ·ÅÖÃδ³õʼ»¯µÄ³õʼ»¯Êý¾Ý£¨BSS¶Î£©£¬ÆäλÖÃÔÚ .bss.init ¶ÎÖС£
#endif
#ifndef LITE_OS_SEC_ITCM
#define LITE_OS_SEC_ITCM /* __attribute__((section(".itcm "))) */// ºê¶¨ÒåÁËÒ»¸ö´úÂë¶Î£¬ÓÃÓÚ·ÅÖôúÂ루ָÁºÍÖ»¶ÁÊý¾Ý£¬ÔÚ ITCM ÖÐÔËÐС£ ITCM ÓëÆäËûÄÚ´æÓÐËù²»Í¬£¬ËüλÓÚ CPU ÄÚ²¿£¬¾ßÓиßËÙ·ÃÎʺ͵ÍÑÓ³ÙµÄÓÅÊÆ¡£
#endif
#ifndef LITE_OS_SEC_DTCM
#define LITE_OS_SEC_DTCM /* __attribute__((section(".dtcm"))) *///ºê¶¨ÒåÁËÒ»¸öÊý¾Ý¶Î£¬ÓÃÓÚ·ÅÖÃÊý¾Ý£¬Î»ÓÚ DTCM ÖС£ DTCM ÓëÆäËûÄÚ´æÓÐËù²»Í¬£¬ËüλÓÚ CPU ÄÚ²¿£¬¾ßÓиßËÙ·ÃÎʺ͵ÍÑÓ³ÙµÄÓÅÊÆ¡£
#endif
#define PACK1//ºê¶¨ÒåÁËÒ»¸ö½á¹¹Ìå³ÉÔ±±äÁ¿µÄ¶ÔÆë·½Ê½£¬½«½á¹¹ÌåµÄ³ÉÔ±±äÁ¿½ôÃܵشò°üÔÚÒ»Æð£¬²»Ê¹ÓÿռäÀ´¶ÔÆë¡£
#ifndef LITE_OS_ATTR_SEC
#define LITE_OS_ATTR_SEC(name) __attribute__((section(#name)))//ºê¶¨ÒåÁËÒ»¸öº¯Êý»ò±äÁ¿ËùÔڵĶΣ¬Í¨¹ý #name ½« name ת»»Îª×Ö·û´®£¬½«º¯Êý»ò±äÁ¿·ÅÖõ½Ö¸¶¨Ãû³ÆµÄ¶ÎÖС£
#endif
#ifndef LITE_OS_ATTR_ALIGN
#define LITE_OS_ATTR_ALIGN(x) __attribute__((aligned(x)))//ºê¶¨ÒåÁËÊý¾ÝµÄ¶ÔÆë·½Ê½£¬¼´¼¸¸ö×Ö½Ú¶ÔÆë£¬x ±íʾ¶ÔÆëµÄ×Ö½ÚÊý¡£
#endif
#ifndef LITE_OS_ATTR_SEC_ALIGN
#define LITE_OS_ATTR_SEC_ALIGN(name, x) __attribute__((section(#name), aligned(x)))//ºê¶¨ÒåÁËij¶ÎÊý¾ÝµÄ¶ÔÆë·½Ê½£¬¼´½«Êý¾Ý·ÅÖõ½Ö¸¶¨Ãû³ÆµÄ¶ÎÖУ¬²¢°´ÕÕÖ¸¶¨µÄ¶ÔÆë·½Ê½¶ÔÆë¡£
#endif
#ifndef OS_EMBED_ASM
#define OS_EMBED_ASM __asm__ __volatile__//ºê¶¨ÒåÁËǶÈë»ã±àÖ¸ÁîµÄ·½Ê½£¬½« asm volatile ×÷ΪǶÈë»ã±àÖ¸ÁîµÄǰ׺£¬Ê¹µÃ±àÒëÆ÷¿ÉÒÔ½«Æäʶ±ðΪ»ã±àÖ¸Áî¡£
#endif
#ifdef __cplusplus
#if __cplusplus
}
#endif /* __cplusplus */
#endif /* __cplusplus */
#endif /* _LOS_BUILDEF_H */