From: Adam Lackorzynski one of the macros for get_thread_area seems to extract the wrong bit. The "32bit" field is in bit 22, not 23 (as can be seen in desc.h). --- 25-akpm/arch/i386/kernel/process.c | 2 +- 25-akpm/arch/i386/kernel/ptrace.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff -puN arch/i386/kernel/process.c~get_thread_area-macros arch/i386/kernel/process.c --- 25/arch/i386/kernel/process.c~get_thread_area-macros Tue May 4 17:39:13 2004 +++ 25-akpm/arch/i386/kernel/process.c Tue May 4 17:39:13 2004 @@ -733,7 +733,7 @@ asmlinkage int sys_set_thread_area(struc ((desc)->a & 0x0ffff) | \ ((desc)->b & 0xf0000) ) -#define GET_32BIT(desc) (((desc)->b >> 23) & 1) +#define GET_32BIT(desc) (((desc)->b >> 22) & 1) #define GET_CONTENTS(desc) (((desc)->b >> 10) & 3) #define GET_WRITABLE(desc) (((desc)->b >> 9) & 1) #define GET_LIMIT_PAGES(desc) (((desc)->b >> 23) & 1) diff -puN arch/i386/kernel/ptrace.c~get_thread_area-macros arch/i386/kernel/ptrace.c --- 25/arch/i386/kernel/ptrace.c~get_thread_area-macros Tue May 4 17:39:13 2004 +++ 25-akpm/arch/i386/kernel/ptrace.c Tue May 4 17:39:13 2004 @@ -174,7 +174,7 @@ ptrace_get_thread_area(struct task_struc ((desc)->a & 0x0ffff) | \ ((desc)->b & 0xf0000) ) -#define GET_32BIT(desc) (((desc)->b >> 23) & 1) +#define GET_32BIT(desc) (((desc)->b >> 22) & 1) #define GET_CONTENTS(desc) (((desc)->b >> 10) & 3) #define GET_WRITABLE(desc) (((desc)->b >> 9) & 1) #define GET_LIMIT_PAGES(desc) (((desc)->b >> 23) & 1) _