85 lines · 2.1 KB · C
RawDownload
#ifndef __ASM_SH64_THREAD_INFO_H#define __ASM_SH64_THREAD_INFO_H /* * SuperH 5 version * Copyright (C) 2003  Paul Mundt */ #ifdef __KERNEL__ #ifndef __ASSEMBLY__#include <asm/registers.h> /* * low level task data that entry.S needs immediate access to * - this struct should fit entirely inside of one cache line * - this struct shares the supervisor stack pages * - if the contents of this structure are changed, the assembly constants must also be changed */struct thread_info {	struct task_struct	*task;		/* main task structure */	struct exec_domain	*exec_domain;	/* execution domain */	unsigned long		flags;		/* low level flags */	/* Put the 4 32-bit fields together to make asm offsetting easier. */	int			preempt_count;	/* 0 => preemptable, <0 => BUG */	__u16			cpu; 	mm_segment_t		addr_limit;	struct restart_block	restart_block; 	__u8			supervisor_stack[0];}; /* * macros/functions for gaining access to the thread information structure */#define INIT_THREAD_INFO(tsk)			\{						\	.task		= &tsk,			\	.exec_domain	= &default_exec_domain,	\	.flags		= 0,			\	.cpu		= 0,			\	.preempt_count	= 1,			\	.addr_limit     = KERNEL_DS,            \	.restart_block	= {			\		.fn = do_no_restart_syscall,	\	},					\} #define init_thread_info	(init_thread_union.thread_info)#define init_stack		(init_thread_union.stack) /* how to get the thread information struct from C */static inline struct thread_info *current_thread_info(void){	struct thread_info *ti; 	__asm__ __volatile__ ("getcon " __KCR0 ", %0\n\t" : "=r" (ti)); 	return ti;} /* thread information allocation */   #define alloc_thread_info(ti) ((struct thread_info *) __get_free_pages(GFP_KERNEL,1))#define free_thread_info(ti) free_pages((unsigned long) (ti), 1) #endif /* __ASSEMBLY__ */ #define THREAD_SIZE  8192 #define PREEMPT_ACTIVE		0x10000000 /* thread information flags */#define TIF_SYSCALL_TRACE	0	/* syscall trace active */#define TIF_SIGPENDING		2	/* signal pending */#define TIF_NEED_RESCHED	3	/* rescheduling necessary */#define TIF_MEMDIE		4  #endif /* __KERNEL__ */ #endif /* __ASM_SH64_THREAD_INFO_H */