diff options
Diffstat (limited to 'include/asm-powerpc')
-rw-r--r-- | include/asm-powerpc/thread_info.h | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/include/asm-powerpc/thread_info.h b/include/asm-powerpc/thread_info.h index 0b4c24551c21..ab17db79f69d 100644 --- a/include/asm-powerpc/thread_info.h +++ b/include/asm-powerpc/thread_info.h | |||
@@ -66,19 +66,26 @@ struct thread_info { | |||
66 | /* thread information allocation */ | 66 | /* thread information allocation */ |
67 | 67 | ||
68 | #ifdef CONFIG_DEBUG_STACK_USAGE | 68 | #ifdef CONFIG_DEBUG_STACK_USAGE |
69 | #define alloc_thread_info(tsk) \ | 69 | #define THREAD_INFO_GFP GFP_KERNEL | __GFP_ZERO |
70 | ({ \ | ||
71 | struct thread_info *ret; \ | ||
72 | \ | ||
73 | ret = kmalloc(THREAD_SIZE, GFP_KERNEL); \ | ||
74 | if (ret) \ | ||
75 | memset(ret, 0, THREAD_SIZE); \ | ||
76 | ret; \ | ||
77 | }) | ||
78 | #else | 70 | #else |
79 | #define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL) | 71 | #define THREAD_INFO_GFP GFP_KERNEL |
80 | #endif | 72 | #endif |
73 | |||
74 | #if THREAD_SHIFT >= PAGE_SHIFT | ||
75 | |||
76 | #define THREAD_ORDER (THREAD_SHIFT - PAGE_SHIFT) | ||
77 | |||
78 | #define alloc_thread_info(tsk) \ | ||
79 | ((struct thread_info *)__get_free_pages(THREAD_INFO_GFP, THREAD_ORDER)) | ||
80 | #define free_thread_info(ti) free_pages((unsigned long)ti, THREAD_ORDER) | ||
81 | |||
82 | #else /* THREAD_SHIFT < PAGE_SHIFT */ | ||
83 | |||
84 | #define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, THREAD_INFO_GFP) | ||
81 | #define free_thread_info(ti) kfree(ti) | 85 | #define free_thread_info(ti) kfree(ti) |
86 | |||
87 | #endif /* THREAD_SHIFT < PAGE_SHIFT */ | ||
88 | |||
82 | #define get_thread_info(ti) get_task_struct((ti)->task) | 89 | #define get_thread_info(ti) get_task_struct((ti)->task) |
83 | #define put_thread_info(ti) put_task_struct((ti)->task) | 90 | #define put_thread_info(ti) put_task_struct((ti)->task) |
84 | 91 | ||