]> rtime.felk.cvut.cz Git - arc.git/commitdiff
More ISR things.
authormahi <devnull@localhost>
Mon, 18 Apr 2011 19:29:45 +0000 (21:29 +0200)
committermahi <devnull@localhost>
Mon, 18 Apr 2011 19:29:45 +0000 (21:29 +0200)
16 files changed:
arch/ppc/mpc55xx/kernel/arch.c
arch/ppc/mpc55xx/kernel/arch_krn.sx
arch/ppc/mpc55xx/kernel/irq.c
boards/mpc551xsim/examples/kernel_extra/Os_Cfg.c
boards/mpc551xsim/examples/kernel_extra/Os_Cfg.h
boards/mpc551xsim/examples/kernel_extra/kernel_extra.arxml
boards/mpc551xsim/examples/simple/Os_Cfg.c
boards/mpc551xsim/examples/simple/Os_Cfg.h
boards/mpc551xsim/examples/simple/simple_ppc.arxml
include/irq.h
include/isr.h
include/os_config_macros.h
system/kernel/event.c
system/kernel/include/alarm_i.h
system/kernel/include/task_i.h
system/kernel/isr.c

index bd825ff255e5d84b5d2ff9286f6a3f8e083a07af..c32e553fcd5ded5f1a8516289529d5ef761ec01c 100644 (file)
@@ -27,7 +27,6 @@
 #define USE_LDEBUG_PRINTF\r
 #include "debug.h"\r
 \r
-/* ----------------------------[includes]------------------------------------*/\r
 /* ----------------------------[private define]------------------------------*/\r
 /* ----------------------------[private macro]-------------------------------*/\r
 /* ----------------------------[private typedef]-----------------------------*/\r
@@ -43,7 +42,7 @@
  *\r
  * @param err                  The error code.\r
  * @param errFramePtr   Pointer to extra information about the error, if any.\r
