Rev 3055 | Rev 3707 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3055 | Rev 3613 | ||
---|---|---|---|
Line 84... | Line 84... | ||
84 | * CPU is interrupts_disable()'d. |
84 | * CPU is interrupts_disable()'d. |
85 | */ |
85 | */ |
86 | void exc_dispatch(int n, istate_t *istate) |
86 | void exc_dispatch(int n, istate_t *istate) |
87 | { |
87 | { |
88 | ASSERT(n < IVT_ITEMS); |
88 | ASSERT(n < IVT_ITEMS); |
- | 89 | ||
- | 90 | #ifdef CONFIG_UDEBUG |
|
- | 91 | if (THREAD) THREAD->udebug.uspace_state = istate; |
|
- | 92 | #endif |
|
89 | 93 | ||
90 | exc_table[n].f(n + IVT_FIRST, istate); |
94 | exc_table[n].f(n + IVT_FIRST, istate); |
- | 95 | ||
- | 96 | #ifdef CONFIG_UDEBUG |
|
- | 97 | if (THREAD) THREAD->udebug.uspace_state = NULL; |
|
- | 98 | #endif |
|
- | 99 | ||
91 | /* This is a safe place to exit exiting thread */ |
100 | /* This is a safe place to exit exiting thread */ |
92 | if (THREAD && THREAD->interrupted && istate_from_uspace(istate)) |
101 | if (THREAD && THREAD->interrupted && istate_from_uspace(istate)) |
93 | thread_exit(); |
102 | thread_exit(); |
94 | } |
103 | } |
95 | 104 |