On Mon, Mar 23, 2015 at 10:51 AM, Denys Vlasenko <[email protected]> wrote: > On 03/23/2015 06:45 PM, Steven Rostedt wrote: >> On Mon, 23 Mar 2015 18:38:09 +0100 >> Denys Vlasenko <[email protected]> wrote: >> >>>> Can we do a: >>>> >>>> #define cpu_current_top_of_stack (cpu_tss + TSS_sp0) >>> >>> We already do something similar: >>> >>> static inline unsigned long current_top_of_stack(void) >>> { >>> #ifdef CONFIG_X86_64 >>> return this_cpu_read_stable(cpu_tss.x86_tss.sp0); >>> #else >>> /* sp0 on x86_32 is special in and around vm86 mode. */ >>> return this_cpu_read_stable(cpu_current_top_of_stack); >>> #endif >>> } >> >> So can we then have: >> >> #ifdef __ASSEMBLY__ >> # define cpu_current_top_of_stack (cpu_tss + TSS_sp0) >> #else >> # define cpu_current_top_of_stack (cpu_tss.x86_tss.sp0) >> #endif >> >> And get rid of that if statement in the static inline? > > I prefer less macro indirection in assembly code, > but I won't object too strongly if this would be done. > > It's up to other x86 maintainers to agree - I'm touching > the code recently changed by Andy, he may see the way forward > somewhat differently. >
I kind of like Steven's idea. Although.. shouldn't we go all the way and do: #ifdef __ASSEMBLY__ #ifdef CONFIG_X86_64 #define cpu_current_top_of_stack %gs:(cpu_tss + TSS_sp0) #else #define cpu_current_top_of_stack %gs:(current_top_of_stack) #endif #endif and just not have a macro for non-asm, since we already have the inline? But maybe keeping the %gs reference explicit in the asm is better. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

