]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Total cleanup of Disable/Enable interrupts, removed Enter/exitCriticalSection and...
authorjcar <devnull@localhost>
Tue, 12 Jul 2011 11:05:31 +0000 (13:05 +0200)
committerjcar <devnull@localhost>
Tue, 12 Jul 2011 11:05:31 +0000 (13:05 +0200)
29 files changed:
arch/arm/arm_cm3/drivers/Can.c
arch/arm/arm_cm3/drivers/Mcu.c
arch/arm/arm_cm3/kernel/arch_krn.sx
arch/arm/arm_cm3/kernel/irq.c
arch/arm/arm_cr4/drivers/Can.c
arch/arm/arm_cr4/drivers/Mcu.c
arch/generic/linux/drivers/McuExtensionsStub.c
arch/hc1x/hcs12d/drivers/Can.c
arch/hc1x/hcs12d/drivers/Mcu.c
arch/ppc/mpc55xx/drivers/Can.c
arch/ppc/mpc55xx/drivers/Lin.c
arch/ppc/mpc55xx/drivers/Mcu.c
arch/ppc/mpc55xx/drivers/Port.c
arch/ppc/mpc55xx/drivers/Wdg.c
boards/linux/build_config.mk
common/sleep.c
communication/Com/Com_Com.c
communication/PduR/PduR.c
diagnostic/Dcm/Dcm.c
diagnostic/Dcm/Dcm_Dsl.c
diagnostic/Dem/Dem.c
include/Mcu.h
include/McuExtensions.h [deleted file]
include/arm/Cpu.h
include/generic/Cpu.h
include/hc1x/Cpu.h
include/ppc/Cpu.h
memory/Ea/Ea.c
system/kernel/event.c

