current.h 835 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef _ASM_POWERPC_CURRENT_H
  2. #define _ASM_POWERPC_CURRENT_H
  3. #ifdef __KERNEL__
  4. /*
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License
  7. * as published by the Free Software Foundation; either version
  8. * 2 of the License, or (at your option) any later version.
  9. */
  10. struct task_struct;
  11. #ifdef __powerpc64__
  12. #include <linux/stddef.h>
  13. #include <asm/paca.h>
  14. static inline struct task_struct *get_current(void)
  15. {
  16. struct task_struct *task;
  17. __asm__ __volatile__("ld %0,%1(13)"
  18. : "=r" (task)
  19. : "i" (offsetof(struct paca_struct, __current)));
  20. return task;
  21. }
  22. #define current get_current()
  23. #else
  24. /*
  25. * We keep `current' in r2 for speed.
  26. */
  27. register struct task_struct *current asm ("r2");
  28. #endif
  29. #endif /* __KERNEL__ */
  30. #endif /* _ASM_POWERPC_CURRENT_H */