linux/arch/blackfin/include/asm/switch_to.h
<<
>>
Prefs
   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
   8#ifndef _BLACKFIN_SWITCH_TO_H
   9#define _BLACKFIN_SWITCH_TO_H
  10
  11#define prepare_to_switch()     do { } while(0)
  12
  13/*
  14 * switch_to(n) should switch tasks to task ptr, first checking that
  15 * ptr isn't the current task, in which case it does nothing.
  16 */
  17
  18#include <asm/l1layout.h>
  19#include <asm/mem_map.h>
  20
  21asmlinkage struct task_struct *resume(struct task_struct *prev, struct task_struct *next);
  22
  23#ifndef CONFIG_SMP
  24#define switch_to(prev,next,last) \
  25do {    \
  26        memcpy (&task_thread_info(prev)->l1_task_info, L1_SCRATCH_TASK_INFO, \
  27                sizeof *L1_SCRATCH_TASK_INFO); \
  28        memcpy (L1_SCRATCH_TASK_INFO, &task_thread_info(next)->l1_task_info, \
  29                sizeof *L1_SCRATCH_TASK_INFO); \
  30        (last) = resume (prev, next);   \
  31} while (0)
  32#else
  33#define switch_to(prev, next, last) \
  34do {    \
  35        (last) = resume(prev, next);   \
  36} while (0)
  37#endif
  38
  39#endif /* _BLACKFIN_SWITCH_TO_H */
  40