diff mbox series

MIPS: Tidy up CP0.Config6 bits definition

Message ID 1590207940-20157-1-git-send-email-chenhc@lemote.com (mailing list archive)
State Superseded
Headers show
Series MIPS: Tidy up CP0.Config6 bits definition | expand

Commit Message

Huacai Chen May 23, 2020, 4:25 a.m. UTC
CP0.Config6 is a Vendor-defined register whose bits definitions are
different from one to another. Recently, Xuerui's Loongson-3 patch and
Serge's P5600 patch make the definitions inconsistency and unclear. To
make life easy, this patch tidy the definition up.

Signed-off-by: Huacai Chen <chenhc@lemote.com>
---
 arch/mips/include/asm/mipsregs.h | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

Comments

WANG Xuerui May 23, 2020, 4:42 a.m. UTC | #1
Hi Huacai,

On 5/23/20 12:25 PM, Huacai Chen wrote:
> CP0.Config6 is a Vendor-defined register whose bits definitions are
> different from one to another. Recently, Xuerui's Loongson-3 patch and
> Serge's P5600 patch make the definitions inconsistency and unclear. To
> make life easy, this patch tidy the definition up.
>
> Signed-off-by: Huacai Chen <chenhc@lemote.com>
> ---
>   arch/mips/include/asm/mipsregs.h | 14 ++++++++++----
>   1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/arch/mips/include/asm/mipsregs.h b/arch/mips/include/asm/mipsregs.h
> index fe6293f..e89eeb9 100644
> --- a/arch/mips/include/asm/mipsregs.h
> +++ b/arch/mips/include/asm/mipsregs.h
> @@ -690,6 +690,12 @@
>   #define MIPS_CONF6_JRCD		(_ULCAST_(1) << 0)
>   /* MIPSr6 extensions enable */
>   #define MIPS_CONF6_R6		(_ULCAST_(1) << 2)
> +/* Loongson-3 internal timer bit */
> +#define MIPS_CONF6_INTIMER	(_ULCAST_(1) << 6)
> +/* Loongson-3 external timer bit */
> +#define MIPS_CONF6_EXTIMER	(_ULCAST_(1) << 7)

These two are not present before, maybe split into two patches?

Also, actually this register is called GSConfig in Loongson's manuals; 
the register bears no resemblance to the actual Config6 on P5600 and the 
likes, it just happens to occupy the same position. So maintaining the 
sorting order actually hurts readability and maintainability IMO.

Maybe reflect this (sad or not, but things happen) truth through naming, 
and group the Loongson bits together?

> +/* Loongson-3 SFB on/off bit */
> +#define MIPS_CONF6_SFBEN	(_ULCAST_(1) << 8)
This bit is called "STFill" in Loongson 3A3000/3B3000 User Manual Volume 
2. Is Loongson renaming things between releases?
>   /* IFU Performance Control */
>   #define MIPS_CONF6_IFUPERFCTL	(_ULCAST_(3) << 10)
>   #define MIPS_CONF6_SYND		(_ULCAST_(1) << 13)
> @@ -697,16 +703,16 @@
>   #define MIPS_CONF6_SPCD		(_ULCAST_(1) << 14)
>   /* proAptiv FTLB on/off bit */
>   #define MIPS_CONF6_FTLBEN	(_ULCAST_(1) << 15)
> +/* Loongson-3's LL on exclusive cacheline */
> +#define MIPS_CONF6_LLEXC	(_ULCAST_(1) << 16)
> +/* Loongson-3's SC has a random delay */
> +#define MIPS_CONF6_SCRAND	(_ULCAST_(1) << 17)
>   /* Disable load/store bonding */
>   #define MIPS_CONF6_DLSB		(_ULCAST_(1) << 21)
>   /* Loongson-3 FTLB on/off bit */
>   #define MIPS_CONF6_FTLBDIS	(_ULCAST_(1) << 22)
>   /* FTLB probability bits */
>   #define MIPS_CONF6_FTLBP_SHIFT	(16)
> -/* Loongson-3 feature bits */
> -#define MIPS_CONF6_LOONGSON_SCRAND	(_ULCAST_(1) << 17)
> -#define MIPS_CONF6_LOONGSON_LLEXC	(_ULCAST_(1) << 16)
> -#define MIPS_CONF6_LOONGSON_STFILL	(_ULCAST_(1) << 8)
>   
>   #define MIPS_CONF7_WII		(_ULCAST_(1) << 31)
>
Huacai Chen May 23, 2020, 7:08 a.m. UTC | #2
Hi, Xuerui,

