ARM: Don't unconditionally bloat thread_info
There is no point reserving space at the bottom of the kernel stack for per-thread crunch state, and per-thread VFP state if these are not being supported by the kernel being built. Remove these members from the thread union when these features are disabled. Reported-by: Tim Bird <tim.bird@am.sony.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
@ -59,7 +59,9 @@ struct thread_info {
|
|||||||
__u32 syscall; /* syscall number */
|
__u32 syscall; /* syscall number */
|
||||||
__u8 used_cp[16]; /* thread used copro */
|
__u8 used_cp[16]; /* thread used copro */
|
||||||
unsigned long tp_value;
|
unsigned long tp_value;
|
||||||
|
#ifdef CONFIG_CRUNCH
|
||||||
struct crunch_state crunchstate;
|
struct crunch_state crunchstate;
|
||||||
|
#endif
|
||||||
union fp_state fpstate __attribute__((aligned(8)));
|
union fp_state fpstate __attribute__((aligned(8)));
|
||||||
union vfp_state vfpstate;
|
union vfp_state vfpstate;
|
||||||
#ifdef CONFIG_ARM_THUMBEE
|
#ifdef CONFIG_ARM_THUMBEE
|
||||||
|
@ -59,10 +59,12 @@ int main(void)
|
|||||||
DEFINE(TI_USED_CP, offsetof(struct thread_info, used_cp));
|
DEFINE(TI_USED_CP, offsetof(struct thread_info, used_cp));
|
||||||
DEFINE(TI_TP_VALUE, offsetof(struct thread_info, tp_value));
|
DEFINE(TI_TP_VALUE, offsetof(struct thread_info, tp_value));
|
||||||
DEFINE(TI_FPSTATE, offsetof(struct thread_info, fpstate));
|
DEFINE(TI_FPSTATE, offsetof(struct thread_info, fpstate));
|
||||||
|
#ifdef CONFIG_VFP
|
||||||
DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate));
|
DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate));
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
DEFINE(VFP_CPU, offsetof(union vfp_state, hard.cpu));
|
DEFINE(VFP_CPU, offsetof(union vfp_state, hard.cpu));
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_ARM_THUMBEE
|
#ifdef CONFIG_ARM_THUMBEE
|
||||||
DEFINE(TI_THUMBEE_STATE, offsetof(struct thread_info, thumbee_state));
|
DEFINE(TI_THUMBEE_STATE, offsetof(struct thread_info, thumbee_state));
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user