sigcontext_64.h 767 B

123456789101112131415161718192021222324252627282930313233
  1. /*
  2. * Copyright 2003 PathScale, Inc.
  3. *
  4. * Licensed under the GPL
  5. */
  6. #ifndef __SYSDEP_X86_64_SIGCONTEXT_H
  7. #define __SYSDEP_X86_64_SIGCONTEXT_H
  8. #include <generated/user_constants.h>
  9. #define SC_OFFSET(sc, field) \
  10. *((unsigned long *) &(((char *) (sc))[HOST_##field]))
  11. #define SC_CR2(sc) SC_OFFSET(sc, SC_CR2)
  12. #define SC_ERR(sc) SC_OFFSET(sc, SC_ERR)
  13. #define SC_TRAPNO(sc) SC_OFFSET(sc, SC_TRAPNO)
  14. #define IP_RESTART_SYSCALL(ip) ((ip) -= 2)
  15. #define GET_FAULTINFO_FROM_SC(fi, sc) \
  16. { \
  17. (fi).cr2 = SC_CR2(sc); \
  18. (fi).error_code = SC_ERR(sc); \
  19. (fi).trap_no = SC_TRAPNO(sc); \
  20. }
  21. /* This is Page Fault */
  22. #define SEGV_IS_FIXABLE(fi) ((fi)->trap_no == 14)
  23. /* No broken SKAS API, which doesn't pass trap_no, here. */
  24. #define SEGV_MAYBE_FIXABLE(fi) 0
  25. #endif