forked from Minki/linux
x86: common thread_info definitions
Merge the thread_info definition into one structure definition for both arches. The __u32 is equal to unsigned long for 32 bit. sysenter_return is used both for the IA32 emulation for 64 and x86_32. Avoid complicated #ifdef by simply always including it. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
f2ea3b1d4d
commit
006c484bb3
@ -11,47 +11,42 @@
|
||||
#include <asm/page.h>
|
||||
#include <asm/types.h>
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <asm/processor.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
#ifndef __ASSEMBLY__
|
||||
struct task_struct;
|
||||
struct exec_domain;
|
||||
#include <asm/processor.h>
|
||||
|
||||
struct thread_info {
|
||||
struct task_struct *task; /* main task structure */
|
||||
struct exec_domain *exec_domain; /* execution domain */
|
||||
unsigned long flags; /* low level flags */
|
||||
unsigned long status; /* thread-synchronous flags */
|
||||
__u32 flags; /* low level flags */
|
||||
__u32 status; /* thread synchronous flags */
|
||||
__u32 cpu; /* current CPU */
|
||||
int preempt_count; /* 0 => preemptable,
|
||||
<0 => BUG */
|
||||
mm_segment_t addr_limit; /* thread address space:
|
||||
0-0xBFFFFFFF user-thread
|
||||
0-0xFFFFFFFF kernel-thread
|
||||
*/
|
||||
void *sysenter_return;
|
||||
mm_segment_t addr_limit;
|
||||
struct restart_block restart_block;
|
||||
void __user *sysenter_return;
|
||||
#ifdef CONFIG_X86_32
|
||||
unsigned long previous_esp; /* ESP of the previous stack in
|
||||
case of nested (IRQ) stacks
|
||||
*/
|
||||
__u8 supervisor_stack[0];
|
||||
#endif
|
||||
};
|
||||
|
||||
#else /* !__ASSEMBLY__ */
|
||||
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
|
||||
#define PREEMPT_ACTIVE 0x10000000
|
||||
#ifdef CONFIG_4KSTACKS
|
||||
#define THREAD_SIZE (4096)
|
||||
@ -181,32 +176,6 @@ static inline struct thread_info *current_thread_info(void)
|
||||
|
||||
#include <asm/pda.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
|
||||
*/
|
||||
#ifndef __ASSEMBLY__
|
||||
struct task_struct;
|
||||
struct exec_domain;
|
||||
#include <asm/processor.h>
|
||||
|
||||
struct thread_info {
|
||||
struct task_struct *task; /* main task structure */
|
||||
struct exec_domain *exec_domain; /* execution domain */
|
||||
__u32 flags; /* low level flags */
|
||||
__u32 status; /* thread synchronous flags */
|
||||
__u32 cpu; /* current CPU */
|
||||
int preempt_count; /* 0 => preemptable,
|
||||
<0 => BUG */
|
||||
mm_segment_t addr_limit;
|
||||
struct restart_block restart_block;
|
||||
#ifdef CONFIG_IA32_EMULATION
|
||||
void __user *sysenter_return;
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* macros/functions for gaining access to the thread information structure
|
||||
* preempt_count needs to be 1 initially, until the scheduler is functional.
|
||||
|
Loading…
Reference in New Issue
Block a user