192 lines
10 KiB
C
192 lines
10 KiB
C
|
|
/**********************************************************************************************************************
|
|||
|
|
* COPYRIGHT
|
|||
|
|
* -------------------------------------------------------------------------------------------------------------------
|
|||
|
|
* \verbatim
|
|||
|
|
* Copyright (c) 2024 by Vector Informatik GmbH. All rights reserved.
|
|||
|
|
*
|
|||
|
|
* This software is copyright protected and proprietary to Vector Informatik GmbH.
|
|||
|
|
* Vector Informatik GmbH grants to you only those rights as set out in the license conditions.
|
|||
|
|
* All other rights remain with Vector Informatik GmbH.
|
|||
|
|
* \endverbatim
|
|||
|
|
* -------------------------------------------------------------------------------------------------------------------
|
|||
|
|
* FILE DESCRIPTION
|
|||
|
|
* -------------------------------------------------------------------------------------------------------------------
|
|||
|
|
* File: Compiler.h
|
|||
|
|
* Component: -
|
|||
|
|
* Module: -
|
|||
|
|
* Generator: -
|
|||
|
|
*
|
|||
|
|
* Description: This file provides the AUTOSAR compiler abstraction for the Texas Instruments LLVM compiler
|
|||
|
|
*
|
|||
|
|
*********************************************************************************************************************/
|
|||
|
|
|
|||
|
|
/**********************************************************************************************************************
|
|||
|
|
* REVISION HISTORY
|
|||
|
|
* -------------------------------------------------------------------------------------------------------------------
|
|||
|
|
* Version Date Author Change Id Description
|
|||
|
|
* -------------------------------------------------------------------------------------------------------------------
|
|||
|
|
* 01.00.00 2021-09-29 vishci HALBE-5003 Created initial version.
|
|||
|
|
* 01.01.00 2023-07-18 virrlu HALBE-10062 Update to AUTOSAR Release 21-11
|
|||
|
|
* 01.01.01 2024-02-01 virmid OSHAL-990 Updated copyright year.
|
|||
|
|
**********************************************************************************************************************/
|
|||
|
|
|
|||
|
|
#ifndef COMPILER_H
|
|||
|
|
#define COMPILER_H
|
|||
|
|
|
|||
|
|
/**********************************************************************************************************************
|
|||
|
|
* INCLUDES
|
|||
|
|
*********************************************************************************************************************/
|
|||
|
|
# include "Compiler_Cfg.h"
|
|||
|
|
|
|||
|
|
/**********************************************************************************************************************
|
|||
|
|
* GLOBAL CONSTANT MACROS
|
|||
|
|
*********************************************************************************************************************/
|
|||
|
|
/* ##V_CFG_MANAGEMENT ##CQProject : CommonAsr_Arm32 CQComponent : Impl_CompAbstract_LlvmTexasInstruments */
|
|||
|
|
#define COMMONASR_ARM32_IMPL_COMPABSTRACT_VERSION 0x0101
|
|||
|
|
#define COMMONASR_ARM32_IMPL_COMPABSTRACT_RELEASE_VERSION 0x00
|
|||
|
|
|
|||
|
|
#define COMPILER_VENDOR_ID 30u /* Vendor ID of Vector */
|
|||
|
|
#define COMPILER_MODULE_ID 198u /* 198 is the ID of compiler abstraction */
|
|||
|
|
|
|||
|
|
/* AUTOSAR Software Specification Release Version Information */
|
|||
|
|
/* AUTOSAR Release 21-11 */
|
|||
|
|
#define COMPILER_AR_RELEASE_MAJOR_VERSION (4u)
|
|||
|
|
#define COMPILER_AR_RELEASE_MINOR_VERSION (7u)
|
|||
|
|
#define COMPILER_AR_RELEASE_REVISION_VERSION (0u)
|
|||
|
|
|
|||
|
|
/* Component Version Information */
|
|||
|
|
#define COMPILER_SW_MAJOR_VERSION (1u)
|
|||
|
|
#define COMPILER_SW_MINOR_VERSION (1u)
|
|||
|
|
#define COMPILER_SW_PATCH_VERSION (1u)
|
|||
|
|
|
|||
|
|
#define _TEXASINSTRUMENTS_LLVM_C_ARM32_
|
|||
|
|
|
|||
|
|
/* AUTOMATIC used for the declaration of local pointers */
|
|||
|
|
#define AUTOMATIC
|
|||
|
|
|
|||
|
|
/* TYPEDEF shall be used within type definitions, where no memory qualifier can be specified.*/
|
|||
|
|
#define TYPEDEF
|
|||
|
|
|
|||
|
|
/* NULL_PTR define with a void pointer to zero definition*/
|
|||
|
|
#ifndef NULL_PTR
|
|||
|
|
# define NULL_PTR ((void *)0)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
/* INLINE define for abstraction of the keyword inline*/
|
|||
|
|
#ifndef INLINE
|
|||
|
|
# define INLINE __inline__
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
/* LOCAL_INLINE define for abstraction of the keyword inline in functions with "static" scope.
|
|||
|
|
Different compilers may require a different sequence of the keywords "static" and "inline"
|
|||
|
|
if this is supported at all. */
|
|||
|
|
#ifndef LOCAL_INLINE
|
|||
|
|
# define LOCAL_INLINE static __inline__
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
/* FUNC macro for the declaration and definition of functions, that ensures correct syntax of function declarations
|
|||
|
|
rettype return type of the function
|
|||
|
|
memclass classification of the function itself*/
|
|||
|
|
#define FUNC(rettype, memclass) rettype /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* FUNC_P2CONST macro for declaration and definition of functions returning a pointer to a constant, that ensures
|
|||
|
|
correct syntax of function declarations.
|
|||
|
|
rettype return type of the function
|
|||
|
|
ptrclass defines the classification of the pointer<EFBFBD>s distance
|
|||
|
|
memclass classification of the function itself*/
|
|||
|
|
#define FUNC_P2CONST(rettype, ptrclass, memclass) const rettype* /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* FUNC_P2VAR macro for the declaration and definition of functions returning a pointer to a variable, that ensures
|
|||
|
|
correct syntax of function declarations
|
|||
|
|
rettype return type of the function
|
|||
|
|
ptrclass defines the classification of the pointer<EFBFBD>s distance
|
|||
|
|
memclass classification of the function itself*/
|
|||
|
|
#define FUNC_P2VAR(rettype, ptrclass, memclass) rettype* /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* P2VAR macro for the declaration and definition of pointers in RAM, pointing to variables
|
|||
|
|
ptrtype type of the referenced variable memory class
|
|||
|
|
memclass classification of the pointer variable itself
|
|||
|
|
ptrclass defines the classification of the pointer<EFBFBD>s distance
|
|||
|
|
*/
|
|||
|
|
#define P2VAR(ptrtype, memclass, ptrclass) ptrtype* /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* P2CONST macro for the declaration and definition of pointers in RAM pointing to constants
|
|||
|
|
ptrtype type of the referenced data
|
|||
|
|
memclass classification of the pointer variable itself
|
|||
|
|
ptrclass defines the classification of the pointer distance
|
|||
|
|
*/
|
|||
|
|
#define P2CONST(ptrtype, memclass, ptrclass) const ptrtype* /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* CONSTP2VAR macro for the declaration and definition of constant pointers accessing variables
|
|||
|
|
ptrtype type of the referenced data
|
|||
|
|
memclass classification of the pointer variable itself
|
|||
|
|
ptrclass defines the classification of the pointer distance
|
|||
|
|
*/
|
|||
|
|
#define CONSTP2VAR(ptrtype, memclass, ptrclass) ptrtype* const /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* CONSTP2CONST macro for the declaration and definition of constant pointers accessing constants
|
|||
|
|
ptrtype type of the referenced data
|
|||
|
|
memclass classification of the pointer variable itself
|
|||
|
|
ptrclass defines the classification of the pointer distance
|
|||
|
|
*/
|
|||
|
|
#define CONSTP2CONST(ptrtype, memclass, ptrclass) const ptrtype* const /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* P2FUNC macro for the type definition of pointers to functions
|
|||
|
|
rettype return type of the function
|
|||
|
|
ptrclass defines the classification of the pointer distance
|
|||
|
|
fctname function name respectively name of the defined type
|
|||
|
|
*/
|
|||
|
|
#define P2FUNC(rettype, ptrclass, fctname) rettype (* fctname) /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* CONSTP2FUNC macro for the type definition of pointers to functions
|
|||
|
|
rettype return type of the function
|
|||
|
|
ptrclass defines the classification of the pointer distance
|
|||
|
|
fctname function name respectively name of the defined type
|
|||
|
|
Example (PowerPC): #define CONSTP2FUNC(rettype, ptrclass, fctname) rettype (* const fctname)
|
|||
|
|
Example (IAR, R32C): #define CONSTP2FUNC(rettype, ptrclass, fctname) rettype (ptrclass * const fctname)
|
|||
|
|
*/
|
|||
|
|
#define CONSTP2FUNC(rettype, ptrclass, fctname) rettype (* const fctname) /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* CONST macro for the declaration and definition of constants
|
|||
|
|
type type of the constant
|
|||
|
|
memclass classification of the constant itself
|
|||
|
|
*/
|
|||
|
|
#define CONST(type, memclass) const type /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/* VAR macro for the declaration and definition of variables
|
|||
|
|
vartype type of the variable
|
|||
|
|
memclass classification of the variable itself
|
|||
|
|
*/
|
|||
|
|
#define VAR(vartype, memclass) vartype /* PRQA S 3410 */ /* MD_Compiler_19.10 */
|
|||
|
|
|
|||
|
|
/**********************************************************************************************************************
|
|||
|
|
* GLOBAL FUNCTION MACROS
|
|||
|
|
*********************************************************************************************************************/
|
|||
|
|
|
|||
|
|
/**********************************************************************************************************************
|
|||
|
|
* GLOBAL DATA TYPES AND STRUCTURES
|
|||
|
|
*********************************************************************************************************************/
|
|||
|
|
|
|||
|
|
/**********************************************************************************************************************
|
|||
|
|
* GLOBAL DATA PROTOTYPES
|
|||
|
|
*********************************************************************************************************************/
|
|||
|
|
|
|||
|
|
/**********************************************************************************************************************
|
|||
|
|
* GLOBAL FUNCTION PROTOTYPES
|
|||
|
|
*********************************************************************************************************************/
|
|||
|
|
|
|||
|
|
/****************************************************************************/
|
|||
|
|
/* MISRA deviations */
|
|||
|
|
/****************************************************************************/
|
|||
|
|
/* Justification for module-specific MISRA deviations:
|
|||
|
|
MD_Compiler_19.10:
|
|||
|
|
Reason: Macro used in structures, which depend on used compiler and which do not allow brackets e.g. declaration of functions and variables.
|
|||
|
|
Risk: None atomic parameter lead to compile errors.
|
|||
|
|
Prevention: Used parameter is always atomic.
|
|||
|
|
*/
|
|||
|
|
#endif /* COMPILER_H */
|
|||
|
|
|
|||
|
|
/**********************************************************************************************************************
|
|||
|
|
* END OF FILE: Compiler.h
|
|||
|
|
*********************************************************************************************************************/
|