linux/arch/blackfin/kernel/exception.c
<<
>>
Prefs
   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