processor-i386.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
  3. * Licensed under the GPL
  4. */
  5. #ifndef __UM_PROCESSOR_I386_H
  6. #define __UM_PROCESSOR_I386_H
  7. extern int host_has_xmm;
  8. extern int host_has_cmov;
  9. struct arch_thread {
  10. unsigned long debugregs[8];
  11. int debugregs_seq;
  12. };
  13. #define INIT_ARCH_THREAD { .debugregs = { [ 0 ... 7 ] = 0 }, \
  14. .debugregs_seq = 0 }
  15. #include "asm/arch/user.h"
  16. /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
  17. static inline void rep_nop(void)
  18. {
  19. __asm__ __volatile__("rep;nop": : :"memory");
  20. }
  21. #define cpu_relax() rep_nop()
  22. /*
  23. * Default implementation of macro that returns current
  24. * instruction pointer ("program counter"). Stolen
  25. * from asm-i386/processor.h
  26. */
  27. #define current_text_addr() \
  28. ({ void *pc; __asm__("movl $1f,%0\n1:":"=g" (pc)); pc; })
  29. #define ARCH_IS_STACKGROW(address) \
  30. (address + 32 >= UPT_SP(&current->thread.regs.regs))
  31. #include "asm/processor-generic.h"
  32. #endif
  33. /*
  34. * Overrides for Emacs so that we follow Linus's tabbing style.
  35. * Emacs will notice this stuff at the end of the file and automatically
  36. * adjust the settings for this buffer only. This must remain at the end
  37. * of the file.
  38. * ---------------------------------------------------------------------------
  39. * Local variables:
  40. * c-file-style: "linux"
  41. * End:
  42. */