12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /* Basic functions for adding/removing custom exception handlers
- *
- * Copyright 2004-2009 Analog Devices Inc.
- *
- * Licensed under the GPL-2 or later
- */
- #include <linux/module.h>
- #include <asm/irq_handler.h>
- int bfin_request_exception(unsigned int exception, void (*handler)(void))
- {
- void (*curr_handler)(void);
- if (exception > 0x3F)
- return -EINVAL;
- curr_handler = ex_table[exception];
- if (curr_handler != ex_replaceable)
- return -EBUSY;
- ex_table[exception] = handler;
- return 0;
- }
- EXPORT_SYMBOL(bfin_request_exception);
- int bfin_free_exception(unsigned int exception, void (*handler)(void))
- {
- void (*curr_handler)(void);
- if (exception > 0x3F)
- return -EINVAL;
- curr_handler = ex_table[exception];
- if (curr_handler != handler)
- return -EBUSY;
- ex_table[exception] = ex_replaceable;
- return 0;
- }
- EXPORT_SYMBOL(bfin_free_exception);
|