Changeset b285860 in rtems for cpukit/score/cpu/i386/cpu.c


Ignore:
Timestamp:
08/31/98 23:03:45 (24 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
d9d75fc
Parents:
de9edc4
Message:

Patch from Eric Valette <valette@…>:

Eric> NB : there is still a bug on PC386 serial line : exit does not
Eric> flush the remaining output queue. As this is not a bug in the
Eric> driver itself but somewhere in PC386 initialization/termios
Eric> relationship it will be part of another patch.

Eric> NB2 : As Emmanuel excerced the exception hanlder code, while
Eric> porting the SMC driver to the new BSD stack, we found a bug
Eric> in the exception handler : it shall not delete the current
Eric> thread in case we are running at interrupt level. This will
Eric> be part of another patch...

So here is the patch. This patch fixes the two problems mentionned above

+ it use vpath mechanism intead of copying the irq related files in

the right directory. This avoid to compile them each time and is
more homogenous with other Makefiles.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/score/cpu/i386/cpu.c

    rde9edc4 rb285860  
    105105         ctx->faultCode);
    106106  printk("----------------------------------------------------------\n\n");
    107   printk(" ************ FAULTY THREAD WILL BE DELETED **************\n");
    108   /*
    109    * OK I could probably use a simplified version but at least this
    110    * should work.
    111    */
    112   rtems_task_delete(_Thread_Executing->Object.id);
     107  if (_ISR_Nest_level > 0) {
     108    /*
     109     * In this case we shall not delete the task interrupted as
     110     * it has nothing to do with the fault. We cannot return either
     111     * because the eip points to the faulty instruction so...
     112     */
     113    printk("Exception while executing ISR!!!. System locked\n");
     114    while(1);
     115  }
     116  else {
     117    /*
     118     * OK I could probably use a simplified version but at least this
     119     * should work.
     120     */
     121    printk(" ************ FAULTY THREAD WILL BE DELETED **************\n");
     122    rtems_task_delete(_Thread_Executing->Object.id);
     123  }
    113124}
    114125
Note: See TracChangeset for help on using the changeset viewer.