• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/blackfin/kernel/
1/* Basic functions for adding/removing custom exception handlers
2 *
3 * Copyright 2004-2009 Analog Devices Inc.
4 *
5 * Licensed under the GPL-2 or later
6 */
7
8#include <linux/module.h>
9#include <asm/irq_handler.h>
10
11int bfin_request_exception(unsigned int exception, void (*handler)(void))
12{
13	void (*curr_handler)(void);
14
15	if (exception > 0x3F)
16		return -EINVAL;
17
18	curr_handler = ex_table[exception];
19
20	if (curr_handler != ex_replaceable)
21		return -EBUSY;
22
23	ex_table[exception] = handler;
24
25	return 0;
26}
27EXPORT_SYMBOL(bfin_request_exception);
28
29int bfin_free_exception(unsigned int exception, void (*handler)(void))
30{
31	void (*curr_handler)(void);
32
33	if (exception > 0x3F)
34		return -EINVAL;
35
36	curr_handler = ex_table[exception];
37
38	if (curr_handler != handler)
39		return -EBUSY;
40
41	ex_table[exception] = ex_replaceable;
42
43	return 0;
44}
45EXPORT_SYMBOL(bfin_free_exception);
46