index cbb86718bea5b28a31a2c188f57a08b25f85f771..b66b007774c2e32083917419cfbd0bfeb2aae5df 100644 (file)
@@ -617,6 +617,7 @@ void Can_InitController( uint8 controller, const Can_ControllerConfigType *confi
 \r
 \r
 Can_ReturnType Can_SetControllerMode( uint8 controller, Can_StateTransitionType transition ) {\r
+  imask_t state;
   CAN_HW_t *canHw;\r
   Can_ReturnType rv = CAN_OK;\r
   VALIDATE( (controller < GET_CONTROLLER_CNT()), 0x3, CAN_E_PARAM_CONTROLLER );\r
@@ -630,11 +631,11 @@ Can_ReturnType Can_SetControllerMode( uint8 controller, Can_StateTransitionType
   {\r
   case CAN_T_START:\r
     canUnit->state = CANIF_CS_STARTED;\r
-    imask_t state = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
     if (canUnit->lock_cnt == 0){   // REQ CAN196\r
       Can_EnableControllerInterrupts(controller);
     }\r
-    McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);
     break;\r
   case CAN_T_WAKEUP:
        VALIDATE(canUnit->state == CANIF_CS_SLEEP, 0x3, CAN_E_TRANSITION);
@@ -663,6 +664,7 @@ Can_ReturnType Can_SetControllerMode( uint8 controller, Can_StateTransitionType
 \r
 void Can_DisableControllerInterrupts( uint8 controller )\r
 {\r
+  imask_t state;
   Can_UnitType *canUnit;\r
   CAN_HW_t *canHw;\r
 \r
@@ -672,16 +674,16 @@ void Can_DisableControllerInterrupts( uint8 controller )
 \r
   VALIDATE_NO_RV( (canUnit->state!=CANIF_CS_UNINIT), 0x4, CAN_E_UNINIT );\r
 \r
-  imask_t state = McuE_EnterCriticalSection();\r
+  Irq_Save(state);
   if(canUnit->lock_cnt > 0 )\r
   {\r
     // Interrupts already disabled\r
     canUnit->lock_cnt++;\r
-    McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);
     return;\r
   }\r
   canUnit->lock_cnt++;\r
-  McuE_ExitCriticalSection(state);\r
+  Irq_Restore(state);
 \r
   /* Don't try to be intelligent, turn everything off */\r
   canHw = GetController(controller);\r
@@ -693,7 +695,8 @@ void Can_DisableControllerInterrupts( uint8 controller )
   CAN_ITConfig(canHw, CAN_IT_FMP0 | CAN_IT_BOF | CAN_IT_ERR | CAN_IT_WKU, DISABLE);
 }\r
 \r
-void Can_EnableControllerInterrupts( uint8 controller ) {\r
+void Can_EnableControllerInterrupts( uint8 controller ) {
+  imask_t state;\r
   Can_UnitType *canUnit;\r
   CAN_HW_t *canHw;\r
   const Can_ControllerConfigType *canHwConfig;\r
@@ -703,18 +706,18 @@ void Can_EnableControllerInterrupts( uint8 controller ) {
 \r
   VALIDATE_NO_RV( (canUnit->state!=CANIF_CS_UNINIT), 0x5, CAN_E_UNINIT );\r
 \r
-  imask_t state = McuE_EnterCriticalSection();\r
+  Irq_Save(state);
   if( canUnit->lock_cnt > 1 )\r
   {\r
     // IRQ should still be disabled so just decrement counter\r
     canUnit->lock_cnt--;\r
-    McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);
     return;\r
   } else if (canUnit->lock_cnt == 1)\r
   {\r
     canUnit->lock_cnt = 0;\r
   }\r
-  McuE_ExitCriticalSection(state);\r
+  Irq_Restore(state);
 \r
   canHw = GetController(controller);\r
 \r
@@ -744,7 +747,7 @@ Can_ReturnType Can_Write( Can_Arc_HTHType hth, Can_PduType *pduInfo ) {
   const Can_HardwareObjectType *hohObj;\r
   const Can_ControllerConfigType *canHwConfig;
   uint32 controller;\r
-  uint32 oldMsr;\r
+  imask_t state;\r
 
   VALIDATE( (Can_Global.initRun == CAN_READY), 0x6, CAN_E_UNINIT );\r
   VALIDATE( (pduInfo != NULL), 0x6, CAN_E_PARAM_POINTER );\r
@@ -758,7 +761,7 @@ Can_ReturnType Can_Write( Can_Arc_HTHType hth, Can_PduType *pduInfo ) {
   Can_UnitType *canUnit = GET_PRIVATE_DATA(controller);\r
 \r
   canHw = GetController(controller);\r
-  oldMsr = McuE_EnterCriticalSection();\r
+  Irq_Save(state);
 
   CanTxMsg TxMessage;
 
@@ -792,7 +795,7 @@ Can_ReturnType Can_Write( Can_Arc_HTHType hth, Can_PduType *pduInfo ) {
   } else {\r
     rv = CAN_BUSY;\r
   }\r
-  McuE_ExitCriticalSection(oldMsr);\r
+  Irq_Restore(state);
 \r
   return rv;\r
 }\r
index 59b96fcc4a144f34de389984e0438a6b388b36b4..075ed34cf1d6879ca954962c630ee8b305125053 100644 (file)
@@ -527,18 +527,6 @@ uint32_t McuE_GetSystemClock(void)
   return f_sys;\r
 }\r
 \r
-imask_t McuE_EnterCriticalSection()\r
-{\r
-       uint32_t val;\r
-       Irq_Save(val);\r
-       return val;\r
-}\r
-\r
-void McuE_ExitCriticalSection(uint32_t old_state)\r
-{\r
-       Irq_Restore(old_state);\r
-}\r
-\r
 /**\r
  * Get the peripheral clock in Hz for a specific device\r
  */\r
@@ -573,13 +561,3 @@ void Mcu_ConfigureFlash(void)
 {\r
 \r
 }\r
-\r
-void McuE_EnableInterrupts(void)\r
-{\r
-  Irq_Enable();\r
-}\r
-\r
-void McuE_DisableInterrupts(void)\r
-{\r
-  Irq_Disable();\r
-}\r
index d51f8804f36fca8b8e4ca3f5779ca31300eb35c3..461258cdcd35b8acc1116949eb50c2e419b1fd62 100644 (file)
@@ -79,7 +79,6 @@ arggg:
        bl      Os_Isr_cm3\r
        IRQ_ENABLE()\r
 \r
-/*    bl      Irq_Entry */\r
     mov     sp, r6                     // pop from returned stack\r
 \r
        /* Do a normal exception return */\r
index 3886cf815afed7909b11b8cfbc90fe063b12b298..1977ce794cc9f996eb61218f8ba0331d52ab844e 100644 (file)
@@ -68,50 +68,6 @@ void Irq_EOI( void ) {
 
 #define ICSR_VECTACTIVE                0x1ff
 
-/**
- * Get Active ISR number field.
- * You can subtract 16 from the VECTACTIVE field to index into the Interrupt
- * Clear/Set Enable, Interrupt Clear Pending/SetPending and Interrupt Priority
- * Registers. INTISR[0] has vector number 16.
- *
- */
-#if 0
-static uint32_t NVIC_GetActiveVector( void) {
-       return (SCB->ICSR &  ICSR_VECTACTIVE);
-}
-#endif
-
-
-#if 0
-/**
- *
- * @param stack_p Ptr to the current stack.
- *
- * The stack holds C, NVGPR, VGPR and the EXC frame.
- *
- */
-void *Irq_Entry( void *stack_p ){
-       uint32_t vector = 0;
-
-       Irq_Disable();
-
-       /* 0. Set the default handler here....
-        * 1. Grab the vector from the interrupt controller
-        *    INT_CTRL_ST[VECTACTIVE]
-        * 2. Irq_VectorTable[vector] is odd -> ISR1
-        *    Irq_VectorTable[vector] is even-> ISR2
-        */
-
-
-       vector = NVIC_GetActiveVector();
-
-       Os_Isr_cm3((void *)Irq_VectorTable[vector]);
-       Irq_Enable();
-
-       return stack_p;
-}
-#endif
-
 
 /**
  * NVIC prio have priority 0-31, 0-highest priority.
index 5cf7cf5a39eb288143c5053818747f003c789cad..cbec61978d468eeac6e947d51a1cb20f2cc60d1b 100644 (file)
@@ -376,6 +376,7 @@ void Can_Init(const Can_ConfigType *Config)
     uint8                     MsgNr;\r
     uint32                    ErrCounter;\r
     uint32                    Eob;\r
+    imask_t state;\r
 \r
 /* DET Error Check */\r
 #if(CAN_DEV_ERROR_DETECT == STD_ON)\r
@@ -391,7 +392,7 @@ void Can_Init(const Can_ConfigType *Config)
     }\r
 #endif \r
 \r
-    imask_t i_state = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
 \r
     // TODO This should be used instead of other variables in the Can_Lcfg file.\r
     CurConfig        = Config;\r
@@ -537,7 +538,7 @@ void Can_Init(const Can_ConfigType *Config)
     ModuleState = CAN_READY;\r
 #endif\r
 \r
-    McuE_ExitCriticalSection(i_state);\r
+    Irq_Restore(state);\r
 \r
 }\r
 \r
@@ -547,6 +548,7 @@ void Can_InitController(uint8 Controller, const Can_ControllerConfigType* Config
 {\r
     uint8   MsgNr;\r
     uint32  ErrCounter;\r
+    imask_t state;\r
 \r
 #if(CAN_DEV_ERROR_DETECT == STD_ON)\r
     if(Config == NULL)\r
@@ -571,7 +573,7 @@ void Can_InitController(uint8 Controller, const Can_ControllerConfigType* Config
     }\r
 #endif \r
 \r
-    imask_t i_state = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
 \r
     ErrCounter = CAN_TIMEOUT_DURATION;\r
     \r
@@ -616,7 +618,7 @@ void Can_InitController(uint8 Controller, const Can_ControllerConfigType* Config
     /* Clear CCE Bit */\r
     CanRegs[Controller]->CTL &= ~0x00000040;\r
 \r
-    McuE_ExitCriticalSection(i_state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 \r
@@ -794,6 +796,7 @@ Can_ReturnType Can_Write(Can_Arc_HTHType Hth, Can_PduType *PduInfo)
     Can_PduType           *CurPduArrayPtr;\r
     uint8                 *CurCancelRqstPtr;\r
     uint8                 *CurTxRqstPtr;\r
+    imask_t state;\r
 \r
     CurSduPtr       = PduInfo->sdu;\r
     \r
@@ -866,7 +869,7 @@ Can_ReturnType Can_Write(Can_Arc_HTHType Hth, Can_PduType *PduInfo)
     DCAN_WAIT_UNTIL_NOT_BUSY(ControllerId, IfRegId);\r
 \r
     // We cannot allow an interrupt or other task to play with the COM, MC and ARB registers here.\r
-    imask_t i_state = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
 \r
 \r
     /* Set NewDat, TxIE (dep on ControllerConfig), TxRqst, EoB and DLC */\r
@@ -895,7 +898,7 @@ Can_ReturnType Can_Write(Can_Arc_HTHType Hth, Can_PduType *PduInfo)
     \r
     IfRegId ^= 1;\r
        \r
-    McuE_ExitCriticalSection(i_state);\r
+    Irq_Restore(state);\r
     return CAN_OK;\r
 }\r
 \r
index 486fe43f6cc9ba51030da638bbb041ec45641ff1..18546226f76b73cb98b1d272741462aa05e4d6fe 100644 (file)
@@ -476,18 +476,6 @@ uint32_t McuE_GetSystemClock(void)
   return f_sys;\r
 }\r
 \r
-imask_t McuE_EnterCriticalSection()\r
-{\r
-       imask_t state;\r
-       Irq_Save(state);\r
-       return state;\r
-}\r
-\r
-void McuE_ExitCriticalSection(uint32_t old_state)\r
-{\r
-       Irq_Restore(old_state);\r
-}\r
-\r
 /**\r
  * Get the peripheral clock in Hz for a specific device\r
  */\r
index 11f24765c9294dde49ac6172fbc5c35f954f7014..d3f5a12faa99758192ecc4ed3fc22c9249232e86 100644 (file)
@@ -1,10 +1 @@
 \r
-#include "McuExtensions.h"\r
-\r
-imask_t McuE_EnterCriticalSection(void) {\r
-       return 0;\r
-}\r
-\r
-void McuE_ExitCriticalSection(imask_t old_state) {\r
-         (void)old_state; // Nothing to be done. This is just to avoid PC-Lint warning.\r
-}\r
index 1cfac59a5c364f1281ffc781b60ac32c64ec7221..0da13c6a05a7be50379d12a79c8fda295f2aeac9 100644 (file)
@@ -760,6 +760,7 @@ void Can_InitController( uint8 controller, const Can_ControllerConfigType *confi
 \r
 \r
 Can_ReturnType Can_SetControllerMode( uint8 controller, Can_StateTransitionType transition ) {\r
+  imask_t state;\r
   CAN_HW_t *canHw;\r
   Can_ReturnType rv = CAN_OK;\r
   VALIDATE( (controller < GET_CONTROLLER_CNT()), 0x3, CAN_E_PARAM_CONTROLLER );\r
@@ -773,11 +774,11 @@ Can_ReturnType Can_SetControllerMode( uint8 controller, Can_StateTransitionType
   {\r
   case CAN_T_START:\r
     canUnit->state = CANIF_CS_STARTED;\r
-    imask_t state = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
     if (canUnit->lock_cnt == 0){   // REQ CAN196\r
       Can_EnableControllerInterrupts(controller);\r
     }\r
-    McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
     break;\r
   case CAN_T_WAKEUP:\r
        VALIDATE(canUnit->state == CANIF_CS_SLEEP, 0x3, CAN_E_TRANSITION);\r
@@ -809,6 +810,7 @@ Can_ReturnType Can_SetControllerMode( uint8 controller, Can_StateTransitionType
 \r
 void Can_DisableControllerInterrupts( uint8 controller )\r
 {\r
+  imask_t state;\r
   Can_UnitType *canUnit;\r
   CAN_HW_t *canHw;\r
 \r
@@ -818,16 +820,16 @@ void Can_DisableControllerInterrupts( uint8 controller )
 \r
   VALIDATE_NO_RV( (canUnit->state!=CANIF_CS_UNINIT), 0x4, CAN_E_UNINIT );\r
 \r
-  imask_t state = McuE_EnterCriticalSection();\r
+  Irq_Save(state);\r
   if(canUnit->lock_cnt > 0 )\r
   {\r
     // Interrupts already disabled\r
     canUnit->lock_cnt++;\r
-    McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
     return;\r
   }\r
   canUnit->lock_cnt++;\r
-  McuE_ExitCriticalSection(state);\r
+  Irq_Restore(state);\r
 \r
   /* Don't try to be intelligent, turn everything off */\r
   canHw = GetController(controller);\r
@@ -840,6 +842,7 @@ void Can_DisableControllerInterrupts( uint8 controller )
  }\r
 \r
 void Can_EnableControllerInterrupts( uint8 controller ) {\r
+  imask_t state;\r
   Can_UnitType *canUnit;\r
   CAN_HW_t *canHw;\r
   const Can_ControllerConfigType *canHwConfig;\r
@@ -849,18 +852,18 @@ void Can_EnableControllerInterrupts( uint8 controller ) {
 \r
   VALIDATE_NO_RV( (canUnit->state!=CANIF_CS_UNINIT), 0x5, CAN_E_UNINIT );\r
 \r
-  imask_t state = McuE_EnterCriticalSection();\r
+  Irq_Save(state);\r
   if( canUnit->lock_cnt > 1 )\r
   {\r
     // IRQ should still be disabled so just decrement counter\r
     canUnit->lock_cnt--;\r
-    McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
     return;\r
   } else if (canUnit->lock_cnt == 1)\r
   {\r
     canUnit->lock_cnt = 0;\r
   }\r
-  McuE_ExitCriticalSection(state);\r
+  Irq_Restore(state);\r
 \r
   canHw = GetController(controller);\r
 \r
@@ -912,7 +915,7 @@ Can_ReturnType Can_Write( Can_Arc_HTHType hth, Can_PduType *pduInfo ) {
   const Can_HardwareObjectType *hohObj;\r
   const Can_ControllerConfigType *canHwConfig;\r
   uint32 controller;\r
-  uint32 oldMsr;\r
+  imask_t state;\r
   IdrType idr;\r
 \r
   VALIDATE( (Can_Global.initRun == CAN_READY), 0x6, CAN_E_UNINIT );\r
@@ -927,7 +930,7 @@ Can_ReturnType Can_Write( Can_Arc_HTHType hth, Can_PduType *pduInfo ) {
   Can_UnitType *canUnit = GET_PRIVATE_DATA(controller);\r
 \r
   canHw = GetController(controller);\r
-  oldMsr = McuE_EnterCriticalSection();\r
+  Irq_Save(state);\r
 \r
   // check for any free box\r
   if((canHw->TFLG & BM_TX0) == BM_TX0) {\r
@@ -962,7 +965,7 @@ Can_ReturnType Can_Write( Can_Arc_HTHType hth, Can_PduType *pduInfo ) {
   } else {\r
     rv = CAN_BUSY;\r
   }\r
-  McuE_ExitCriticalSection(oldMsr);\r
+  Irq_Restore(state);\r
 \r
   return rv;\r
 }\r
index 1bfc62a85642c8be463921a9c1fc34a27dc93394..32a4730f44da4693e486046b3ee22d43b23fa953 100644 (file)
@@ -307,26 +307,6 @@ uint32_t McuE_GetSystemClock(void)
   return f_sys;\r
 }\r
 \r
-imask_t McuE_EnterCriticalSection()\r
-{\r
-#if 0\r
-  uint32_t msr = get_msr();\r
-  Irq_Disable();\r
-  return msr;\r
-#endif\r
-  return 0;\r
-}\r
-\r
-void McuE_ExitCriticalSection(uint32_t old_state)\r
-{\r
-#if 0\r
-  set_msr(old_state);\r
-#endif\r
-}\r
-\r
-\r
-\r
-\r
 /**\r
  * Function to setup the internal flash for optimal performance\r
  */\r
index 16d0d7a375a761dbb2015f8ff9d6b2624fa91913..e05e004e34bc1b9ecd3329c5fbf24d08c94a667a 100644 (file)
@@ -1006,6 +1006,7 @@ void Can_InitController( uint8 controller, const Can_ControllerConfigType *confi
 \r
 Can_ReturnType Can_SetControllerMode( uint8 controller, Can_StateTransitionType transition ) {\r
   flexcan_t *canHw;\r
+  imask_t state;\r
   Can_ReturnType rv = CAN_OK;\r
   VALIDATE( (controller < GET_CONTROLLER_CNT()), 0x3, CAN_E_PARAM_CONTROLLER );\r
 \r
@@ -1020,12 +1021,12 @@ Can_ReturnType Can_SetControllerMode( uint8 controller, Can_StateTransitionType
     canHw->MCR.B.FRZ = 0;\r
     canHw->MCR.B.HALT = 0;\r
     canUnit->state = CANIF_CS_STARTED;\r
-    imask_t state = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
     if (canUnit->lock_cnt == 0)   // REQ CAN196\r
     {\r
       Can_EnableControllerInterrupts(controller);\r
     }\r
-    McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
     break;\r
   case CAN_T_WAKEUP:  //CAN267\r
   case CAN_T_SLEEP:  //CAN258, CAN290\r
@@ -1051,6 +1052,7 @@ void Can_DisableControllerInterrupts( uint8 controller )
 {\r
   Can_UnitType *canUnit;\r
   flexcan_t *canHw;\r
+  imask_t state;\r
 \r
   VALIDATE_NO_RV( (controller < GET_CONTROLLER_CNT()), 0x4, CAN_E_PARAM_CONTROLLER );\r
 \r
@@ -1058,16 +1060,16 @@ void Can_DisableControllerInterrupts( uint8 controller )
 \r
   VALIDATE_NO_RV( (canUnit->state!=CANIF_CS_UNINIT), 0x4, CAN_E_UNINIT );\r
 \r
-  imask_t state = McuE_EnterCriticalSection();\r
+  Irq_Save(state);\r
   if(canUnit->lock_cnt > 0 )\r
   {\r
     // Interrupts already disabled\r
     canUnit->lock_cnt++;\r
-    McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
     return;\r
   }\r
   canUnit->lock_cnt++;\r
-  McuE_ExitCriticalSection(state);\r
+  Irq_Restore(state);\r
 \r
   /* Don't try to be intelligent, turn everything off */\r
   canHw = GET_CONTROLLER(controller);\r
@@ -1087,6 +1089,7 @@ void Can_DisableControllerInterrupts( uint8 controller )
 void Can_EnableControllerInterrupts( uint8 controller ) {\r
   Can_UnitType *canUnit;\r
   flexcan_t *canHw;\r
+  imask_t state;\r
   const Can_ControllerConfigType *canHwConfig;\r
   VALIDATE_NO_RV( (controller < GET_CONTROLLER_CNT()), 0x5, CAN_E_PARAM_CONTROLLER );\r
 \r
@@ -1094,18 +1097,18 @@ void Can_EnableControllerInterrupts( uint8 controller ) {
 \r
   VALIDATE_NO_RV( (canUnit->state!=CANIF_CS_UNINIT), 0x5, CAN_E_UNINIT );\r
 \r
-  imask_t state = McuE_EnterCriticalSection();\r
+  Irq_Save(state);\r
   if( canUnit->lock_cnt > 1 )\r
   {\r
     // IRQ should still be disabled so just decrement counter\r
     canUnit->lock_cnt--;\r
-    McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
     return;\r
   } else if (canUnit->lock_cnt == 1)\r
   {\r
     canUnit->lock_cnt = 0;\r
   }\r
-  McuE_ExitCriticalSection(state);\r
+  Irq_Restore(state);\r
 \r
   canHw = GET_CONTROLLER(controller);\r
 \r
@@ -1145,7 +1148,7 @@ Can_ReturnType Can_Write( Can_Arc_HTHType hth, Can_PduType *pduInfo ) {
   flexcan_t *canHw;\r
   const Can_HardwareObjectType *hohObj;\r
   uint32 controller;\r
-  uint32 oldMsr;\r
+  imask_t state;\r
 \r
   VALIDATE( (Can_Global.initRun == CAN_READY), 0x6, CAN_E_UNINIT );\r
   VALIDATE( (pduInfo != NULL), 0x6, CAN_E_PARAM_POINTER );\r
@@ -1159,7 +1162,7 @@ Can_ReturnType Can_Write( Can_Arc_HTHType hth, Can_PduType *pduInfo ) {
   Can_UnitType *canUnit = GET_PRIVATE_DATA(controller);\r
 \r
   canHw = GET_CONTROLLER(controller);\r
-  oldMsr = McuE_EnterCriticalSection();\r
+  Irq_Save(state);\r
   iflag = canHw->IFRL.R & canUnit->Can_Arc_TxMbMask;\r
 \r
   // check for any free box\r
@@ -1213,7 +1216,7 @@ Can_ReturnType Can_Write( Can_Arc_HTHType hth, Can_PduType *pduInfo ) {
   } else {\r
     rv = CAN_BUSY;\r
   }\r
-  McuE_ExitCriticalSection(oldMsr);\r
+  Irq_Restore(state);\r
 \r
   return rv;\r
 }\r
index e574da427d54045fda86de2d0e1cf081554b06e5..4963f1d48a09cd819f3e596c826bee5abb3e7e45 100644 (file)
@@ -409,12 +409,13 @@ void Lin_DeInitChannel( uint8 Channel )
 \r
 Std_ReturnType Lin_SendHeader(  uint8 Channel,  Lin_PduType* PduInfoPtr )\r
 {\r
-  LinSRtype tmp;\r
-  LinLTRType tmpLtr;\r
+    LinSRtype tmp;\r
+    LinLTRType tmpLtr;\r
        volatile struct ESCI_tag * esciHw = ESCI(Channel);\r
+       imask_t state;\r
 \r
        // LIN021\r
-       imask_t state = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
        if(LinChannelStatus[Channel] == LIN_TX_BUSY || LinChannelStatus[Channel] == LIN_TX_ERROR ||\r
           LinChannelStatus[Channel] == LIN_RX_BUSY || LinChannelStatus[Channel] == LIN_RX_ERROR){\r
                LinChannelStatus[Channel]=LIN_CH_OPERATIONAL;\r
@@ -426,7 +427,7 @@ Std_ReturnType Lin_SendHeader(  uint8 Channel,  Lin_PduType* PduInfoPtr )
                // Clear flags\r
                esciHw->SR.R=0xffffffff;\r
        }\r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 \r
 \r
        VALIDATE_W_RV( (LinDriverStatus != LIN_UNINIT), LIN_SEND_HEADER_SERVICE_ID, LIN_E_UNINIT, E_NOT_OK);\r
@@ -587,12 +588,13 @@ Std_ReturnType Lin_WakeUp( uint8 Channel )
 \r
 Lin_StatusType Lin_GetStatus( uint8 Channel, uint8** Lin_SduPtr )\r
 {\r
+       imask_t state;\r
        VALIDATE_W_RV( (LinDriverStatus != LIN_UNINIT), LIN_GETSTATUS_SERVICE_ID, LIN_E_UNINIT, E_NOT_OK);\r
        VALIDATE_W_RV( (LinChannelStatus[Channel] != LIN_CH_UNINIT), LIN_GETSTATUS_SERVICE_ID, LIN_E_CHANNEL_UNINIT, E_NOT_OK);\r
        VALIDATE_W_RV( (Channel < LIN_CONTROLLER_CNT), LIN_GETSTATUS_SERVICE_ID, LIN_E_INVALID_CHANNEL, E_NOT_OK);\r
        VALIDATE_W_RV( (Lin_SduPtr!=NULL), LIN_GETSTATUS_SERVICE_ID, LIN_E_INVALID_POINTER, E_NOT_OK);\r
 \r
-       imask_t state = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
        Lin_StatusType res = LinChannelStatus[Channel];\r
        // We can only check for valid sdu ptr when LIN_RX_OK\r
        if(LinChannelStatus[Channel] == LIN_RX_OK || LinChannelStatus[Channel] == LIN_RX_ERROR){\r
@@ -601,7 +603,7 @@ Lin_StatusType Lin_GetStatus( uint8 Channel, uint8** Lin_SduPtr )
        } else if(LinChannelStatus[Channel] == LIN_TX_OK || LinChannelStatus[Channel] == LIN_TX_ERROR){\r
                LinChannelStatus[Channel]=LIN_CH_OPERATIONAL;\r
        }\r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
        return res;\r
 }\r
 \r
index d9d0c1a278c478d0a35a1f5bb69ca0c85963882a..1843a2ee01fbf0f333fe22e8b95634febe21940e 100644 (file)
@@ -619,17 +619,6 @@ uint32_t McuE_GetSystemClock(void)
     return f_sys;\r
 }\r
 \r
-imask_t McuE_EnterCriticalSection()\r
-{\r
-       uint32_t msr = get_msr();\r
-       Irq_Disable();\r
-       return msr;\r
-}\r
-\r
-void McuE_ExitCriticalSection(uint32_t old_state)\r
-{\r
-       set_msr(old_state);\r
-}\r
 \r
 /**\r
  * Get the peripheral clock in Hz for a specific device\r
@@ -776,12 +765,3 @@ static void Mcu_ConfigureFlash(void)
 #endif\r
 }\r
 \r
-void McuE_EnableInterrupts(void)\r
-{\r
-       Irq_Enable();\r
-}\r
-\r
-void McuE_DisableInterrupts(void)\r
-{\r
-       Irq_Disable();\r
-}\r
index 3bd3518bedc372b12f0f6ed084cda8afdcd9c191..3340f15b054e15c860c7a006f9d23084dca97450 100644 (file)
@@ -139,20 +139,18 @@ void Port_SetPinDirection( Port_PinType pin, Port_PinDirectionType direction )
   VALIDATE_PARAM_PIN(pin, PORT_SET_PIN_DIRECTION_ID);\r
   unsigned long state;\r
 \r
+  Irq_Save(state); // Lock interrupts\r
   if (direction==PORT_PIN_IN)\r
   {\r
-    state = _Irq_Disable_save(); // Lock interrupts\r
     SIU.PCR[pin].B.IBE = 1;\r
     SIU.PCR[pin].B.OBE = 0;\r
-    _Irq_Disable_restore(state); // Restore interrupts\r
   }\r
   else\r
   {\r
-    state = _Irq_Disable_save(); // Lock interrupts\r
     SIU.PCR[pin].B.IBE = 0;\r
     SIU.PCR[pin].B.OBE = 1;\r
-    _Irq_Disable_restore(state); // Restore interrupts\r
   }\r
+  Irq_Restore(state); // Restore interrupts\r
   return;\r
 }\r
 #endif\r
@@ -167,9 +165,9 @@ void Port_RefreshPortDirection( void )
   unsigned long state;\r
   for (i=0; i < sizeof(SIU.PCR)/sizeof(SIU.PCR[0]); i++)\r
   {\r
-    state = _Irq_Disable_save(); // Lock interrupts\r
+       Irq_Save(state); // Lock interrupts\r
     *pcrPtr = (*pcrPtr & ~bitMask) | (*padCfgPtr & bitMask);\r
-    _Irq_Disable_restore(state); // Restore interrups\r
+    Irq_Restore(state); // Restore interrupts\r
     pcrPtr++;\r
     padCfgPtr++;\r
     if(98 == i)\r
index 3ee82cf15a1f1081b6eede0d9bf13ac1cf7980f4..42a6e4dae1fda7a46fe713755f4ec0946737e963 100644 (file)
@@ -97,9 +97,9 @@ Std_ReturnType Wdg_SetMode (WdgIf_ModeType Mode)
 /* This function services the internal Watchdog timer */\r
 void Wdg_Trigger (void)\r
 {\r
-       uint32 tmp;\r
+       imask_t state;\r
 \r
-       tmp = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
 \r
        //  According to MPC55xx manual:\r
        //  To prevent the watchdog timer from interrupting or resetting\r
@@ -117,5 +117,5 @@ void Wdg_Trigger (void)
        MCM.SWTSR.R = 0xAA;\r
 #endif\r
 \r
-       McuE_ExitCriticalSection(tmp);\r
+    Irq_Restore(state);\r
 }\r
index a7948d8e89ae5ef811b711f2b574b60ef782b0b2..708c1e44a08cc74be05a22eb6d17a5c92644d38b 100644 (file)
@@ -20,6 +20,3 @@ MOD_AVAIL+=COMM NM CANNM CANSM
 \r
 # Needed by us\r
 MOD_USE=\r
-\r
-# Stubs\r
-obj-y += McuExtensionsStub.o
\ No newline at end of file
index 00db5e5274630541a5b2d71378ca3b90455946a7..b30f6737df457fc74df1d7b7de307892ecdd7b37 100644 (file)
@@ -38,7 +38,8 @@ void SleepInit()
 \r
 void Sleep(uint32_t nofTicks, TaskType TaskID, EventMaskType Mask )\r
 {\r
-       uint32 pval = McuE_EnterCriticalSection();\r
+       imask_t state;\r
+    Irq_Save(state);\r
        if(nofTicks == 0){\r
                nofTicks=1;\r
        }\r
@@ -50,7 +51,7 @@ void Sleep(uint32_t nofTicks, TaskType TaskID, EventMaskType Mask )
         /* Error */\r
        ErrorHook(E_OS_LIMIT);\r
     }\r
-       McuE_ExitCriticalSection(pval);\r
+    Irq_Restore(state);\r
 }\r
 \r
 \r
index 50166f8fd2734abc83e1c1f5ac2814ebb2496aa6..26da4b89f0878575378710fa1c0f6d49c1d0e940 100644 (file)
@@ -29,7 +29,6 @@
 #include "debug.h"\r
 #include "PduR.h"\r
 #include "Det.h"\r
-#include "McuExtensions.h"\r
 \r
 \r
 uint8 Com_SendSignal(Com_SignalIdType SignalId, const void *SignalDataPtr) {\r
@@ -102,13 +101,15 @@ void Com_TriggerIPduSend(PduIdType ComTxPduId) {
        // Is the IPdu ready for transmission?\r
        if (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer == 0) {\r
 \r
-               imask_t mask = McuE_EnterCriticalSection();\r
+        imask_t state;\r
+\r
+        Irq_Save(state);\r
                // Check callout status\r
                if (IPdu->ComIPduCallout != NULL) {\r
                        if (!IPdu->ComIPduCallout(ComTxPduId, Arc_IPdu->ComIPduDataPtr)) {\r
                                // TODO Report error to DET.\r
                                // Det_ReportError();\r
-                               McuE_ExitCriticalSection(mask);\r
+                           Irq_Restore(state);\r
                                return;\r
                        }\r
                }\r
@@ -127,7 +128,7 @@ void Com_TriggerIPduSend(PduIdType ComTxPduId) {
                                }\r
                        }\r
                }\r
-               McuE_ExitCriticalSection(mask);\r
+           Irq_Restore(state);\r
 \r
                // Reset miminum delay timer.\r
                Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer = IPdu->ComTxIPdu.ComTxIPduMinimumDelayFactor;\r
index c4fd6091bf6cb11d061de969757905df70082c9b..2da33375f9eb2ecbd87b1308e8f12623e220a90c 100644 (file)
@@ -30,7 +30,6 @@
 #include "Dem.h"\r
 #endif\r
 #include "PduR.h"\r
-#include "McuExtensions.h"\r
 #include "debug.h"\r
 \r
 /*\r
@@ -136,7 +135,8 @@ void PduR_BufferInc(PduRTxBuffer_type *Buffer, uint8 **ptr) {
 }\r
 \r
 void PduR_BufferQueue(PduRTxBuffer_type *Buffer, const uint8 * SduPtr) {\r
-       imask_t state = McuE_EnterCriticalSection();\r
+    imask_t state;\r
+    Irq_Save(state);\r
 \r
        if (PduR_BufferIsFull(Buffer)) { // Buffer is full\r
                PduR_BufferFlush(Buffer);\r
@@ -153,11 +153,12 @@ void PduR_BufferQueue(PduRTxBuffer_type *Buffer, const uint8 * SduPtr) {
                DEBUG(DEBUG_LOW,"\tBuffer %d: Queued data %d. Status: NrItems %d, First %d, Last %d\n", Buffer->BufferId, *SduPtr, Buffer->NrItems, *Buffer->First, *Buffer->Last);\r
 \r
        }\r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 void PduR_BufferDeQueue(PduRTxBuffer_type *Buffer, uint8 *SduPtr) {\r
-       imask_t state = McuE_EnterCriticalSection();\r
+    imask_t state;\r
+    Irq_Save(state);\r
 \r
        if (Buffer->NrItems > 0) {\r
                memcpy(SduPtr, Buffer->First, sizeof(uint8) * Buffer->Length);\r
@@ -167,28 +168,30 @@ void PduR_BufferDeQueue(PduRTxBuffer_type *Buffer, uint8 *SduPtr) {
        } else {\r
                DEBUG(DEBUG_LOW,"\tBuffer %d: Buffer is empty, nothing to dequeue!\n", Buffer->BufferId);\r
        }\r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 void PduR_BufferFlush(PduRTxBuffer_type *Buffer) {\r
        DEBUG(DEBUG_LOW,"\tBuffer %d: Flushing!\n", Buffer->BufferId);\r
-       imask_t state = McuE_EnterCriticalSection();\r
+    imask_t state;\r
+    Irq_Save(state);\r
        Buffer->NrItems = 0;\r
        Buffer->First = Buffer->Buffer;\r
        Buffer->Last = Buffer->Buffer;\r
        Buffer->TxConfP = 0;\r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 uint8 PduR_BufferIsFull(PduRTxBuffer_type *Buffer) {\r
-       imask_t state = McuE_EnterCriticalSection();\r
+    imask_t state;\r
+    Irq_Save(state);\r
        uint8 rv = 0;\r
        if (Buffer->NrItems < Buffer->Depth) {\r
                rv = 0;\r
        } else {\r
                rv = 1;\r
        }\r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
        return rv;\r
 }\r
 */\r
index 88efebada9b8fd18ab9fefcdab867ea079afed73..10ef4881daf3dc4ff3fc774c27a3e7207e47b8bf 100644 (file)
@@ -43,7 +43,6 @@
 //#include "ComM_Dcm.h"\r
 #include "PduR_Dcm.h"\r
 #include "ComStack_Types.h"\r
-#include "McuExtensions.h"\r
 \r
 // State variable\r
 typedef enum\r
index 445e11bfeef6a377e0472711ee9a42778613540e..bb71de457d091c0fb143f4c350fccbda8228fd26 100644 (file)
@@ -20,7 +20,6 @@
 \r
 \r
 #include <string.h>\r
-#include "McuExtensions.h"\r
 #include "Dcm.h"\r
 #include "Dcm_Internal.h"\r
 #include "MemMap.h"\r
@@ -305,7 +304,8 @@ void DslDsdProcessingDone(PduIdType rxPduIdRef, DsdProcessingDoneResultType resp
        DEBUG( DEBUG_MEDIUM, "DslDsdProcessingDone rxPduIdRef=%d\n", rxPduIdRef);\r
 \r
        if (findRxPduIdParentConfigurationLeafs(rxPduIdRef, &protocolRx, &mainConnection, &connection, &protocolRow, &runtime)) {\r
-               imask_t state = McuE_EnterCriticalSection();\r
+           imask_t state;\r
+           Irq_Save(state);\r
                switch (responseResult) {\r
                case DSD_TX_RESPONSE_READY:\r
                        runtime->externalTxBufferStatus = DSD_PENDING_RESPONSE_SIGNALED; /** @req DCM114 */\r
@@ -318,7 +318,7 @@ void DslDsdProcessingDone(PduIdType rxPduIdRef, DsdProcessingDoneResultType resp
                        DEBUG( DEBUG_MEDIUM, "Unknown response result from DslDsdProcessingDone!\n");\r
                        break;\r
                }\r
-               McuE_ExitCriticalSection(state);\r
+           Irq_Restore(state);\r
        }\r
 }\r
 \r
@@ -337,9 +337,10 @@ static void sendResponse(const Dcm_DslProtocolRowType *protocol,
        const Dcm_DslProtocolRowType *protocolRow = NULL;\r
        Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
        Std_ReturnType transmitResult;\r
+    imask_t state;\r
 \r
+    Irq_Save(state);\r
        /** @req DCM119 */\r
-       imask_t state = McuE_EnterCriticalSection();\r
        if (findRxPduIdParentConfigurationLeafs(protocol->DslRunTimeProtocolParameters->diagReqestRxPduId, &protocolRx, &mainConnection, &connection, &protocolRow, &runtime)) {\r
                if (runtime->localTxBuffer.status == NOT_IN_USE) {\r
                        runtime->localTxBuffer.status = PROVIDED_TO_DSD;\r
@@ -355,7 +356,7 @@ static void sendResponse(const Dcm_DslProtocolRowType *protocol,
                        }\r
                }\r
        }\r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 // - - - - - - - - - - -\r
@@ -521,9 +522,10 @@ BufReq_ReturnType DslProvideRxBufferToPdur(PduIdType dcmRxPduId, PduLengthType t
        const Dcm_DslConnectionType *connection = NULL;\r
        const Dcm_DslProtocolRowType *protocolRow = NULL;\r
        Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
+    imask_t state;\r
 \r
        DEBUG( DEBUG_MEDIUM, "DslProvideRxBufferToPdur(dcmRxPduId=%d) called!\n", dcmRxPduId);\r
-       imask_t state = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
        if (findRxPduIdParentConfigurationLeafs(dcmRxPduId, &protocolRx, &mainConnection, &connection, &protocolRow, &runtime)) {\r
                const Dcm_DslBufferType *externalRxBuffer = protocolRow->DslProtocolRxBufferID;\r
                if (externalRxBuffer->pduInfo.SduLength >= tpSduLength) { /** @req DCM443 */\r
@@ -565,7 +567,7 @@ BufReq_ReturnType DslProvideRxBufferToPdur(PduIdType dcmRxPduId, PduLengthType t
                        stopS3SessionTimer(runtime); /** @req DCM141 */\r
                }\r
        }\r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
        return ret;\r
 }\r
 \r
@@ -593,7 +595,7 @@ void DslRxIndicationFromPduR(PduIdType dcmRxPduId, NotifResultType result) {
                // We need to find out in what buffer we can find our Rx data (it can\r
                // be either in the normal RX-buffer or the 'extra' buffer for implementing\r
                // the Concurrent "Test Present" functionality.\r
-               state = McuE_EnterCriticalSection();\r
+           Irq_Save(state);\r
                if (runtime->externalRxBufferStatus == PROVIDED_TO_PDUR) {\r
                        if ( result == NTFRSLT_OK ) { /** @req DCM111 */\r
                                if (isTesterPresentCommand(&(protocolRow->DslProtocolRxBufferID->pduInfo))) {\r
@@ -656,7 +658,7 @@ void DslRxIndicationFromPduR(PduIdType dcmRxPduId, NotifResultType result) {
                                runtime->localRxBuffer.status = NOT_IN_USE;\r
                        }\r
                }\r
-               McuE_ExitCriticalSection(state);\r
+           Irq_Restore(state);\r
        }\r
 }\r
 \r
@@ -734,7 +736,7 @@ void DslTxConfirmation(PduIdType dcmTxPduId, NotifResultType result) {
                boolean externalBufferReleased = FALSE;\r
 \r
                // Free the buffer and free the Pdu runtime data buffer.\r
-               state = McuE_EnterCriticalSection();\r
+           Irq_Save(state);\r
                switch (runtime->externalTxBufferStatus) { // ### EXTERNAL TX BUFFER ###\r
                case PROVIDED_TO_PDUR: {\r
 #if defined(USE_COMM)\r
@@ -761,7 +763,7 @@ void DslTxConfirmation(PduIdType dcmTxPduId, NotifResultType result) {
                                break;\r
                        }\r
                }\r
-               McuE_ExitCriticalSection(state);\r
+           Irq_Restore(state);\r
        }\r
 }\r
 \r
index 38c1498d55245ec337f3aecaa1996b47d25610ad..dc2df90a04f000c751ce531d247e187f6b59c81c 100644 (file)
@@ -48,7 +48,6 @@
 //#include "Nvm.h"\r
 //#include "SchM_Dem.h"\r
 #include "MemMap.h"\r
-#include "McuExtensions.h"\r
 \r
 /*\r
  * Local defines\r
@@ -476,7 +475,8 @@ static Dem_EventStatusType preDebounceCounterBased(Dem_EventStatusType reportedS
 static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_EventStatusType eventStatus, boolean createIfNotExist, EventStatusRecType *eventStatusRec)\r
 {\r
        EventStatusRecType *eventStatusRecPtr;\r
-       imask_t state = McuE_EnterCriticalSection();\r
+       imask_t state;\r
+    Irq_Save(state);\r
 \r
        // Lookup event ID\r
        lookupEventStatusRec(eventParam->EventID, &eventStatusRecPtr);\r
@@ -555,7 +555,7 @@ static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_E
                eventStatusRec->errorStatusChanged = FALSE;\r
        }\r
 \r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 \r
@@ -566,7 +566,8 @@ static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_E
 static void mergeEventStatusRec(const EventRecType *eventRec)\r
 {\r
        EventStatusRecType *eventStatusRecPtr;\r
-       imask_t state = McuE_EnterCriticalSection();\r
+       imask_t state;\r
+    Irq_Save(state);\r
 \r
        // Lookup event ID\r
        lookupEventStatusRec(eventRec->eventId, &eventStatusRecPtr);\r
@@ -595,7 +596,7 @@ static void mergeEventStatusRec(const EventRecType *eventRec)
                }\r
        }\r
 \r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 \r
@@ -606,7 +607,8 @@ static void mergeEventStatusRec(const EventRecType *eventRec)
 static void deleteEventStatusRec(const Dem_EventParameterType *eventParam)\r
 {\r
        EventStatusRecType *eventStatusRecPtr;\r
-       imask_t state = McuE_EnterCriticalSection();\r
+       imask_t state;\r
+    Irq_Save(state);\r
 \r
        // Lookup event ID\r
        lookupEventStatusRec(eventParam->EventID, &eventStatusRecPtr);\r
@@ -616,7 +618,7 @@ static void deleteEventStatusRec(const Dem_EventParameterType *eventParam)
                memset(eventStatusRecPtr, 0, sizeof(EventStatusRecType));\r
        }\r
 \r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 \r
@@ -793,7 +795,8 @@ static void storeExtendedDataPreInit(const Dem_EventParameterType *eventParam, c
        boolean eventIdFound = FALSE;\r
        boolean eventIdFreePositionFound=FALSE;\r
        uint16 i;\r
-       imask_t state = McuE_EnterCriticalSection();\r
+       imask_t state;\r
+    Irq_Save(state);\r
 \r
        // Check if already stored\r
        for (i = 0; (i<DEM_MAX_NUMBER_EXT_DATA_PRE_INIT) && (!eventIdFound); i++){\r
@@ -821,7 +824,7 @@ static void storeExtendedDataPreInit(const Dem_EventParameterType *eventParam, c
                }\r
        }\r
 \r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 /*\r
@@ -834,7 +837,8 @@ static void storeEventPriMem(const Dem_EventParameterType *eventParam, const Eve
        boolean eventIdFound = FALSE;\r
        boolean eventIdFreePositionFound=FALSE;\r
        uint16 i;\r
-       imask_t state = McuE_EnterCriticalSection();\r
+       imask_t state;\r
+    Irq_Save(state);\r
 \r
        (void)*eventParam;      // Currently not used, do this to avoid warning\r
 \r
@@ -866,7 +870,7 @@ static void storeEventPriMem(const Dem_EventParameterType *eventParam, const Eve
                }\r
        }\r
 \r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 /*\r
@@ -877,7 +881,8 @@ static void deleteEventPriMem(const Dem_EventParameterType *eventParam)
 {\r
        boolean eventIdFound = FALSE;\r
        uint16 i;\r
-       imask_t state = McuE_EnterCriticalSection();\r
+       imask_t state;\r
+    Irq_Save(state);\r
 \r
 \r
        // Lookup event ID\r
@@ -890,7 +895,7 @@ static void deleteEventPriMem(const Dem_EventParameterType *eventParam)
                memset(&priMemEventBuffer[i-1], 0, sizeof(EventRecType));\r
        }\r
 \r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 /*\r
@@ -933,7 +938,8 @@ static void storeExtendedDataPriMem(const Dem_EventParameterType *eventParam, co
        boolean eventIdFound = FALSE;\r
        boolean eventIdFreePositionFound=FALSE;\r
        uint16 i;\r
-       imask_t state = McuE_EnterCriticalSection();\r
+       imask_t state;\r
+    Irq_Save(state);\r
 \r
        // Check if already stored\r
        for (i = 0; (i<DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) && (!eventIdFound); i++){\r
@@ -958,7 +964,7 @@ static void storeExtendedDataPriMem(const Dem_EventParameterType *eventParam, co
                }\r
        }\r
 \r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 /*\r
@@ -969,7 +975,8 @@ static void deleteExtendedDataPriMem(const Dem_EventParameterType *eventParam)
 {\r
        boolean eventIdFound = FALSE;\r
        uint16 i;\r
-       imask_t state = McuE_EnterCriticalSection();\r
+       imask_t state;\r
+    Irq_Save(state);\r
 \r
        // Check if already stored\r
        for (i = 0;(i<DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) && (!eventIdFound); i++){\r
@@ -981,7 +988,7 @@ static void deleteExtendedDataPriMem(const Dem_EventParameterType *eventParam)
                memset(&priMemExtDataBuffer[i-1], 0, sizeof(ExtDataRecType));\r
        }\r
 \r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 /*\r
@@ -1232,15 +1239,16 @@ static Std_ReturnType handleEvent(Dem_EventIdType eventId, Dem_EventStatusType e
  */\r
 static void resetEventStatus(Dem_EventIdType eventId)\r
 {\r
-       imask_t state = McuE_EnterCriticalSection();\r
        EventStatusRecType *eventStatusRecPtr;\r
+       imask_t state;\r
+    Irq_Save(state);\r
 \r
        lookupEventStatusRec(eventId, &eventStatusRecPtr);\r
        if (eventStatusRecPtr != NULL) {\r
                eventStatusRecPtr->eventStatusExtended &= (Dem_EventStatusExtendedType)~DEM_TEST_FAILED; /** @req DEM187 */\r
        }\r
 \r
-       McuE_ExitCriticalSection(state);\r
+    Irq_Restore(state);\r
 }\r
 \r
 \r
index 30403573b67f8298343c502071a7ac0abdfadbde..e851fabfed2fedfba14968d8d66aa0e02ff8a721 100644 (file)
@@ -192,9 +192,6 @@ uint32_t McuE_GetSystemClock( void );
 #if defined(CFG_MPC55XX) || defined(CFG_ARM_CR4)\r
 uint32_t McuE_GetPeripheralClock( McuE_PeriperalClock_t type );\r
 #endif\r
-#include "McuExtensions.h"\r
-\r
-\r
 \r
 #endif /*MCU_H_*/\r
 /** @} */\r
diff --git a/include/McuExtensions.h b/include/McuExtensions.h
deleted file mode 100644 (file)
index 1beaca3..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -------------------------------- Arctic Core ------------------------------\r
- * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
- *\r
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
- *\r
- * This source code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 as published by the\r
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
- *\r
- * This program is distributed in the hope that it will be useful, but\r
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-\r
-\r
-#ifndef MCU_EXTENSIONS_H\r
-#define MCU_EXTENSIONS_H\r
-\r
-#include "Std_Types.h"\r
-typedef uint32_t imask_t;\r
-\r
-imask_t McuE_EnterCriticalSection(void);\r
-void McuE_ExitCriticalSection(imask_t old_state);\r
-\r
-#endif\r
index 453c176520b27c9c5caa059d413eea5e0e9a050f..bf4c9e0823b6d40c647767ff4b97362905fb6ae8 100644 (file)
@@ -24,6 +24,9 @@
 #include "core_cr4.h"
 #endif
 
+#include "Std_Types.h"
+typedef uint32_t imask_t;
+
 /* Call architecture specific code */
 #define Irq_Disable()          __disable_irq()
 #define Irq_Enable()           __enable_irq()
index 7ec37b601289f2db921536af6e7cefd55a97c82f..96f358598bca40c268becde8f7253cbdde78a8ae 100644 (file)
@@ -19,6 +19,7 @@
 #define CPU_H\r
 \r
 #include "Std_Types.h"\r
+typedef uint32_t imask_t;\r
 \r
 #define Irq_Save(flags)                ((flags) = 0)           // Dummy assignment to avoid compiler warnings\r
 #define Irq_Restore(flags)     (void)(flags)\r
index 0ef61ad4a5af6ccb169bb8ae27020e8486270932..6c91d89d19dada605bd6bbaea91a4935280dd3a1 100644 (file)
@@ -16,6 +16,9 @@
 #ifndef CPU_H_\r
 #define CPU_H_\r
 \r
+#include "Std_Types.h"\r
+typedef uint32_t imask_t;\r
+\r
 #define Irq_Disable()          asm volatile (" sei");\r
 #define Irq_Enable()           asm volatile (" cli");\r
 \r
index 963db6d3fb54686eda67d70a2ce27986e969f119..c27151d5d40a3d495ec88ab8146236bb63004745 100644 (file)
@@ -25,6 +25,7 @@
 #define CPU_H\r
 \r
 #include "Std_Types.h"\r
+typedef uint32_t imask_t;\r
 \r
 // Used if we are running a T32 instruction set simulator\r
 #define SIMULATOR() (SIU.MIDR.R==0)\r
index 328083ce447dee031c81c61e0d073ed10a87feda..249fb251e5374ef350a8ee4e71116817861d53d2 100644 (file)
@@ -190,6 +190,7 @@ Std_ReturnType Ea_Read(uint16 BlockNumber, uint16 BlockOffset, uint8* DataBuffer
 {\r
        uint16 BlockIndex;\r
        const Ea_BlockConfigType *EaBlockCon;\r
+    imask_t state;\r
 \r
        /*@req <EA130> */\r
        if (E_OK != Ea_ValidateInitialized(EA_READ_ID))\r
@@ -201,15 +202,15 @@ Std_ReturnType Ea_Read(uint16 BlockNumber, uint16 BlockOffset, uint8* DataBuffer
 \r
        /*@req <EA137> */\r
        /* Lock down the module to ourself */\r
-       imask_t mask = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
        if (Ea_Global.ModuleStatus != MEMIF_IDLE)\r
        {\r
-               McuE_ExitCriticalSection(mask);\r
+           Irq_Restore(state);\r
                return E_NOT_OK;\r
        }\r
        /*set current state is internal busy*/\r
        Ea_Global.ModuleStatus = MEMIF_BUSY_INTERNAL;\r
-       McuE_ExitCriticalSection(mask);\r
+    Irq_Restore(state);\r
 \r
        BlockIndex = EA_GET_BLOCK(BlockNumber);\r
 \r
@@ -254,6 +255,7 @@ Std_ReturnType Ea_Write(uint16 BlockNumber, uint8* DataBufferPtr)
        uint16 BlockIndex;\r
        const Ea_BlockConfigType *EaBlockCon;\r
        Ea_AdminBlock* adminBlock;\r
+    imask_t state;\r
 \r
        /*@req <EA131> */\r
        if (E_OK != Ea_ValidateInitialized(EA_WRITE_ID))\r
@@ -266,15 +268,15 @@ Std_ReturnType Ea_Write(uint16 BlockNumber, uint8* DataBufferPtr)
        /*@req <EA137>\r
        */\r
        /* Lock down the module to ourself */\r
-       imask_t mask = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
        if (Ea_Global.ModuleStatus != MEMIF_IDLE)\r
        {\r
-               McuE_ExitCriticalSection(mask);\r
+           Irq_Restore(state);\r
                return E_NOT_OK;\r
        }\r
        /*set current state is internal busy*/\r
        Ea_Global.ModuleStatus = MEMIF_BUSY_INTERNAL;\r
-       McuE_ExitCriticalSection(mask);\r
+    Irq_Restore(state);\r
 \r
        BlockIndex = EA_GET_BLOCK(BlockNumber);\r
 \r
@@ -372,6 +374,7 @@ Std_ReturnType Ea_InvalidateBlock(uint16 BlockNumber)
        const Ea_BlockConfigType *EaBlockCon;\r
        Ea_AdminBlock* adminBlock;\r
        Std_ReturnType result;\r
+    imask_t state;\r
 \r
        /*@req <EA135> */\r
        if (E_OK != Ea_ValidateInitialized(EA_INVALIDATEBLOCK_ID))\r
@@ -384,15 +387,15 @@ Std_ReturnType Ea_InvalidateBlock(uint16 BlockNumber)
        /*@req <EA137>\r
        */\r
        /* Lock down the module to ourself */\r
-       imask_t mask = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
        if (Ea_Global.ModuleStatus != MEMIF_IDLE)\r
        {\r
-               McuE_ExitCriticalSection(mask);\r
+           Irq_Restore(state);\r
                return E_NOT_OK;\r
        }\r
        /*set current state is internal busy*/\r
        Ea_Global.ModuleStatus = MEMIF_BUSY_INTERNAL;\r
-       McuE_ExitCriticalSection(mask);\r
+    Irq_Restore(state);\r
 \r
        BlockIndex = EA_GET_BLOCK(BlockNumber);\r
 \r
@@ -427,11 +430,11 @@ Std_ReturnType Ea_InvalidateBlock(uint16 BlockNumber)
        result = Eep_Write(Ea_Global.EepAddress, (const uint8*) Ea_TempBuffer, sizeof(Ea_AdminBlock));\r
        if (E_OK == result)\r
        {\r
-               mask = McuE_EnterCriticalSection();\r
+           Irq_Save(state);\r
                MemIf_StatusType status = Eep_GetStatus();\r
                if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
                        Ea_Global.JobStatus = EA_PENDING_ADMIN_WRITE;\r
-               McuE_ExitCriticalSection(mask);\r
+           Irq_Restore(state);\r
        }\r
        else\r
        {\r
@@ -450,6 +453,7 @@ Std_ReturnType Ea_EraseImmediateBlock(uint16 BlockNumber)
 {\r
        uint16 BlockIndex;\r
        const Ea_BlockConfigType *EaBlockCon;\r
+       imask_t state;\r
 \r
        /*@req <EA136> */\r
        if (E_OK != Ea_ValidateInitialized(EA_ERASEIMMEDIATEBLOCK_ID))\r
@@ -462,15 +466,15 @@ Std_ReturnType Ea_EraseImmediateBlock(uint16 BlockNumber)
        /*@req <EA137>\r
        */\r
        /* Lock down the module to ourself */\r
-       imask_t mask = McuE_EnterCriticalSection();\r
+    Irq_Save(state);\r
        if (Ea_Global.ModuleStatus != MEMIF_IDLE)\r
        {\r
-               McuE_ExitCriticalSection(mask);\r
+           Irq_Restore(state);\r
                return E_NOT_OK;\r
        }\r
        /*set current state is internal busy*/\r
        Ea_Global.ModuleStatus = MEMIF_BUSY_INTERNAL;\r
-       McuE_ExitCriticalSection(mask);\r
+    Irq_Restore(state);\r
 \r
        BlockIndex = EA_GET_BLOCK(BlockNumber);\r
 \r
@@ -512,7 +516,7 @@ Std_ReturnType Ea_EraseImmediateBlock(uint16 BlockNumber)
 void Ea_MainFunction(void)\r
 {\r
        Std_ReturnType result;\r
-       imask_t mask;\r
+       imask_t state;\r
 \r
        if ((MEMIF_JOB_PENDING == Ea_Global.JobResult) && (Ea_Global.JobStatus == EA_PENDING_NONE))\r
        {\r
@@ -525,11 +529,11 @@ void Ea_MainFunction(void)
                                        result = Eep_Write(Ea_Global.EepAddress, (const uint8*) Ea_TempBuffer, Ea_Global.Length);\r
                                        if (E_OK == result)\r
                                        {\r
-                                               mask = McuE_EnterCriticalSection();\r
+                                           Irq_Save(state);\r
                                                MemIf_StatusType status = Eep_GetStatus();\r
                                                if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
                                                        Ea_Global.JobStatus = EA_PENDING_WRITE;\r
-                                               McuE_ExitCriticalSection(mask);\r
+                                           Irq_Restore(state);\r
                                        }\r
                                }\r
                                break;\r
@@ -540,11 +544,11 @@ void Ea_MainFunction(void)
                                        result = Eep_Read(Ea_Global.EepAddress, (uint8*) Ea_TempBuffer, Ea_Global.Length);\r
                                        if (E_OK == result)\r
                                        {\r
-                                               mask = McuE_EnterCriticalSection();\r
+                                           Irq_Save(state);\r
                                                MemIf_StatusType status = Eep_GetStatus();\r
                                                if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
                                                        Ea_Global.JobStatus = EA_PENDING_READ;\r
-                                               McuE_ExitCriticalSection(mask);\r
+                                           Irq_Restore(state);\r
                                        }\r
                                }\r
                                break;\r
@@ -554,11 +558,11 @@ void Ea_MainFunction(void)
                                        result = Eep_Erase(Ea_Global.EepAddress, Ea_Global.Length);\r
                                        if (E_OK == result)\r
                                        {\r
-                                               mask = McuE_EnterCriticalSection();\r
+                                           Irq_Save(state);\r
                                                MemIf_StatusType status = Eep_GetStatus();\r
                                                if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
                                                        Ea_Global.JobStatus = EA_PENDING_ERASE;\r
-                                               McuE_ExitCriticalSection(mask);\r
+                                           Irq_Restore(state);\r
                                        }\r
                                }\r
                                break;\r
@@ -673,7 +677,7 @@ void handleLowerLayerWrite()
 {\r
        Ea_AdminBlock* adminBlock;\r
        Std_ReturnType result;\r
-       imask_t mask;\r
+       imask_t state;\r
 \r
        if (Ea_Global.JobResult == MEMIF_JOB_OK)\r
        {\r
@@ -687,11 +691,11 @@ void handleLowerLayerWrite()
                result = Eep_Write(Ea_Global.EepAddress, (const uint8*) Ea_TempBuffer, sizeof(Ea_AdminBlock));\r
                if (E_OK == result)\r
                {\r
-                       mask = McuE_EnterCriticalSection();\r
+                   Irq_Save(state);\r
                        MemIf_StatusType status = Eep_GetStatus();\r
                        if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
                                Ea_Global.JobStatus = EA_PENDING_ADMIN_WRITE;\r
-                       McuE_ExitCriticalSection(mask);\r
+                   Irq_Restore(state);\r
                } else\r
                {\r
                        Ea_Global.JobResult = MEMIF_JOB_FAILED;\r
@@ -721,7 +725,7 @@ void handleLowerLayerErase()
 {\r
        Ea_AdminBlock* adminBlock;\r
        Std_ReturnType result;\r
-       imask_t mask;\r
+       imask_t state;\r
 \r
        if (Ea_Global.JobResult == MEMIF_JOB_OK)\r
        {\r
@@ -735,11 +739,11 @@ void handleLowerLayerErase()
                result = Eep_Write(Ea_Global.EepAddress, (const uint8*) Ea_TempBuffer, sizeof(Ea_AdminBlock));\r
                if (E_OK == result)\r
                {\r
-                       mask = McuE_EnterCriticalSection();\r
+                   Irq_Save(state);\r
                        MemIf_StatusType status = Eep_GetStatus();\r
                        if ((status == MEMIF_BUSY) || (status == MEMIF_BUSY_INTERNAL))\r
                                Ea_Global.JobStatus = EA_PENDING_ADMIN_WRITE;\r
-                       McuE_ExitCriticalSection(mask);\r
+                   Irq_Restore(state);\r
                } else\r
                {\r
                        Ea_Global.JobResult = MEMIF_JOB_FAILED;\r
@@ -770,15 +774,17 @@ void handleLowerLayerErase()
 /*@req <EA102> */\r
 void Ea_JobErrorNotification(void)\r
 {\r
-       imask_t mask = McuE_EnterCriticalSection();\r
-       /*@req EA154*/\r
+       imask_t state;\r
+    Irq_Save(state);\r
+\r
+    /*@req EA154*/\r
        if (Ea_Global.JobResult == MEMIF_JOB_PENDING)\r
                Ea_Global.JobResult = MEMIF_JOB_FAILED;\r
 \r
        Ea_Global.JobType = EA_JOB_NONE;\r
        Ea_Global.JobStatus = EA_PENDING_NONE;\r
        Ea_Global.ModuleStatus = MEMIF_IDLE;\r
-       McuE_ExitCriticalSection(mask);\r
+    Irq_Restore(state);\r
 \r
        /*@req <EA055> */\r
        /*@req <EA144> */\r
index 947c554f0ea69d5eb8210650e22ab4a8a8d6b3d8..42dee65afc67326d5e33b9eba8a69535555c8408 100644 (file)
@@ -51,6 +51,7 @@ StatusType WaitEvent( EventMaskType Mask ) {
 \r
        OsTaskVarType *curr_pcb = Os_SysTaskGetCurr();\r
        StatusType rv = E_OK;\r
+       imask_t state;\r
 \r
        OS_DEBUG(D_EVENT,"# WaitEvent %s\n",Os_SysTaskGetCurr()->name);\r
 \r
@@ -70,7 +71,7 @@ StatusType WaitEvent( EventMaskType Mask ) {
        }\r
 \r
        /* Remove from ready queue */\r
-       Irq_Disable();\r
+       Irq_Save(state);\r
 \r
        // OSEK/VDX footnote 5. The call of WaitEvent does not lead to a waiting state if one of the events passed in the event mask to\r
     // WaitEvent is already set. In this case WaitEvent does not lead to a rescheduling.\r
@@ -87,7 +88,7 @@ StatusType WaitEvent( EventMaskType Mask ) {
                }\r
        }\r
 \r
-       Irq_Enable();\r
+       Irq_Restore(state);\r
 \r
        // The following line disables the unused label warning. Remove when\r
        // proper error handling is implemented.\r