Commit ab03591d authored by Al Viro's avatar Al Viro Committed by Linus Torvalds
Browse files

[PATCH] ia64: task_thread_info()



on ia64 thread_info is at the constant offset from task_struct and stack
is embedded into the same beast.  Set __HAVE_THREAD_FUNCTIONS, made
task_thread_info() just add a constant.
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 718d6114
...@@ -766,7 +766,7 @@ ia64_mca_modify_original_stack(struct pt_regs *regs, ...@@ -766,7 +766,7 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,
l = strlen(previous_current->comm); l = strlen(previous_current->comm);
snprintf(comm, sizeof(comm), "%s %*s %d", snprintf(comm, sizeof(comm), "%s %*s %d",
current->comm, l, previous_current->comm, current->comm, l, previous_current->comm,
previous_current->thread_info->cpu); task_thread_info(previous_current)->cpu);
} }
memcpy(current->comm, comm, sizeof(current->comm)); memcpy(current->comm, comm, sizeof(current->comm));
...@@ -1423,7 +1423,7 @@ format_mca_init_stack(void *mca_data, unsigned long offset, ...@@ -1423,7 +1423,7 @@ format_mca_init_stack(void *mca_data, unsigned long offset,
struct task_struct *p = (struct task_struct *)((char *)mca_data + offset); struct task_struct *p = (struct task_struct *)((char *)mca_data + offset);
struct thread_info *ti; struct thread_info *ti;
memset(p, 0, KERNEL_STACK_SIZE); memset(p, 0, KERNEL_STACK_SIZE);
ti = (struct thread_info *)((char *)p + IA64_TASK_SIZE); ti = task_thread_info(p);
ti->flags = _TIF_MCA_INIT; ti->flags = _TIF_MCA_INIT;
ti->preempt_count = 1; ti->preempt_count = 1;
ti->task = p; ti->task = p;
......
...@@ -655,11 +655,11 @@ set_sigdelayed(pid_t pid, int signo, int code, void __user *addr) ...@@ -655,11 +655,11 @@ set_sigdelayed(pid_t pid, int signo, int code, void __user *addr)
if (!t) if (!t)
return; return;
t->thread_info->sigdelayed.signo = signo; task_thread_info(t)->sigdelayed.signo = signo;
t->thread_info->sigdelayed.code = code; task_thread_info(t)->sigdelayed.code = code;
t->thread_info->sigdelayed.addr = addr; task_thread_info(t)->sigdelayed.addr = addr;
t->thread_info->sigdelayed.start_time = start_time; task_thread_info(t)->sigdelayed.start_time = start_time;
t->thread_info->sigdelayed.pid = pid; task_thread_info(t)->sigdelayed.pid = pid;
wmb(); wmb();
set_tsk_thread_flag(t, TIF_SIGDELAYED); set_tsk_thread_flag(t, TIF_SIGDELAYED);
} }
......
...@@ -57,11 +57,20 @@ struct thread_info { ...@@ -57,11 +57,20 @@ struct thread_info {
/* how to get the thread information struct from C */ /* how to get the thread information struct from C */
#define current_thread_info() ((struct thread_info *) ((char *) current + IA64_TASK_SIZE)) #define current_thread_info() ((struct thread_info *) ((char *) current + IA64_TASK_SIZE))
#define alloc_thread_info(tsk) ((struct thread_info *) ((char *) (tsk) + IA64_TASK_SIZE)) #define alloc_thread_info(tsk) ((struct thread_info *) ((char *) (tsk) + IA64_TASK_SIZE))
#define task_thread_info(tsk) ((struct thread_info *) ((char *) (tsk) + IA64_TASK_SIZE))
#else #else
#define current_thread_info() ((struct thread_info *) 0) #define current_thread_info() ((struct thread_info *) 0)
#define alloc_thread_info(tsk) ((struct thread_info *) 0) #define alloc_thread_info(tsk) ((struct thread_info *) 0)
#define task_thread_info(tsk) ((struct thread_info *) 0)
#endif #endif
#define free_thread_info(ti) /* nothing */ #define free_thread_info(ti) /* nothing */
#define task_stack_page(tsk) ((void *)(tsk))
#define __HAVE_THREAD_FUNCTIONS
#define setup_thread_stack(p, org) \
*task_thread_info(p) = *task_thread_info(org); \
task_thread_info(p)->task = (p);
#define end_of_stack(p) (unsigned long *)((void *)(p) + IA64_RBS_OFFSET)
#define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR #define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
#define alloc_task_struct() ((task_t *)__get_free_pages(GFP_KERNEL, KERNEL_STACK_SIZE_ORDER)) #define alloc_task_struct() ((task_t *)__get_free_pages(GFP_KERNEL, KERNEL_STACK_SIZE_ORDER))
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment