Rev 2131 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2131 | Rev 2456 | ||
|---|---|---|---|
| Line 36... | Line 36... | ||
| 36 | #include <arch/cp0.h> |
36 | #include <arch/cp0.h> |
| 37 | #include <ipc/irq.h> |
37 | #include <ipc/irq.h> |
| 38 | #include <arch/drivers/serial.h> |
38 | #include <arch/drivers/serial.h> |
| 39 | #include <console/chardev.h> |
39 | #include <console/chardev.h> |
| 40 | #include <console/console.h> |
40 | #include <console/console.h> |
| - | 41 | #include <synch/rcu.h> |
|
| 41 | 42 | ||
| 42 | #define SERIAL_IRQ 2 |
43 | #define SERIAL_IRQ 2 |
| 43 | 44 | ||
| 44 | static irq_t serial_irq; |
45 | static irq_t serial_irq; |
| 45 | static chardev_t console; |
46 | static chardev_t console; |
| Line 110... | Line 111... | ||
| 110 | } |
111 | } |
| 111 | 112 | ||
| 112 | /** Process keyboard interrupt. Does not work in simics? */ |
113 | /** Process keyboard interrupt. Does not work in simics? */ |
| 113 | static void serial_irq_handler(irq_t *irq, void *arg, ...) |
114 | static void serial_irq_handler(irq_t *irq, void *arg, ...) |
| 114 | { |
115 | { |
| 115 | if ((irq->notif_cfg.notify) && (irq->notif_cfg.answerbox)) |
116 | if ((rcu_dereference_pointer(irq->notif_cfg).notify) && (rcu_dereference_pointer(irq->notif_cfg).answerbox)) |
| 116 | ipc_irq_send_notif(irq); |
117 | ipc_irq_send_notif(irq); |
| 117 | else |
118 | else |
| 118 | serial_handler(); |
119 | serial_handler(); |
| 119 | } |
120 | } |
| 120 | 121 | ||