switch_to.h 997 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright 2004-2009 Analog Devices Inc.
  3. * Tony Kou (tonyko@lineo.ca)
  4. *
  5. * Licensed under the GPL-2 or later
  6. */
  7. #ifndef _BLACKFIN_SWITCH_TO_H
  8. #define _BLACKFIN_SWITCH_TO_H
  9. #define prepare_to_switch() do { } while(0)
  10. /*
  11. * switch_to(n) should switch tasks to task ptr, first checking that
  12. * ptr isn't the current task, in which case it does nothing.
  13. */
  14. #include <asm/l1layout.h>
  15. #include <asm/mem_map.h>
  16. asmlinkage struct task_struct *resume(struct task_struct *prev, struct task_struct *next);
  17. #ifndef CONFIG_SMP
  18. #define switch_to(prev,next,last) \
  19. do { \
  20. memcpy (&task_thread_info(prev)->l1_task_info, L1_SCRATCH_TASK_INFO, \
  21. sizeof *L1_SCRATCH_TASK_INFO); \
  22. memcpy (L1_SCRATCH_TASK_INFO, &task_thread_info(next)->l1_task_info, \
  23. sizeof *L1_SCRATCH_TASK_INFO); \
  24. (last) = resume (prev, next); \
  25. } while (0)
  26. #else
  27. #define switch_to(prev, next, last) \
  28. do { \
  29. (last) = resume(prev, next); \
  30. } while (0)
  31. #endif
  32. #endif /* _BLACKFIN_SWITCH_TO_H */