- * @param excFramePtr   Pointer to the exception frame, that cause the error.\r
+ * @param excFramePtr   Pointer to the exception frame, that caused the error.\r
  */\r
 void Os_ArchPanic( uint32_t err, void *errFramePtr , Os_ExceptionFrameType *excFramePtr) {\r
        (void)excFramePtr;\r
index af14c0a7ff5fea3cbbb57c13aa64f28fb4ae6758..467ad295ebc34e6e4774c20fcaf701b153ded645 100644 (file)
@@ -50,7 +50,6 @@
 \r
 /* ----------------------------[private define]------------------------------*/\r
 \r
-//#define OLD_CALL             \r
 \r
 #define INTC_IACKR_PRC0                0xfff48010 \r
 #define INTC_EOIR_PRC0         0xfff48018\r
@@ -381,6 +380,7 @@ on_int_stack:
 #endif\r
        /* Check for 0 entry */\r
        mr              r5,r6\r
+#if 0  \r
        cmplwi  r5,0\r
        bne+    vectorOk\r
        /* The entry was 0, call panic */\r
@@ -388,8 +388,10 @@ on_int_stack:
        li              r4, 0\r
        mr              r5,r1\r
        b               Os_ArchPanic\r
+#endif \r
        \r
 vectorOk:\r
+    /* extract vector */\r
        extrwi  r5,r5,9,21\r
        /* Check for soft INT */\r
        cmplwi  r5,7\r
@@ -397,21 +399,13 @@ vectorOk:
        /* Clear soft interrupt */\r
        li              r0,1\r
        LOAD_ADDR_32(3,INTC_SSCIR0)\r
-//     lis             r3, INTC_SSCIR0@h\r
-//     ori             r3, r3, INTC_SSCIR0@l\r
        stbx    r0,r5,r3                        \r
        \r
 noSoftInt:     \r
        LOAD_ADDR_32(3,Os_Isr)\r
-//     lis   r3, Os_Isr@h\r
-//    ori   r3, r3,Os_Isr@l\r
     mtlr  r3\r
        mr    r3,r4             /* "old" stack as arg1 */\r
-#if defined(OLD_CALL)  \r
-    lwz   r4, 0x0(r6)  /* Read the address from the for function/pcb entry */\r
-#else\r
-       mr       r4,r5\r
-#endif    \r
+       mr       r4,r5          /* Vector as arg2 */\r
     blrl                               /* Call the entry */\r
 \r
        /* Notes!\r
index 5eadc322828a570cf1263c6a44bfdf82ca530340..7d88005a3876f93241f48356a0414262009546b1 100644 (file)
@@ -48,7 +48,7 @@ typedef void (*f_t)( uint32_t *);
 //extern uint8 Irq_IsrTypeTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS];\r
 //extern const OsIsrConstType *Irq_Map[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS];\r
 \r
-static void dumpExceptionRegs( uint32_t *regs );\r
+//static void dumpExceptionRegs( uint32_t *regs );\r
 \r
 /* ----------------------------[private variables]---------------------------*/\r
 extern void exception_tbl(void);\r
index 473eec4f2d37be30f8b36d0295a0b986b7518000..ae357d423737c562b50598c900b8c7c248d24bf8 100644 (file)
@@ -7,10 +7,10 @@
 * Configured for (MCU):    MPC551x\r
 *\r
 * Module vendor:           ArcCore\r
-* Generator version:       2.0.28\r
+* Generator version:       2.0.29\r
 *\r
 * Generated by Arctic Studio (http://arccore.com) \r
-*           on Wed Apr 13 08:22:49 CEST 2011\r
+*           on Fri Apr 15 17:18:12 CEST 2011\r
 */\r
 \r
        \r
@@ -74,8 +74,8 @@ GEN_ALARM_HEAD = {
                                NULL,\r
                                ALARM_ACTION_ACTIVATETASK,\r
                                TASK_ID_bTask,\r
-                               NULL,\r
-                               NULL,\r
+                               0,\r
+                               0,\r
                                APPLICATION_ID_OsApplication1,  /* Application owner */\r
                                0       /* Accessing application mask */\r
                        ),\r
@@ -99,21 +99,21 @@ DECLARE_STACK(eTask1,1024);
 \r
 // ##################################    TASKS     #################################\r
 GEN_TASK_HEAD = {\r
-       GEN_BTASK(      OsIdle,\r
-                               "OsIdle",\r
-                               0,\r
-                               FULL,\r
-                               TRUE,\r
-                               NULL,\r
-                               0,\r
-                               1,\r
-                               0,\r
-                               0 \r
+       GEN_BTASK(      /*                              */OsIdle,\r
+                               /* name                 */"OsIdle",\r
+                               /* priority             */0,\r
+                               /* schedule             */FULL,\r
+                               /* autostart            */TRUE,\r
+                               /* resource_int_p   */NULL,\r
+                               /* resource mask        */0,\r
+                               /* activation lim.      */1,\r
+                               /* App owner            */0,\r
+                               /* Accessing apps   */\r
        ),\r
        GEN_BTASK(\r
                /*                              */bTask,\r
                /* name                 */"bTask",\r
-               /* priority             */31,\r
+               /* priority             */2,\r
                /* schedule             */FULL,\r
                /* autostart            */FALSE,\r
                /* resource_int_p   */NULL,\r
@@ -130,6 +130,7 @@ GEN_TASK_HEAD = {
                /* name                 */TRUE,\r
                /* resource_int_p   */NULL,\r
                /* resource mask        */RES_MASK_Resource1 | 0,\r
+               /* event mask           */1,\r
                /* App owner            */APPLICATION_ID_OsApplication1,\r
                /* Accessing apps   */0\r
        ),                      \r
index 079af2cfca306aa2a042511ed1eb1f98f7011075..9a398e9801e67b0b04004211c2052ff3975b03b8 100644 (file)
@@ -7,10 +7,10 @@
 * Configured for (MCU):    MPC551x\r
 *\r
 * Module vendor:           ArcCore\r
-* Generator version:       2.0.28\r
+* Generator version:       2.0.29\r
 *\r
 * Generated by Arctic Studio (http://arccore.com) \r
-*           on Wed Apr 13 08:22:49 CEST 2011\r
+*           on Fri Apr 15 17:18:12 CEST 2011\r
 */\r
 \r
 
@@ -37,8 +37,8 @@
 \r
 \r
 // Event masks\r
-#define EVENT_MASK_Event1      2\r
-#define EVENT_MASK_Event2      2\r
+#define EVENT_MASK_Event1      1\r
+#define EVENT_MASK_Event2      1\r
 \r
 // Isr Id's\r
 #define ISR_ID_LossOfClock     0\r
index 0f9e15ed629287980c6f67d11bed1c2418bb00c7..2e535c9e95e30592a6141458efd42f7422ba7c4d 100644 (file)
                   <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsEvent/ArcOsEventAutoMask</DEFINITION-REF>\r
                   <VALUE>false</VALUE>\r
                 </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/ArcOsEventId</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
               </PARAMETER-VALUES>\r
             </CONTAINER>\r
             <CONTAINER UUID="3602409e-1b1a-4c75-bf15-45449d37570f">\r
                   <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsEvent/ArcOsEventAutoMask</DEFINITION-REF>\r
                   <VALUE>false</VALUE>\r
                 </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/ArcOsEventId</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
               </PARAMETER-VALUES>\r
             </CONTAINER>\r
             <CONTAINER UUID="fb419017-ef2b-4217-b417-098a2317e6b0">\r
index 3785efd545fdcced5cf2376eba48c5553ccf3197..7eb5875761ca4a50e9a9496d8f54c704833f2e99 100644 (file)
@@ -7,16 +7,17 @@
 * Configured for (MCU):    MPC551x\r
 *\r
 * Module vendor:           ArcCore\r
-* Generator version:       2.0.24\r
+* Generator version:       2.0.29\r
 *\r
 * Generated by Arctic Studio (http://arccore.com) \r
-*           on Thu Mar 24 08:53:26 CET 2011\r
+*           on Fri Apr 15 17:17:57 CEST 2011\r
 */\r
 \r
        \r
 \r
 #include "kernel.h"\r
 \r
+\r
 // ###############################    EXTERNAL REFERENCES    #############################\r
 \r
 /* Application externals */\r
@@ -38,9 +39,9 @@ GEN_APPLICATION_HEAD = {
                                /* name         */ "OsApplication1",\r
                                /* trusted      */ true,        /* NOT CONFIGURABLE IN TOOLS */\r
                                /* core         */ 0, /* Default value, multicore not enabled.*/\r
-                               /* StartupHook  */ NULL,        /* Startup Hook */\r
-                               /* ShutdownHook */ NULL,        /* Shutdown Hook */\r
-                               /* ErrorHook    */ NULL,        /* Error Hook */\r
+                               /* StartupHook  */ NULL,\r
+                               /* ShutdownHook */ NULL,\r
+                               /* ErrorHook    */ NULL,\r
                                /* rstrtTaskId  */ 0    /* NOT CONFIGURABLE IN TOOLS */\r
                                ),                                      \r
 };\r
@@ -73,7 +74,7 @@ GEN_ALARM_HEAD = {
                                ALARM_ACTION_SETEVENT,\r
                                TASK_ID_eTask1,\r
                                EVENT_MASK_Event2,\r
-                               NULL,\r
+                               0,\r
                                APPLICATION_ID_OsApplication1,  /* Application owner */\r
                                0       /* Accessing application mask */\r
                        ),\r
@@ -89,16 +90,16 @@ DECLARE_STACK(eTask2,2048);
 \r
 // ##################################    TASKS     #################################\r
 GEN_TASK_HEAD = {\r
-       GEN_BTASK(      OsIdle,\r
-                               "OsIdle",\r
-                               0,\r
-                               FULL,\r
-                               TRUE,\r
-                               NULL,\r
-                               0,\r
-                               1,\r
-                               0,\r
-                               0 \r
+       GEN_BTASK(      /*                              */OsIdle,\r
+                               /* name                 */"OsIdle",\r
+                               /* priority             */0,\r
+                               /* schedule             */FULL,\r
+                               /* autostart            */TRUE,\r
+                               /* resource_int_p   */NULL,\r
+                               /* resource mask        */0,\r
+                               /* activation lim.      */1,\r
+                               /* App owner            */0,\r
+                               /* Accessing apps   */\r
        ),\r
        GEN_BTASK(\r
                /*                              */bTask3,\r
@@ -120,6 +121,7 @@ GEN_TASK_HEAD = {
                /* name                 */TRUE,\r
                /* resource_int_p   */NULL,\r
                /* resource mask        */0,\r
+               /* event mask           */1,\r
                /* App owner            */APPLICATION_ID_OsApplication1,\r
                /* Accessing apps   */0\r
        ),                      \r
@@ -131,6 +133,7 @@ GEN_TASK_HEAD = {
                /* name                 */TRUE,\r
                /* resource_int_p   */NULL,\r
                /* resource mask        */0,\r
+               /* event mask           */1,\r
                /* App owner            */APPLICATION_ID_OsApplication1,\r
                /* Accessing apps   */0\r
        ),                      \r
@@ -153,3 +156,5 @@ GEN_ISR_MAP = {
 };\r
 \r
 // ############################    SCHEDULE TABLES     #############################\r
+\r
+\r
index f112fbb10ac818ae3fe400983f1f43d25e2d878e..d07dbda08bee710fd71b07a177c8e0d891bad069 100644 (file)
@@ -7,10 +7,10 @@
 * Configured for (MCU):    MPC551x\r
 *\r
 * Module vendor:           ArcCore\r
-* Generator version:       2.0.24\r
+* Generator version:       2.0.29\r
 *\r
 * Generated by Arctic Studio (http://arccore.com) \r
-*           on Thu Mar 24 08:53:26 CET 2011\r
+*           on Fri Apr 15 17:17:57 CEST 2011\r
 */\r
 \r
 
@@ -37,8 +37,8 @@
 \r
 \r
 // Event masks\r
-#define EVENT_MASK_Event1      2\r
-#define EVENT_MASK_Event2      4\r
+#define EVENT_MASK_Event1      1\r
+#define EVENT_MASK_Event2      1\r
 \r
 // Isr Id's\r
 \r
@@ -94,8 +94,7 @@ void eTask2( void );
 #define OS_ISR2_CNT            0\r
 #define OS_ISR1_CNT                    0\r
 \r
-/* New */\r
-#define OS_ISR_MAX_CNT         10      /* NOT CONFIGURABLE IN TOOLS */\r
+#define OS_ISR_MAX_CNT         10\r
 \r
 \r
 #endif /*OS_CFG_H_*/\r
index 9b11aecbb1e9f3265372ce327ec7583e70a21e4a..048368a44be43ce9c41a7953aac74b29772e097c 100644 (file)
                 </INTEGER-VALUE>\r
                 <BOOLEAN-VALUE>\r
                   <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsEvent/ArcOsEventAutoMask</DEFINITION-REF>\r
-                  <VALUE>false</VALUE>\r
+                  <VALUE>true</VALUE>\r
                 </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/ArcOsEventId</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
               </PARAMETER-VALUES>\r
             </CONTAINER>\r
             <CONTAINER UUID="b3d27dc1-6efc-4eb8-8c33-1502ae5ab5ea">\r
                 </INTEGER-VALUE>\r
                 <BOOLEAN-VALUE>\r
                   <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsEvent/ArcOsEventAutoMask</DEFINITION-REF>\r
-                  <VALUE>false</VALUE>\r
+                  <VALUE>true</VALUE>\r
                 </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/ArcOsEventId</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
               </PARAMETER-VALUES>\r
             </CONTAINER>\r
             <CONTAINER UUID="f7992fcb-1ea5-400d-a4d3-0910c9eafef8">\r
index 841f46fc51a133d53a23c0e12c000f057472233b..2008344b7efb3bebeaa53b3299d043177e4ae289 100644 (file)
@@ -106,9 +106,10 @@ void *Irq_Entry( uint8_t irq_nr, void *stack );
 void *Irq_Entry( void *stack_p );\r
 #endif\r
 \r
-//ISRType Irq_Attach( const OsIsrConstType *isrPtr );\r
+struct OsIsrConst;\r
+\r
 ISRType Irq_Attach( int vector );\r
-ISRType Irq_Attach2( const OsIsrConstType * );\r
+ISRType Irq_Attach2( const struct OsIsrConst * );\r
 \r
 /**\r
  * Attach an ISR type 1 to the interrupt controller.\r
index 73efee6580036c7f2b6024e9fc77f5e06d312db5..1a048adb801da3ee764bfe3b0a48781ba8dee7cb 100644 (file)
@@ -21,7 +21,7 @@
 \r
 /*\r
  * INCLUDE "RULES"\r
- *  Since this types and methods defined here are used by the drivers, they should\r
+ *  Since the types and methods defined here are used by the drivers, they should\r
  *  include it. E.g. #include "isr.h"\r
  *\r
  *  This file is also used internally by the kernel\r
@@ -54,7 +54,8 @@
                        .appOwner = _app,      \\r
                  };                    \\r
 \r
-#define _ISR_INSTALL_ISR2(_name, _entry, _unique, _vector,_priority,_app )        \\r
+\r
+#define __ISR_INSTALL_ISR2(_name, _entry, _unique, _vector,_priority,_app )        \\r
        do { \\r
          const OsIsrConstType _entry ## _unique = { \\r
                        .vector = _vector,   \\r
          Os_IsrAdd( & _entry ## _unique);   \\r
        } while(0);\r
 \r
+\r
+\r
+#define _ISR_INSTALL_ISR2(_name,_entry, _unique, _vector,_priority,_app)        \\r
+               __ISR_INSTALL_ISR2(_name,_entry, _unique, _vector,_priority,_app)\r
+\r
 #define ISR_INSTALL_ISR2(_name,_entry, _vector,_priority,_app)        \\r
                _ISR_INSTALL_ISR2(_name,_entry, __LINE__, _vector,_priority,_app)\r
 \r
 \r
+#define ISR_DECLARE_ISR1(_name, _entry, _unique, _vector,_priority,_app )        \\r
+         const OsIsrConstType _entry ## _unique = { \\r
+                       .vector = _vector,   \\r
+                       .type = ISR_TYPE_1, \\r
+                       .priority = _priority,      \\r
+                       .entry = _entry,      \\r
+                       .name = _name,      \\r
+                       .resourceMask = 0,  \\r
+                       .timingProtPtr = NULL, \\r
+                       .appOwner = _app,      \\r
+                 };                    \\r
+\r
+#define __ISR_INSTALL_ISR1(_name, _entry, _unique, _vector,_priority,_app )        \\r
+       do { \\r
+         const OsIsrConstType _entry ## _unique = { \\r
+                       .vector = _vector,   \\r
+                       .type = ISR_TYPE_2, \\r
+                       .priority = _priority,      \\r
+                       .entry = _entry,      \\r
+                       .name = _name,      \\r
+                       .resourceMask = 0,  \\r
+                       .timingProtPtr = NULL, \\r
+                       .appOwner = _app,      \\r
+                 };                    \\r
+         Os_IsrAdd( & _entry ## _unique);   \\r
+       } while(0);\r
+\r
+#define _ISR_INSTALL_ISR1(_name,_entry, _unique, _vector,_priority,_app)        \\r
+               __ISR_INSTALL_ISR1(_name,_entry, _unique, _vector,_priority,_app)\r
+\r
+#define ISR_INSTALL_ISR1(_name,_entry, _vector,_priority,_app)        \\r
+               _ISR_INSTALL_ISR1(_name,_entry, __LINE__, _vector,_priority,_app)\r
+\r
+\r
+\r
 /* ----------------------------[typedef]-------------------------------------*/\r
 \r
 \r
@@ -123,7 +164,7 @@ typedef struct {
  * OsIsrTimingProtection[C]    0..1\r
  * */\r
 \r
-typedef struct {\r
+typedef struct OsIsrConst {\r
        const char              *name;\r
        uint8_t                 core;\r
        int16_t                 vector;\r
index a9ebb9ecf8d7ffd19a4990a5da2110f800501e49..e11aeaa4ae064312d4fdb4c31b3937d6e84e0c7e 100644 (file)
@@ -69,7 +69,7 @@
  *                  Currently used for calculating the ceiling priority.\r
  */\r
 #define GEN_ETASK(     _id, _name, _priority, _scheduling, \\r
-                                       _autostart, _resource_int_p,  _resource_mask, \\r
+                                       _autostart, _resource_int_p,  _resource_mask, _event_mask, \\r
                                        _appl_owner, _accessing_appl_mask ) \\r
 {                                                                      \\r
        .pid = TASK_ID_ ## _id,                                 \\r
@@ -83,6 +83,7 @@
        .resourceIntPtr = _resource_int_p, \\r
        .scheduling = _scheduling, \\r
        .resourceAccess = _resource_mask, \\r
+       .eventMask = _event_mask, \\r
        .activationLimit = 1, \\r
        .applOwnerId = _appl_owner, \\r
        .accessingApplMask = _accessing_appl_mask, \\r
 #define GEN_ISR2( _name, _vector, _priority, _entry, _appOwner, _resourceMask ) \\r
 {                                      \\r
                .vector = _vector,             \\r
-               .type = ISR_TYPE_1,            \\r
+               .type = ISR_TYPE_2,            \\r
                .priority = _priority,         \\r
                .entry = _entry,               \\r
                .name = _name,                 \\r
index 7d81459b7cf75cfbdf916a03030b93ec2f47e904..ca267bf0e0876917d1f9e6c7ed4493f51942171f 100644 (file)
  * This service shall only be called from the extended task owning\r
  * the event.\r
  *\r
+ * From 7.6.1 in Autosar OS 4.0\r
+ * An event is accessible if the task for which the event can be set\r
+ * is accessible. Access means that these Operating System objects are\r
+ * allowed as parameters to API services.\r
+ *\r
  * @param Mask Mask of the events waited for\r
  * @return\r
  */\r
index d39fc443a09946bcb8784da2916081e6bbc0205f..9673c9fd5b1971da2a7b28698fbb6a519ae036f3 100644 (file)
@@ -88,7 +88,8 @@ typedef struct OsAlarmAutostart {
  * OsAlarmAutostart[C]          0..1 Autostart\r
  */\r
 typedef struct OsAlarm {\r
-       char    name[16];\r
+       //char  name[16];\r
+       char    *name;\r
        /* Reference to counter */\r
        struct OsCounter *counter;\r
 \r
@@ -162,7 +163,7 @@ static inline StatusType Os_AlarmGetBase(AlarmType alarm_id, AlarmBaseRefType in
 \r
 static inline ApplicationType Os_AlarmGetApplicationOwner( AlarmType id ) {\r
        ApplicationType rv;\r
-#if (OS_RESOURCE_CNT!=0)\r
+#if (OS_ALARM_CNT!=0)\r
        rv = (id < OS_ALARM_CNT) ? Os_AlarmGet(id)->applOwnerId : INVALID_OSAPPLICATION;\r
 #else\r
        (void)id;\r
index 10f50515d6d293d2f23dbe5f9bb2c32d43e94c1b..9f93608db3326c9676b8a7970c68635456cada7d 100644 (file)
@@ -205,6 +205,7 @@ typedef struct OsTaskConst {
        char                    name[16];\r
        enum OsTaskSchedule scheduling;\r
        uint32_t                resourceAccess;\r
+       uint32_t                eventMask;\r
        // pointer to internal resource\r
        // NULL if none\r
        OsResourceType  *resourceIntPtr;\r
index e5e9e1749f83b96f6ce551a9f50e71b344f0aff3..c9fc4c906f4e135cecff86b0c84f2baf96500a4f 100644 (file)
@@ -90,10 +90,7 @@ ISRType Os_IsrAdd( const OsIsrConstType * restrict isrPtr ) {
        ISRType id;
 
        id = Os_Sys.isrCnt++;
-       /* We have no VAR entires for ISR1 */
-       if( isrPtr->type == ISR_TYPE_2) {
-               Os_IsrVarList[id].constPtr = isrPtr;
-       }
+       Os_IsrVarList[id].constPtr = isrPtr;
        Os_VectorToIsr[isrPtr->vector] = id;
        Irq_EnableVector( isrPtr->vector, isrPtr->priority, Os_ApplGetCore(isrPtr->appOwner )  );
 
@@ -261,6 +258,16 @@ void *Os_Isr( void *stack, int16_t vector ) {
        OsIsrVarType *isrPtr =  &Os_IsrVarList[Os_VectorToIsr[vector]];
        OsTaskVarType *taskPtr = NULL;
 
+       assert( isrPtr != NULL );
+//     if( isrPtr == NULL ) {
+//             Os_ArchPanic(OS_ERR_SPURIOUS_INTERRUPT, NULL, NULL );
+//     }
+
+       if( isrPtr->constPtr->type == ISR_TYPE_1) {
+               isrPtr->constPtr->entry();
+               return stack;
+       }
+
        /* Check if we interrupted a task or ISR */
        if( Os_Sys.intNestCnt == 0 ) {
                /* We interrupted a task */