diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-05-31 14:07:15 +0400 |
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-05-31 14:07:15 +0400 |
| commit | e37c83c06c2690157a989df40dc99a6b61c9ea15 (patch) | |
| tree | 024dfb8b2c9abeec9ca7cb0c0136c276d9aacc91 /arch/blackfin/kernel/exception.c | |
| parent | ce1f7d30766f6549db6fa0b9e595e0d26a5b7d9a (diff) | |
| parent | 67a3e12b05e055c0415c556a315a3d3eb637e29e (diff) | |
| download | linux-e37c83c06c2690157a989df40dc99a6b61c9ea15.tar.xz | |
Merge commit 'v2.6.35-rc1' into for-2.6.36
Diffstat (limited to 'arch/blackfin/kernel/exception.c')
| -rw-r--r-- | arch/blackfin/kernel/exception.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/exception.c b/arch/blackfin/kernel/exception.c new file mode 100644 index 000000000000..9208b5fd5186 --- /dev/null +++ b/arch/blackfin/kernel/exception.c @@ -0,0 +1,45 @@ +/* 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); |
