Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
exception.c
Go to the documentation of this file.
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 
11 int 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 
24 
25  return 0;
26 }
28 
29 int 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 
42 
43  return 0;
44 }