Message ID | 1440415228-8006-4-git-send-email-haokexin@gmail.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Mon, 2015-24-08 at 11:20:25 UTC, Kevin Hao wrote: > This function is only used by get_vtb(). They are almost the same > except the reading from the real register. Move the mfspr() to > get_vtb() and kill the function mfvtb(). With this, we can eliminate > the use of cpu_has_feature() in very core header file like reg.h. > This is a preparation for the use of jump label for cpu_has_feature(). I don't mind this change. But can you elaborate a bit on the issue with using cpu_has_feature() in reg.h? Just so I can understand the problem. I assume you ended up in a big mess of includes when you tried to include jump_label.h from reg.h? cheers
On Mon, Sep 07, 2015 at 07:29:42PM +1000, Michael Ellerman wrote: > On Mon, 2015-24-08 at 11:20:25 UTC, Kevin Hao wrote: > > This function is only used by get_vtb(). They are almost the same > > except the reading from the real register. Move the mfspr() to > > get_vtb() and kill the function mfvtb(). With this, we can eliminate > > the use of cpu_has_feature() in very core header file like reg.h. > > This is a preparation for the use of jump label for cpu_has_feature(). > > I don't mind this change. But can you elaborate a bit on the issue with using > cpu_has_feature() in reg.h? Just so I can understand the problem. > > I assume you ended up in a big mess of includes when you tried to include > jump_label.h from reg.h? Yes, the "jump_leabel.h" already include "reg.h" implicitly. from arch/powerpc/include/asm/cache.h:6:0, from include/linux/cache.h:5, from include/linux/printk.h:8, from include/linux/kernel.h:14, from include/asm-generic/bug.h:13, from arch/powerpc/include/asm/bug.h:127, from include/linux/bug.h:4, from include/linux/jump_label.h:81, So including "jump_label.h" from "reg.h" will cause a recursive header inclusion problem. Thanks, Kevin
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h index aa1cc5f015ee..d0b5f4b63776 100644 --- a/arch/powerpc/include/asm/reg.h +++ b/arch/powerpc/include/asm/reg.h @@ -1207,15 +1207,6 @@ : "r" ((unsigned long)(v)) \ : "memory") -static inline unsigned long mfvtb (void) -{ -#ifdef CONFIG_PPC_BOOK3S_64 - if (cpu_has_feature(CPU_FTR_ARCH_207S)) - return mfspr(SPRN_VTB); -#endif - return 0; -} - #ifdef __powerpc64__ #if defined(CONFIG_PPC_CELL) || defined(CONFIG_PPC_FSL_BOOK3E) #define mftb() ({unsigned long rval; \ diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h index 10fc784a2ad4..6f69828458fb 100644 --- a/arch/powerpc/include/asm/time.h +++ b/arch/powerpc/include/asm/time.h @@ -106,7 +106,7 @@ static inline u64 get_vtb(void) { #ifdef CONFIG_PPC_BOOK3S_64 if (cpu_has_feature(CPU_FTR_ARCH_207S)) - return mfvtb(); + return mfspr(SPRN_VTB); #endif return 0; }
This function is only used by get_vtb(). They are almost the same except the reading from the real register. Move the mfspr() to get_vtb() and kill the function mfvtb(). With this, we can eliminate the use of cpu_has_feature() in very core header file like reg.h. This is a preparation for the use of jump label for cpu_has_feature(). Signed-off-by: Kevin Hao <haokexin@gmail.com> --- v2: No change. arch/powerpc/include/asm/reg.h | 9 --------- arch/powerpc/include/asm/time.h | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-)