diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-08-21 16:39:52 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-08-21 16:39:52 +0000 |
commit | eb562f2c860061868e4ea1a821a84147b694dd07 (patch) | |
tree | 4273d9ac092dab0e00e065a365595a2b30fcc95f /c/src/lib/libbsp/i386/shared | |
parent | Spacing changes (diff) | |
download | rtems-eb562f2c860061868e4ea1a821a84147b694dd07.tar.bz2 |
Patch from Eric Valette <valette@crf.canon.fr>:
Here is a patch that enables to catch exception
and get message before crashing RTEMS :)
It should be generic to any Intel port although enabled
only for pc386 BSP...
[Joel] I fixed the bug I introduced in irq_asm.s...
Diffstat (limited to 'c/src/lib/libbsp/i386/shared')
-rw-r--r-- | c/src/lib/libbsp/i386/shared/irq/irq.c | 23 | ||||
-rw-r--r-- | c/src/lib/libbsp/i386/shared/irq/irq_asm.s | 5 |
2 files changed, 21 insertions, 7 deletions
diff --git a/c/src/lib/libbsp/i386/shared/irq/irq.c b/c/src/lib/libbsp/i386/shared/irq/irq.c index 356112076f..9dea372e0f 100644 --- a/c/src/lib/libbsp/i386/shared/irq/irq.c +++ b/c/src/lib/libbsp/i386/shared/irq/irq.c @@ -14,7 +14,9 @@ #include <bsp.h> #include <irq.h> - +#include <rtems/score/thread.h> +#include <rtems/score/apiext.h> + /* * pointer to the mask representing the additionnal irq vectors * that must be disabled when a particular entry is activated. @@ -360,11 +362,18 @@ int pc386_rtems_irq_mngt_get(rtems_irq_global_settings** config) void _ThreadProcessSignalsFromIrq (CPU_Exception_frame* ctx) { /* - * If I understand the _Thread_Dispatch routine correctly - * I do not see how this routine can be called given the - * actual code. I plan to use this so far unused feature - * to implement remote debugger ptrace("attach", ...) - * command. + * Process pending signals that have not already been + * processed by _Thread_Displatch. This happens quite + * unfrequently : the ISR must have posted an action + * to the current running thread. + */ + if ( _Thread_Do_post_task_switch_extension || + _Thread_Executing->do_post_task_switch_extension ) { + _Thread_Executing->do_post_task_switch_extension = FALSE; + _API_extensions_Run_postswitch(); + } + /* + * I plan to process other thread related events here. + * This will include DEBUG session requsted from keyboard... */ - printk(" _ThreadProcessSignalsFromIrq called! mail valette@crf.canon.fr\n"); } diff --git a/c/src/lib/libbsp/i386/shared/irq/irq_asm.s b/c/src/lib/libbsp/i386/shared/irq/irq_asm.s index a3954d0961..4be08ed992 100644 --- a/c/src/lib/libbsp/i386/shared/irq/irq_asm.s +++ b/c/src/lib/libbsp/i386/shared/irq/irq_asm.s @@ -14,6 +14,8 @@ #include "asm.h" #include <irq_asm.h> + BEGIN_CODE + SYM (_ISR_Handler): /* * Before this was point is reached the vectors unique @@ -243,3 +245,6 @@ SYM (default_raw_idt_handler): popa iret +END_CODE + +END |