On Sat, May 23, 2020 at 12:43 PM WANG Xuerui <kernel@xen0n.name> wrote:
>
> Hi Huacai,
>
> On 5/23/20 12:25 PM, Huacai Chen wrote:
> > CP0.Config6 is a Vendor-defined register whose bits definitions are
> > different from one to another. Recently, Xuerui's Loongson-3 patch and
> > Serge's P5600 patch make the definitions inconsistency and unclear. To
> > make life easy, this patch tidy the definition up.
> >
> > Signed-off-by: Huacai Chen <chenhc@lemote.com>
> > ---
> >   arch/mips/include/asm/mipsregs.h | 14 ++++++++++----
> >   1 file changed, 10 insertions(+), 4 deletions(-)
> >
> > diff --git a/arch/mips/include/asm/mipsregs.h b/arch/mips/include/asm/mipsregs.h
> > index fe6293f..e89eeb9 100644
> > --- a/arch/mips/include/asm/mipsregs.h
> > +++ b/arch/mips/include/asm/mipsregs.h
> > @@ -690,6 +690,12 @@
> >   #define MIPS_CONF6_JRCD             (_ULCAST_(1) << 0)
> >   /* MIPSr6 extensions enable */
> >   #define MIPS_CONF6_R6               (_ULCAST_(1) << 2)
> > +/* Loongson-3 internal timer bit */
> > +#define MIPS_CONF6_INTIMER   (_ULCAST_(1) << 6)
> > +/* Loongson-3 external timer bit */
> > +#define MIPS_CONF6_EXTIMER   (_ULCAST_(1) << 7)
>
> These two are not present before, maybe split into two patches?
>
> Also, actually this register is called GSConfig in Loongson's manuals;
> the register bears no resemblance to the actual Config6 on P5600 and the
> likes, it just happens to occupy the same position. So maintaining the
> sorting order actually hurts readability and maintainability IMO.
>
> Maybe reflect this (sad or not, but things happen) truth through naming,
> and group the Loongson bits together?
Thanks for your review, I will send an updated version.

Huacai
>
> > +/* Loongson-3 SFB on/off bit */
> > +#define MIPS_CONF6_SFBEN     (_ULCAST_(1) << 8)
> This bit is called "STFill" in Loongson 3A3000/3B3000 User Manual Volume
> 2. Is Loongson renaming things between releases?
> >   /* IFU Performance Control */
> >   #define MIPS_CONF6_IFUPERFCTL       (_ULCAST_(3) << 10)
> >   #define MIPS_CONF6_SYND             (_ULCAST_(1) << 13)
> > @@ -697,16 +703,16 @@
> >   #define MIPS_CONF6_SPCD             (_ULCAST_(1) << 14)
> >   /* proAptiv FTLB on/off bit */
> >   #define MIPS_CONF6_FTLBEN   (_ULCAST_(1) << 15)
> > +/* Loongson-3's LL on exclusive cacheline */
> > +#define MIPS_CONF6_LLEXC     (_ULCAST_(1) << 16)
> > +/* Loongson-3's SC has a random delay */
> > +#define MIPS_CONF6_SCRAND    (_ULCAST_(1) << 17)
> >   /* Disable load/store bonding */
> >   #define MIPS_CONF6_DLSB             (_ULCAST_(1) << 21)
> >   /* Loongson-3 FTLB on/off bit */
> >   #define MIPS_CONF6_FTLBDIS  (_ULCAST_(1) << 22)
> >   /* FTLB probability bits */
> >   #define MIPS_CONF6_FTLBP_SHIFT      (16)
> > -/* Loongson-3 feature bits */
> > -#define MIPS_CONF6_LOONGSON_SCRAND   (_ULCAST_(1) << 17)
> > -#define MIPS_CONF6_LOONGSON_LLEXC    (_ULCAST_(1) << 16)
> > -#define MIPS_CONF6_LOONGSON_STFILL   (_ULCAST_(1) << 8)
> >
> >   #define MIPS_CONF7_WII              (_ULCAST_(1) << 31)
> >
diff mbox series

Patch

diff --git a/arch/mips/include/asm/mipsregs.h b/arch/mips/include/asm/mipsregs.h
index fe6293f..e89eeb9 100644
--- a/arch/mips/include/asm/mipsregs.h
+++ b/arch/mips/include/asm/mipsregs.h
@@ -690,6 +690,12 @@ 
 #define MIPS_CONF6_JRCD		(_ULCAST_(1) << 0)
 /* MIPSr6 extensions enable */
 #define MIPS_CONF6_R6		(_ULCAST_(1) << 2)
+/* Loongson-3 internal timer bit */
+#define MIPS_CONF6_INTIMER	(_ULCAST_(1) << 6)
+/* Loongson-3 external timer bit */
+#define MIPS_CONF6_EXTIMER	(_ULCAST_(1) << 7)
+/* Loongson-3 SFB on/off bit */
+#define MIPS_CONF6_SFBEN	(_ULCAST_(1) << 8)
 /* IFU Performance Control */
 #define MIPS_CONF6_IFUPERFCTL	(_ULCAST_(3) << 10)
 #define MIPS_CONF6_SYND		(_ULCAST_(1) << 13)
@@ -697,16 +703,16 @@ 
 #define MIPS_CONF6_SPCD		(_ULCAST_(1) << 14)
 /* proAptiv FTLB on/off bit */
 #define MIPS_CONF6_FTLBEN	(_ULCAST_(1) << 15)
+/* Loongson-3's LL on exclusive cacheline */
+#define MIPS_CONF6_LLEXC	(_ULCAST_(1) << 16)
+/* Loongson-3's SC has a random delay */
+#define MIPS_CONF6_SCRAND	(_ULCAST_(1) << 17)
 /* Disable load/store bonding */
 #define MIPS_CONF6_DLSB		(_ULCAST_(1) << 21)
 /* Loongson-3 FTLB on/off bit */
 #define MIPS_CONF6_FTLBDIS	(_ULCAST_(1) << 22)
 /* FTLB probability bits */
 #define MIPS_CONF6_FTLBP_SHIFT	(16)
-/* Loongson-3 feature bits */
-#define MIPS_CONF6_LOONGSON_SCRAND	(_ULCAST_(1) << 17)
-#define MIPS_CONF6_LOONGSON_LLEXC	(_ULCAST_(1) << 16)
-#define MIPS_CONF6_LOONGSON_STFILL	(_ULCAST_(1) << 8)
 
 #define MIPS_CONF7_WII		(_ULCAST_(1) << 31)