Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef _ASM_X86_ASM_H
  2. #define _ASM_X86_ASM_H
  3.  
  4. #ifdef __ASSEMBLY__
  5. # define __ASM_FORM(x)  x
  6. # define __ASM_EX_SEC   .section __ex_table, "a"
  7. #else
  8. # define __ASM_FORM(x)  " " #x " "
  9. # define __ASM_EX_SEC   " .section __ex_table,\"a\"\n"
  10. #endif
  11.  
  12. #ifdef CONFIG_X86_32
  13. # define __ASM_SEL(a,b) __ASM_FORM(a)
  14. #else
  15. # define __ASM_SEL(a,b) __ASM_FORM(b)
  16. #endif
  17.  
  18. #define __ASM_SIZE(inst)        __ASM_SEL(inst##l, inst##q)
  19. #define __ASM_REG(reg)          __ASM_SEL(e##reg, r##reg)
  20.  
  21. #define _ASM_PTR        __ASM_SEL(.long, .quad)
  22. #define _ASM_ALIGN      __ASM_SEL(.balign 4, .balign 8)
  23.  
  24. #define _ASM_MOV        __ASM_SIZE(mov)
  25. #define _ASM_INC        __ASM_SIZE(inc)
  26. #define _ASM_DEC        __ASM_SIZE(dec)
  27. #define _ASM_ADD        __ASM_SIZE(add)
  28. #define _ASM_SUB        __ASM_SIZE(sub)
  29. #define _ASM_XADD       __ASM_SIZE(xadd)
  30.  
  31. #define _ASM_AX         __ASM_REG(ax)
  32. #define _ASM_BX         __ASM_REG(bx)
  33. #define _ASM_CX         __ASM_REG(cx)
  34. #define _ASM_DX         __ASM_REG(dx)
  35. #define _ASM_SP         __ASM_REG(sp)
  36. #define _ASM_BP         __ASM_REG(bp)
  37. #define _ASM_SI         __ASM_REG(si)
  38. #define _ASM_DI         __ASM_REG(di)
  39.  
  40. /* Exception table entry */
  41. #ifdef __ASSEMBLY__
  42. # define _ASM_EXTABLE(from,to)      \
  43.         __ASM_EX_SEC ;              \
  44.         _ASM_ALIGN ;                \
  45.         _ASM_PTR from , to ;        \
  46.         .previous
  47. #else
  48. # define _ASM_EXTABLE(from,to) \
  49.         __ASM_EX_SEC    \
  50.         _ASM_ALIGN "\n" \
  51.         _ASM_PTR #from "," #to "\n" \
  52.         " .previous\n"
  53. #endif
  54.  
  55. #endif /* _ASM_X86_ASM_H */
  56.