From: Rusty Russell Date: Wed, 2 May 2007 17:27:09 +0000 (+0200) Subject: [PATCH] x86-64: Introduce load_TLS to the "for" loop. X-Git-Tag: firefly_0821_release~30161^2~150 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=eab0c72aecd7982b2c848f7d493ba379efcef15e;p=firefly-linux-kernel-4.4.55.git [PATCH] x86-64: Introduce load_TLS to the "for" loop. GCC (4.1 at least) unrolls it anyway, but I can't believe this code was ever justifiable. (I've also submitted a patch which cleans up i386, which is even uglier). Signed-off-by: Rusty Russell Signed-off-by: Andi Kleen Cc: Andi Kleen Signed-off-by: Andrew Morton --- diff --git a/include/asm-x86_64/desc.h b/include/asm-x86_64/desc.h index 7726e74db536..ac991b5ca0fd 100644 --- a/include/asm-x86_64/desc.h +++ b/include/asm-x86_64/desc.h @@ -135,16 +135,13 @@ static inline void set_ldt_desc(unsigned cpu, void *addr, int size) (info)->useable == 0 && \ (info)->lm == 0) -#if TLS_SIZE != 24 -# error update this code. -#endif - static inline void load_TLS(struct thread_struct *t, unsigned int cpu) { + unsigned int i; u64 *gdt = (u64 *)(cpu_gdt(cpu) + GDT_ENTRY_TLS_MIN); - gdt[0] = t->tls_array[0]; - gdt[1] = t->tls_array[1]; - gdt[2] = t->tls_array[2]; + + for (i = 0; i < GDT_ENTRY_TLS_ENTRIES; i++) + gdt[i] = t->tls_array[i]; } /*