BNX2X: Spatch dev_addr->ea
[akaros.git] / kern / include / trap.h
index 4f3d223..60e25d5 100644 (file)
 
 // func ptr for interrupt service routines
 typedef void (*isr_t)(struct hw_trapframe *hw_tf, void *data);
-struct irq_handler {
-       isr_t isr;
-       void *data;
-       struct irq_handler *next;
-};
 
 void idt_init(void);
-void register_raw_irq(unsigned int vector, isr_t handler, void *data);
-void unregister_raw_irq(unsigned int vector, isr_t handler, void *data);
-int register_dev_irq(int irq, isr_t handler, void *irq_arg);
+int register_irq(int irq, isr_t handler, void *irq_arg, uint32_t tbdf);
+int route_irqs(int cpu_vec, int coreid);
 void print_trapframe(struct hw_trapframe *hw_tf);
 void print_user_ctx(struct user_context *ctx);
-void page_fault_handler(struct hw_trapframe *hw_tf);
 /* Generic per-core timer interrupt handler.  set_percore_timer() will fire the
  * timer_interrupt(). */
 void set_core_timer(uint32_t usec, bool periodic);
@@ -37,13 +30,11 @@ extern inline void init_fp_state(void);
 void set_stack_top(uintptr_t stacktop);
 uintptr_t get_stack_top(void);
 
-/* It's important that this is inline and that ctx is not a stack variable */
-static inline void save_kernel_ctx(struct kernel_ctx *ctx)
-                   __attribute__((always_inline, returns_twice));
-void pop_kernel_ctx(struct kernel_ctx *ctx) __attribute__((noreturn));
-
-/* Sends a non-maskable interrupt, which we have print a trapframe. */
 void send_nmi(uint32_t os_coreid);
+void reflect_unhandled_trap(unsigned int trap_nr, unsigned int err,
+                            unsigned long aux);
+void __arch_reflect_trap_hwtf(struct hw_trapframe *hw_tf, unsigned int trap_nr,
+                              unsigned int err, unsigned long aux);
 
 /* Kernel messages.  This is an in-order 'active message' style messaging
  * subsystem, where you can instruct other cores (including your own) to execute
@@ -86,6 +77,7 @@ void kernel_msg_init(void);
 uint32_t send_kernel_message(uint32_t dst, amr_t pc, long arg0, long arg1,
                              long arg2, int type);
 void handle_kmsg_ipi(struct hw_trapframe *hw_tf, void *data);
+bool has_routine_kmsg(void);
 void process_routine_kmsg(void);
 void print_kmsgs(uint32_t coreid);