exception.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Based on arch/arm/include/asm/exception.h
  3. *
  4. * Copyright (C) 2012 ARM Ltd.
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License version 2 as
  8. * published by the Free Software Foundation.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. #ifndef __ASM_EXCEPTION_H
  19. #define __ASM_EXCEPTION_H
  20. #include <asm/esr.h>
  21. #include <linux/interrupt.h>
  22. #define __exception __attribute__((section(".exception.text")))
  23. #ifdef CONFIG_FUNCTION_GRAPH_TRACER
  24. #define __exception_irq_entry __irq_entry
  25. #else
  26. #define __exception_irq_entry __exception
  27. #endif
  28. static inline u32 disr_to_esr(u64 disr)
  29. {
  30. unsigned int esr = ESR_ELx_EC_SERROR << ESR_ELx_EC_SHIFT;
  31. if ((disr & DISR_EL1_IDS) == 0)
  32. esr |= (disr & DISR_EL1_ESR_MASK);
  33. else
  34. esr |= (disr & ESR_ELx_ISS_MASK);
  35. return esr;
  36. }
  37. #endif /* __ASM_EXCEPTION_H */