interrupt.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * (C) Copyright 2009
  3. * Graeme Russ, graeme.russ@gmail.com
  4. *
  5. * (C) Copyright 2002
  6. * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
  7. *
  8. * SPDX-License-Identifier: GPL-2.0+
  9. */
  10. #ifndef __ASM_INTERRUPT_H_
  11. #define __ASM_INTERRUPT_H_ 1
  12. #include <asm/types.h>
  13. #define SYS_NUM_IRQS 16
  14. /* Architecture defined exceptions */
  15. enum x86_exception {
  16. EXC_DE = 0,
  17. EXC_DB,
  18. EXC_NMI,
  19. EXC_BP,
  20. EXC_OF,
  21. EXC_BR,
  22. EXC_UD,
  23. EXC_NM,
  24. EXC_DF,
  25. EXC_CSO,
  26. EXC_TS,
  27. EXC_NP,
  28. EXC_SS,
  29. EXC_GP,
  30. EXC_PF,
  31. EXC_MF = 16,
  32. EXC_AC,
  33. EXC_MC,
  34. EXC_XM,
  35. EXC_VE
  36. };
  37. /* arch/x86/cpu/interrupts.c */
  38. void set_vector(u8 intnum, void *routine);
  39. /* Architecture specific functions */
  40. void mask_irq(int irq);
  41. void unmask_irq(int irq);
  42. void specific_eoi(int irq);
  43. extern char exception_stack[];
  44. /**
  45. * configure_irq_trigger() - Configure IRQ triggering
  46. *
  47. * Switch the given interrupt to be level / edge triggered
  48. *
  49. * @param int_num legacy interrupt number (3-7, 9-15)
  50. * @param is_level_triggered true for level triggered interrupt, false for
  51. * edge triggered interrupt
  52. */
  53. void configure_irq_trigger(int int_num, bool is_level_triggered);
  54. void *x86_get_idt(void);
  55. #endif