123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778 |
- /*==================================================================================================
- * Project : RTD AUTOSAR 4.4
- * Platform : CORTEXM
- * Peripheral :
- * Dependencies : none
- *
- * Autosar Version : 4.4.0
- * Autosar Revision : ASR_REL_4_4_REV_0000
- * Autosar Conf.Variant :
- * SW Version : 1.0.0
- * Build Version : S32K1_RTD_1_0_0_HF01_D2109_ASR_REL_4_4_REV_0000_20210907
- *
- * (c) Copyright 2020-2021 NXP Semiconductors
- * All Rights Reserved.
- *
- * NXP Confidential. This software is owned or controlled by NXP and may only be
- * used strictly in accordance with the applicable license terms. By expressly
- * accepting such terms or by downloading, installing, activating and/or otherwise
- * using the software, you are agreeing that you have read, and that you agree to
- * comply with and are bound by, such license terms. If you do not agree to be
- * bound by the applicable license terms, then you may not retain, install,
- * activate or otherwise use the software.
- ==================================================================================================*/
- /**
- * @file
- *
- * @addtogroup RTE_MODULE
- * @{
- */
- #ifdef __cplusplus
- extern "C"{
- #endif
- /*==================================================================================================
- * INCLUDE FILES
- * 1) system and project includes
- * 2) needed interfaces from external units
- * 3) internal and external interfaces from this unit
- ==================================================================================================*/
- #include "Std_Types.h"
- #include "Mcal.h"
- #include "OsIf.h"
- #include "SchM_Uart.h"
- #ifdef MCAL_TESTING_ENVIRONMENT
- #include "EUnit.h" /* EUnit Test Suite */
- #endif
- /*==================================================================================================
- * SOURCE FILE VERSION INFORMATION
- ==================================================================================================*/
- #define SCHM_UART_AR_RELEASE_MAJOR_VERSION_C 4
- #define SCHM_UART_AR_RELEASE_MINOR_VERSION_C 4
- #define SCHM_UART_AR_RELEASE_REVISION_VERSION_C 0
- #define SCHM_UART_SW_MAJOR_VERSION_C 1
- #define SCHM_UART_SW_MINOR_VERSION_C 0
- #define SCHM_UART_SW_PATCH_VERSION_C 0
- /*==================================================================================================
- * LOCAL CONSTANTS
- ==================================================================================================*/
- #ifdef MCAL_PLATFORM_ARM
- #if (MCAL_PLATFORM_ARM == MCAL_ARM_AARCH64)
- #define ISR_STATE_MASK ((uint32)0x00000002UL) /**< @brief DAIF bit I and F */
- #elif (MCAL_PLATFORM_ARM == MCAL_ARM_RARCH)
- #define ISR_STATE_MASK ((uint32)0x00000080UL) /**< @brief CPSR bit I */
- #else
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- #define ISR_STATE_MASK ((uint32)0x000000FFUL) /**< @brief BASEPRI[7:0] mask */
- #else
- #define ISR_STATE_MASK ((uint32)0x00000001UL) /**< @brief PRIMASK bit 0 */
- #endif
- #endif
- #else
- #ifdef MCAL_PLATFORM_S12
- #define ISR_STATE_MASK ((uint32)0x00000010UL) /**< @brief I bit of CCR */
- #else
- #define ISR_STATE_MASK ((uint32)0x00008000UL) /**< @brief EE bit of MSR */
- #endif
- #endif
- /*==================================================================================================
- * LOCAL MACROS
- ==================================================================================================*/
- #ifdef MCAL_PLATFORM_ARM
- #if (MCAL_PLATFORM_ARM == MCAL_ARM_AARCH64)
- #define ISR_ON(msr) (uint32)(((uint32)(msr) & (uint32)(ISR_STATE_MASK)) != (uint32)3)
- #elif (MCAL_PLATFORM_ARM == MCAL_ARM_RARCH)
- #define ISR_ON(msr) (uint32)(((uint32)(msr) & (uint32)(ISR_STATE_MASK)) != (uint32)(ISR_STATE_MASK))
- #else
- #define ISR_ON(msr) (uint32)(((uint32)(msr) & (uint32)(ISR_STATE_MASK)) == (uint32)0)
- #endif
- #else
- #ifdef MCAL_PLATFORM_S12
- #define ISR_ON(msr) (uint32)(((uint32)(msr) & (uint32)(ISR_STATE_MASK)) == (uint32)0)
- #else
- #define ISR_ON(msr) (uint32)((uint32)(msr) & (uint32)(ISR_STATE_MASK))
- #endif
- #endif
- /*==================================================================================================
- * FILE VERSION CHECKS
- ==================================================================================================*/
- /*==================================================================================================
- * LOCAL TYPEDEFS (STRUCTURES, UNIONS, ENUMS)
- ==================================================================================================*/
- /*==================================================================================================
- * LOCAL VARIABLES
- ==================================================================================================*/
- #define RTE_START_SEC_VAR_CLEARED_32_NO_CACHEABLE
- #include "Rte_MemMap.h"
- static volatile uint32 msr_UART_EXCLUSIVE_AREA_00[NUMBER_OF_CORES];
- static volatile uint32 reentry_guard_UART_EXCLUSIVE_AREA_00[NUMBER_OF_CORES];
- static volatile uint32 msr_UART_EXCLUSIVE_AREA_01[NUMBER_OF_CORES];
- static volatile uint32 reentry_guard_UART_EXCLUSIVE_AREA_01[NUMBER_OF_CORES];
- static volatile uint32 msr_UART_EXCLUSIVE_AREA_02[NUMBER_OF_CORES];
- static volatile uint32 reentry_guard_UART_EXCLUSIVE_AREA_02[NUMBER_OF_CORES];
- static volatile uint32 msr_UART_EXCLUSIVE_AREA_03[NUMBER_OF_CORES];
- static volatile uint32 reentry_guard_UART_EXCLUSIVE_AREA_03[NUMBER_OF_CORES];
- static volatile uint32 msr_UART_EXCLUSIVE_AREA_04[NUMBER_OF_CORES];
- static volatile uint32 reentry_guard_UART_EXCLUSIVE_AREA_04[NUMBER_OF_CORES];
- static volatile uint32 msr_UART_EXCLUSIVE_AREA_05[NUMBER_OF_CORES];
- static volatile uint32 reentry_guard_UART_EXCLUSIVE_AREA_05[NUMBER_OF_CORES];
- static volatile uint32 msr_UART_EXCLUSIVE_AREA_06[NUMBER_OF_CORES];
- static volatile uint32 reentry_guard_UART_EXCLUSIVE_AREA_06[NUMBER_OF_CORES];
- static volatile uint32 msr_UART_EXCLUSIVE_AREA_07[NUMBER_OF_CORES];
- static volatile uint32 reentry_guard_UART_EXCLUSIVE_AREA_07[NUMBER_OF_CORES];
- static volatile uint32 msr_UART_EXCLUSIVE_AREA_08[NUMBER_OF_CORES];
- static volatile uint32 reentry_guard_UART_EXCLUSIVE_AREA_08[NUMBER_OF_CORES];
- #define RTE_STOP_SEC_VAR_CLEARED_32_NO_CACHEABLE
- #include "Rte_MemMap.h"
- /*==================================================================================================
- * GLOBAL CONSTANTS
- ==================================================================================================*/
- /*==================================================================================================
- * GLOBAL VARIABLES
- ==================================================================================================*/
- /*==================================================================================================
- * LOCAL FUNCTION PROTOTYPES
- ==================================================================================================*/
- #ifndef _COSMIC_C_S32K1XX_
- /*================================================================================================*/
- /**
- * @brief This function returns the MSR register value (32 bits).
- * @details This function returns the MSR register value (32 bits).
- *
- * @param[in] void No input parameters
- * @return uint32 msr This function returns the MSR register value (32 bits).
- *
- * @pre None
- * @post None
- *
- */
- uint32 Uart_schm_read_msr(void);
- #endif /*ifndef _COSMIC_C_S32K1XX_*/
- /*==================================================================================================
- * LOCAL FUNCTIONS
- ==================================================================================================*/
- #define RTE_START_SEC_CODE
- #include "Rte_MemMap.h"
- #if (defined(_GREENHILLS_C_S32K1XX_) || defined(_CODEWARRIOR_C_S32K1XX_))
- /*================================================================================================*/
- /**
- * @brief This macro returns the MSR register value (32 bits).
- * @details This macro function implementation returns the MSR register value in r3 (32 bits).
- *
- * @pre None
- * @post None
- *
- */
- #ifdef MCAL_PLATFORM_ARM
- #if (MCAL_PLATFORM_ARM == MCAL_ARM_AARCH64)
- ASM_KEYWORD uint32 Uart_schm_read_msr(void)
- {
- mrs x0, S3_3_c4_c2_1
- }
- #elif (MCAL_PLATFORM_ARM == MCAL_ARM_RARCH)
- ASM_KEYWORD uint32 Uart_schm_read_msr(void)
- {
- mrs r0, CPSR
- }
- #else
- ASM_KEYWORD uint32 Uart_schm_read_msr(void)
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- mrs r0, BASEPRI
- #else
- mrs r0, PRIMASK
- #endif
- }
- #endif
- #else
- #ifdef MCAL_PLATFORM_S12
- ASM_KEYWORD uint32 Uart_schm_read_msr(void)
- {
- tfr ccr, d6
- }
- #else
- ASM_KEYWORD uint32 Uart_schm_read_msr(void)
- {
- mfmsr r3
- }
- #endif
- #endif
- #endif /*#ifdef GHS||CW*/
- #ifdef _DIABDATA_C_S32K1XX_
- /**
- * @brief This function returns the MSR register value (32 bits).
- * @details This function returns the MSR register value (32 bits).
- *
- * @param[in] void No input parameters
- * @return uint32 msr This function returns the MSR register value (32 bits).
- *
- * @pre None
- * @post None
- *
- */
- #ifdef MCAL_PLATFORM_ARM
- uint32 Uart_schm_read_msr(void)
- {
- register uint32 reg_tmp;
- #if (MCAL_PLATFORM_ARM == MCAL_ARM_AARCH64)
- __asm volatile( " mrs %x0, DAIF " : "=r" (reg_tmp) );
- #elif (MCAL_PLATFORM_ARM == MCAL_ARM_RARCH)
- __asm volatile( " mrs %0, CPSR " : "=r" (reg_tmp) );
- #else
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- __asm volatile( " mrs %0, basepri " : "=r" (reg_tmp) );
- #else
- __asm volatile( " mrs %0, primask " : "=r" (reg_tmp) );
- #endif
- #endif
- return (uint32)reg_tmp;
- }
- #else
- ASM_KEYWORD uint32 Uart_schm_read_msr(void)
- {
- mfmsr r3
- }
- #endif /* MCAL_PLATFORM_ARM */
- #endif /* _DIABDATA_C_S32K1XX_*/
- #ifdef _COSMIC_C_S32K1XX_
- /*================================================================================================*/
- /**
- * @brief This function returns the MSR register value (32 bits).
- * @details This function returns the MSR register value (32 bits).
- *
- * @param[in] void No input parameters
- * @return uint32 msr This function returns the MSR register value (32 bits).
- *
- * @pre None
- * @post None
- *
- */
- #ifdef MCAL_PLATFORM_S12
- #define Uart_schm_read_msr() ASM_KEYWORD("tfr ccr, d6")
- #else
- #define Uart_schm_read_msr() ASM_KEYWORD("mfmsr r3")
- #endif
- #endif /*Cosmic compiler only*/
- #ifdef _HITECH_C_S32K1XX_
- /*================================================================================================*/
- /**
- * @brief This function returns the MSR register value (32 bits).
- * @details This function returns the MSR register value (32 bits).
- *
- * @param[in] void No input parameters
- * @return uint32 msr This function returns the MSR register value (32 bits).
- *
- * @pre None
- * @post None
- *
- */
- uint32 Uart_schm_read_msr(void)
- {
- uint32 result;
- __asm volatile("mfmsr %0" : "=r" (result) :);
- return result;
- }
- #endif /*HighTec compiler only*/
- /*================================================================================================*/
- #ifdef _LINARO_C_S32K1XX_
- /**
- * @brief This function returns the MSR register value (32 bits).
- * @details This function returns the MSR register value (32 bits).
- *
- * @param[in] void No input parameters
- * @return uint32 msr This function returns the MSR register value (32 bits).
- *
- * @pre None
- * @post None
- *
- */
- uint32 Uart_schm_read_msr(void)
- {
- register uint32 reg_tmp;
- #if (MCAL_PLATFORM_ARM == MCAL_ARM_AARCH64)
- __asm volatile( " mrs %x0, DAIF " : "=r" (reg_tmp) );
- #elif (MCAL_PLATFORM_ARM == MCAL_ARM_RARCH)
- __asm volatile( " mrs %0, CPSR " : "=r" (reg_tmp) );
- #else
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- __asm volatile( " mrs %0, basepri " : "=r" (reg_tmp) );
- #else
- __asm volatile( " mrs %0, primask " : "=r" (reg_tmp) );
- #endif
- #endif
- return (uint32)reg_tmp;
- }
- #endif /* _LINARO_C_S32K1XX_*/
- /*================================================================================================*/
- #ifdef _ARM_DS5_C_S32K1XX_
- /**
- * @brief This function returns the MSR register value (32 bits).
- * @details This function returns the MSR register value (32 bits).
- *
- * @param[in] void No input parameters
- * @return uint32 msr This function returns the MSR register value (32 bits).
- *
- * @pre None
- * @post None
- *
- */
- uint32 Uart_schm_read_msr(void)
- {
- register uint32 reg_tmp;
- #if (MCAL_PLATFORM_ARM == MCAL_ARM_AARCH64)
- __asm volatile( " mrs %x0, DAIF " : "=r" (reg_tmp) );
- #elif (MCAL_PLATFORM_ARM == MCAL_ARM_RARCH)
- __asm volatile( " mrs %0, CPSR " : "=r" (reg_tmp) );
- #else
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- __asm volatile( " mrs %0, basepri " : "=r" (reg_tmp) );
- #else
- __asm volatile( " mrs %0, primask " : "=r" (reg_tmp) );
- #endif
- #endif
- return (uint32)reg_tmp;
- }
- #endif /* _ARM_DS5_C_S32K1XX_ */
- #ifdef _IAR_C_S32K1XX_
- /**
- * @brief This function returns the MSR register value (32 bits).
- * @details This function returns the MSR register value (32 bits).
- *
- * @param[in] void No input parameters
- * @return uint32 msr This function returns the MSR register value (32 bits).
- *
- * @pre None
- * @post None
- *
- */
- uint32 Uart_schm_read_msr(void)
- {
- register uint32 reg_tmp;
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- __asm volatile( " mrs %0, basepri " : "=r" (reg_tmp) );
- #else
- __asm volatile( " mrs %0, primask " : "=r" (reg_tmp) );
- #endif
- return (uint32)reg_tmp;
- }
- #endif /* _IAR_C_S32K1XX_ */
- #define RTE_STOP_SEC_CODE
- #include "Rte_MemMap.h"
- /*==================================================================================================
- * GLOBAL FUNCTIONS
- ==================================================================================================*/
- #define RTE_START_SEC_CODE
- #include "Rte_MemMap.h"
- void SchM_Enter_Uart_UART_EXCLUSIVE_AREA_00(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- if(0UL == reentry_guard_UART_EXCLUSIVE_AREA_00[u32CoreId])
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- msr_UART_EXCLUSIVE_AREA_00[u32CoreId] = OsIf_Trusted_Call_Return(Uart_schm_read_msr);
- #else
- msr_UART_EXCLUSIVE_AREA_00[u32CoreId] = Uart_schm_read_msr(); /*read MSR (to store interrupts state)*/
- #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */
- if (ISR_ON(msr_UART_EXCLUSIVE_AREA_00[u32CoreId])) /*if MSR[EE] = 0, skip calling Suspend/Resume AllInterrupts*/
- {
- OsIf_SuspendAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- reentry_guard_UART_EXCLUSIVE_AREA_00[u32CoreId]++;
- }
- void SchM_Exit_Uart_UART_EXCLUSIVE_AREA_00(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- reentry_guard_UART_EXCLUSIVE_AREA_00[u32CoreId]--;
- if ((ISR_ON(msr_UART_EXCLUSIVE_AREA_00[u32CoreId]))&&(0UL == reentry_guard_UART_EXCLUSIVE_AREA_00[u32CoreId])) /*if interrupts were enabled*/
- {
- OsIf_ResumeAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- void SchM_Enter_Uart_UART_EXCLUSIVE_AREA_01(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- if(0UL == reentry_guard_UART_EXCLUSIVE_AREA_01[u32CoreId])
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- msr_UART_EXCLUSIVE_AREA_01[u32CoreId] = OsIf_Trusted_Call_Return(Uart_schm_read_msr);
- #else
- msr_UART_EXCLUSIVE_AREA_01[u32CoreId] = Uart_schm_read_msr(); /*read MSR (to store interrupts state)*/
- #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */
- if (ISR_ON(msr_UART_EXCLUSIVE_AREA_01[u32CoreId])) /*if MSR[EE] = 0, skip calling Suspend/Resume AllInterrupts*/
- {
- OsIf_SuspendAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- reentry_guard_UART_EXCLUSIVE_AREA_01[u32CoreId]++;
- }
- void SchM_Exit_Uart_UART_EXCLUSIVE_AREA_01(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- reentry_guard_UART_EXCLUSIVE_AREA_01[u32CoreId]--;
- if ((ISR_ON(msr_UART_EXCLUSIVE_AREA_01[u32CoreId]))&&(0UL == reentry_guard_UART_EXCLUSIVE_AREA_01[u32CoreId])) /*if interrupts were enabled*/
- {
- OsIf_ResumeAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- void SchM_Enter_Uart_UART_EXCLUSIVE_AREA_02(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- if(0UL == reentry_guard_UART_EXCLUSIVE_AREA_02[u32CoreId])
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- msr_UART_EXCLUSIVE_AREA_02[u32CoreId] = OsIf_Trusted_Call_Return(Uart_schm_read_msr);
- #else
- msr_UART_EXCLUSIVE_AREA_02[u32CoreId] = Uart_schm_read_msr(); /*read MSR (to store interrupts state)*/
- #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */
- if (ISR_ON(msr_UART_EXCLUSIVE_AREA_02[u32CoreId])) /*if MSR[EE] = 0, skip calling Suspend/Resume AllInterrupts*/
- {
- OsIf_SuspendAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- reentry_guard_UART_EXCLUSIVE_AREA_02[u32CoreId]++;
- }
- void SchM_Exit_Uart_UART_EXCLUSIVE_AREA_02(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- reentry_guard_UART_EXCLUSIVE_AREA_02[u32CoreId]--;
- if ((ISR_ON(msr_UART_EXCLUSIVE_AREA_02[u32CoreId]))&&(0UL == reentry_guard_UART_EXCLUSIVE_AREA_02[u32CoreId])) /*if interrupts were enabled*/
- {
- OsIf_ResumeAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- void SchM_Enter_Uart_UART_EXCLUSIVE_AREA_03(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- if(0UL == reentry_guard_UART_EXCLUSIVE_AREA_03[u32CoreId])
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- msr_UART_EXCLUSIVE_AREA_03[u32CoreId] = OsIf_Trusted_Call_Return(Uart_schm_read_msr);
- #else
- msr_UART_EXCLUSIVE_AREA_03[u32CoreId] = Uart_schm_read_msr(); /*read MSR (to store interrupts state)*/
- #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */
- if (ISR_ON(msr_UART_EXCLUSIVE_AREA_03[u32CoreId])) /*if MSR[EE] = 0, skip calling Suspend/Resume AllInterrupts*/
- {
- OsIf_SuspendAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- reentry_guard_UART_EXCLUSIVE_AREA_03[u32CoreId]++;
- }
- void SchM_Exit_Uart_UART_EXCLUSIVE_AREA_03(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- reentry_guard_UART_EXCLUSIVE_AREA_03[u32CoreId]--;
- if ((ISR_ON(msr_UART_EXCLUSIVE_AREA_03[u32CoreId]))&&(0UL == reentry_guard_UART_EXCLUSIVE_AREA_03[u32CoreId])) /*if interrupts were enabled*/
- {
- OsIf_ResumeAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- void SchM_Enter_Uart_UART_EXCLUSIVE_AREA_04(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- if(0UL == reentry_guard_UART_EXCLUSIVE_AREA_04[u32CoreId])
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- msr_UART_EXCLUSIVE_AREA_04[u32CoreId] = OsIf_Trusted_Call_Return(Uart_schm_read_msr);
- #else
- msr_UART_EXCLUSIVE_AREA_04[u32CoreId] = Uart_schm_read_msr(); /*read MSR (to store interrupts state)*/
- #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */
- if (ISR_ON(msr_UART_EXCLUSIVE_AREA_04[u32CoreId])) /*if MSR[EE] = 0, skip calling Suspend/Resume AllInterrupts*/
- {
- OsIf_SuspendAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- reentry_guard_UART_EXCLUSIVE_AREA_04[u32CoreId]++;
- }
- void SchM_Exit_Uart_UART_EXCLUSIVE_AREA_04(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- reentry_guard_UART_EXCLUSIVE_AREA_04[u32CoreId]--;
- if ((ISR_ON(msr_UART_EXCLUSIVE_AREA_04[u32CoreId]))&&(0UL == reentry_guard_UART_EXCLUSIVE_AREA_04[u32CoreId])) /*if interrupts were enabled*/
- {
- OsIf_ResumeAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- void SchM_Enter_Uart_UART_EXCLUSIVE_AREA_05(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- if(0UL == reentry_guard_UART_EXCLUSIVE_AREA_05[u32CoreId])
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- msr_UART_EXCLUSIVE_AREA_05[u32CoreId] = OsIf_Trusted_Call_Return(Uart_schm_read_msr);
- #else
- msr_UART_EXCLUSIVE_AREA_05[u32CoreId] = Uart_schm_read_msr(); /*read MSR (to store interrupts state)*/
- #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */
- if (ISR_ON(msr_UART_EXCLUSIVE_AREA_05[u32CoreId])) /*if MSR[EE] = 0, skip calling Suspend/Resume AllInterrupts*/
- {
- OsIf_SuspendAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- reentry_guard_UART_EXCLUSIVE_AREA_05[u32CoreId]++;
- }
- void SchM_Exit_Uart_UART_EXCLUSIVE_AREA_05(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- reentry_guard_UART_EXCLUSIVE_AREA_05[u32CoreId]--;
- if ((ISR_ON(msr_UART_EXCLUSIVE_AREA_05[u32CoreId]))&&(0UL == reentry_guard_UART_EXCLUSIVE_AREA_05[u32CoreId])) /*if interrupts were enabled*/
- {
- OsIf_ResumeAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- void SchM_Enter_Uart_UART_EXCLUSIVE_AREA_06(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- if(0UL == reentry_guard_UART_EXCLUSIVE_AREA_06[u32CoreId])
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- msr_UART_EXCLUSIVE_AREA_06[u32CoreId] = OsIf_Trusted_Call_Return(Uart_schm_read_msr);
- #else
- msr_UART_EXCLUSIVE_AREA_06[u32CoreId] = Uart_schm_read_msr(); /*read MSR (to store interrupts state)*/
- #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */
- if (ISR_ON(msr_UART_EXCLUSIVE_AREA_06[u32CoreId])) /*if MSR[EE] = 0, skip calling Suspend/Resume AllInterrupts*/
- {
- OsIf_SuspendAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- reentry_guard_UART_EXCLUSIVE_AREA_06[u32CoreId]++;
- }
- void SchM_Exit_Uart_UART_EXCLUSIVE_AREA_06(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- reentry_guard_UART_EXCLUSIVE_AREA_06[u32CoreId]--;
- if ((ISR_ON(msr_UART_EXCLUSIVE_AREA_06[u32CoreId]))&&(0UL == reentry_guard_UART_EXCLUSIVE_AREA_06[u32CoreId])) /*if interrupts were enabled*/
- {
- OsIf_ResumeAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- void SchM_Enter_Uart_UART_EXCLUSIVE_AREA_07(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- if(0UL == reentry_guard_UART_EXCLUSIVE_AREA_07[u32CoreId])
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- msr_UART_EXCLUSIVE_AREA_07[u32CoreId] = OsIf_Trusted_Call_Return(Uart_schm_read_msr);
- #else
- msr_UART_EXCLUSIVE_AREA_07[u32CoreId] = Uart_schm_read_msr(); /*read MSR (to store interrupts state)*/
- #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */
- if (ISR_ON(msr_UART_EXCLUSIVE_AREA_07[u32CoreId])) /*if MSR[EE] = 0, skip calling Suspend/Resume AllInterrupts*/
- {
- OsIf_SuspendAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- reentry_guard_UART_EXCLUSIVE_AREA_07[u32CoreId]++;
- }
- void SchM_Exit_Uart_UART_EXCLUSIVE_AREA_07(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- reentry_guard_UART_EXCLUSIVE_AREA_07[u32CoreId]--;
- if ((ISR_ON(msr_UART_EXCLUSIVE_AREA_07[u32CoreId]))&&(0UL == reentry_guard_UART_EXCLUSIVE_AREA_07[u32CoreId])) /*if interrupts were enabled*/
- {
- OsIf_ResumeAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- void SchM_Enter_Uart_UART_EXCLUSIVE_AREA_08(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- if(0UL == reentry_guard_UART_EXCLUSIVE_AREA_08[u32CoreId])
- {
- #if ((defined MCAL_ENABLE_USER_MODE_SUPPORT)&&(!defined MCAL_PLATFORM_ARM_M0PLUS))
- msr_UART_EXCLUSIVE_AREA_08[u32CoreId] = OsIf_Trusted_Call_Return(Uart_schm_read_msr);
- #else
- msr_UART_EXCLUSIVE_AREA_08[u32CoreId] = Uart_schm_read_msr(); /*read MSR (to store interrupts state)*/
- #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */
- if (ISR_ON(msr_UART_EXCLUSIVE_AREA_08[u32CoreId])) /*if MSR[EE] = 0, skip calling Suspend/Resume AllInterrupts*/
- {
- OsIf_SuspendAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- reentry_guard_UART_EXCLUSIVE_AREA_08[u32CoreId]++;
- }
- void SchM_Exit_Uart_UART_EXCLUSIVE_AREA_08(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- reentry_guard_UART_EXCLUSIVE_AREA_08[u32CoreId]--;
- if ((ISR_ON(msr_UART_EXCLUSIVE_AREA_08[u32CoreId]))&&(0UL == reentry_guard_UART_EXCLUSIVE_AREA_08[u32CoreId])) /*if interrupts were enabled*/
- {
- OsIf_ResumeAllInterrupts();
- #ifdef _ARM_DS5_C_S32K1XX_
- ASM_KEYWORD(" nop ");/* Compiler fix - forces the CSPID instruction to be generated with -02, -Ospace are selected*/
- #endif
- }
- }
- #ifdef MCAL_TESTING_ENVIRONMENT
- /**
- @brief This function checks that all entered exclusive areas were also exited.
- @details This function checks that all entered exclusive areas were also exited. The check
- is done by verifying that all reentry_guard_* static variables are back to the
- zero value.
-
- @param[in] void No input parameters
- @return void This function does not return a value. Test asserts are used instead.
- @pre None
- @post None
- @remarks Covers
- @remarks Implements
- */
- void SchM_Check_uart(void)
- {
- uint32 u32CoreId = (uint32)OsIf_GetCoreID();
- EU_ASSERT(0UL == reentry_guard_UART_EXCLUSIVE_AREA_00[u32CoreId]);
- reentry_guard_UART_EXCLUSIVE_AREA_00[u32CoreId] = 0UL; /*reset reentry_guard_UART_EXCLUSIVE_AREA_00 for the next test in the suite*/
- EU_ASSERT(0UL == reentry_guard_UART_EXCLUSIVE_AREA_01[u32CoreId]);
- reentry_guard_UART_EXCLUSIVE_AREA_01[u32CoreId] = 0UL; /*reset reentry_guard_UART_EXCLUSIVE_AREA_01 for the next test in the suite*/
- EU_ASSERT(0UL == reentry_guard_UART_EXCLUSIVE_AREA_02[u32CoreId]);
- reentry_guard_UART_EXCLUSIVE_AREA_02[u32CoreId] = 0UL; /*reset reentry_guard_UART_EXCLUSIVE_AREA_02 for the next test in the suite*/
- EU_ASSERT(0UL == reentry_guard_UART_EXCLUSIVE_AREA_03[u32CoreId]);
- reentry_guard_UART_EXCLUSIVE_AREA_03[u32CoreId] = 0UL; /*reset reentry_guard_UART_EXCLUSIVE_AREA_03 for the next test in the suite*/
- EU_ASSERT(0UL == reentry_guard_UART_EXCLUSIVE_AREA_04[u32CoreId]);
- reentry_guard_UART_EXCLUSIVE_AREA_04[u32CoreId] = 0UL; /*reset reentry_guard_UART_EXCLUSIVE_AREA_04 for the next test in the suite*/
- EU_ASSERT(0UL == reentry_guard_UART_EXCLUSIVE_AREA_05[u32CoreId]);
- reentry_guard_UART_EXCLUSIVE_AREA_05[u32CoreId] = 0UL; /*reset reentry_guard_UART_EXCLUSIVE_AREA_05 for the next test in the suite*/
- EU_ASSERT(0UL == reentry_guard_UART_EXCLUSIVE_AREA_06[u32CoreId]);
- reentry_guard_UART_EXCLUSIVE_AREA_06[u32CoreId] = 0UL; /*reset reentry_guard_UART_EXCLUSIVE_AREA_06 for the next test in the suite*/
- EU_ASSERT(0UL == reentry_guard_UART_EXCLUSIVE_AREA_07[u32CoreId]);
- reentry_guard_UART_EXCLUSIVE_AREA_07[u32CoreId] = 0UL; /*reset reentry_guard_UART_EXCLUSIVE_AREA_07 for the next test in the suite*/
- EU_ASSERT(0UL == reentry_guard_UART_EXCLUSIVE_AREA_08[u32CoreId]);
- reentry_guard_UART_EXCLUSIVE_AREA_08[u32CoreId] = 0UL; /*reset reentry_guard_UART_EXCLUSIVE_AREA_08 for the next test in the suite*/
- }
- #endif /*MCAL_TESTING_ENVIRONMENT*/
- #define RTE_STOP_SEC_CODE
- #include "Rte_MemMap.h"
- #ifdef __cplusplus
- }
- #endif
- /** @} */
|