|  | /* | 
|  | * include/asm-v850/current.h -- Current task | 
|  | * | 
|  | *  Copyright (C) 2001,02  NEC Corporation | 
|  | *  Copyright (C) 2001,02  Miles Bader <miles@gnu.org> | 
|  | * | 
|  | * This file is subject to the terms and conditions of the GNU General | 
|  | * Public License.  See the file COPYING in the main directory of this | 
|  | * archive for more details. | 
|  | * | 
|  | * Written by Miles Bader <miles@gnu.org> | 
|  | */ | 
|  |  | 
|  | #ifndef __V850_CURRENT_H__ | 
|  | #define __V850_CURRENT_H__ | 
|  |  | 
|  | #ifndef __ASSEMBLY__ /* <linux/thread_info.h> is not asm-safe.  */ | 
|  | #include <linux/thread_info.h> | 
|  | #endif | 
|  |  | 
|  | #include <asm/macrology.h> | 
|  |  | 
|  |  | 
|  | /* Register used to hold the current task pointer while in the kernel. | 
|  | Any `call clobbered' register without a special meaning should be OK, | 
|  | but check asm/v850/kernel/entry.S to be sure.  */ | 
|  | #define CURRENT_TASK_REGNUM	16 | 
|  | #define CURRENT_TASK 		macrology_paste (r, CURRENT_TASK_REGNUM) | 
|  |  | 
|  |  | 
|  | #ifdef __ASSEMBLY__ | 
|  |  | 
|  | /* Put a pointer to the current task structure into REG.  */ | 
|  | #define GET_CURRENT_TASK(reg)						\ | 
|  | GET_CURRENT_THREAD(reg);					\ | 
|  | ld.w	TI_TASK[reg], reg | 
|  |  | 
|  | #else /* !__ASSEMBLY__ */ | 
|  |  | 
|  | /* A pointer to the current task.  */ | 
|  | register struct task_struct *current					\ | 
|  | __asm__ (macrology_stringify (CURRENT_TASK)); | 
|  |  | 
|  | #endif /* __ASSEMBLY__ */ | 
|  |  | 
|  |  | 
|  | #endif /* _V850_CURRENT_H */ |