Subversion Repositories HelenOS-historic

Rev

Rev 1288 | Rev 1702 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1288 Rev 1595
Line 30... Line 30...
30
#define __INTERRUPT_H__
30
#define __INTERRUPT_H__
31
 
31
 
32
#include <arch/interrupt.h>
32
#include <arch/interrupt.h>
33
#include <typedefs.h>
33
#include <typedefs.h>
34
#include <arch/types.h>
34
#include <arch/types.h>
-
 
35
#include <proc/task.h>
-
 
36
#include <proc/thread.h>
-
 
37
#include <arch.h>
-
 
38
#include <console/klog.h>
-
 
39
#include <ipc/irq.h>
35
 
40
 
36
#ifndef IVT_ITEMS
41
#ifndef IVT_ITEMS
37
#   define IVT_ITEMS 0
42
#   define IVT_ITEMS 0
38
#endif
43
#endif
39
 
44
 
40
#ifndef IVT_FIRST
45
#ifndef IVT_FIRST
41
#   define IVT_FIRST 0
46
#   define IVT_FIRST 0
42
#endif
47
#endif
43
 
48
 
-
 
49
#define fault_if_from_uspace(istate, cmd, ...) \
-
 
50
{ \
-
 
51
    if (istate_from_uspace(istate)) { \
-
 
52
                klog_printf(cmd, ##__VA_ARGS__); \
-
 
53
                klog_printf("Task %lld got exception at PC:%P. Task killed.", TASK->taskid, istate_get_pc(istate)); \
-
 
54
        task_kill(TASK->taskid); \
-
 
55
        thread_exit(); \
-
 
56
    } \
-
 
57
}
-
 
58
 
-
 
59
 
44
extern iroutine exc_register(int n, const char *name, iroutine f);
60
extern iroutine exc_register(int n, const char *name, iroutine f);
45
extern void exc_dispatch(int n, istate_t *t);
61
extern void exc_dispatch(int n, istate_t *t);
46
void exc_init(void);
62
void exc_init(void);
47
 
63
 
48
#endif
64
#endif