All of lore.kernel.org
 help / color / mirror / Atom feed
From: Franck <vagabon.xyz@gmail.com>
To: linux-mips@linux-mips.org
Cc: Ralf Baechle <ralf@linux-mips.org>,
	"Maciej W. Rozycki" <macro@linux-mips.org>,
	"Kevin D. Kissell" <kevink@mips.com>
Subject: [RFC] Add 4KSx support (try 2)
Date: Mon, 31 Oct 2005 09:34:18 +0100	[thread overview]
Message-ID: <cda58cb80510310034k60b273dfm@mail.gmail.com> (raw)

This is the second try for submitting this patch. Hope it will get
more feedbacks...

Thanks

                 Franck

2005/10/25, Franck <vagabon.xyz@gmail.com>:
> Hi,
>
> I'm sending a new patch that adds support for both 4ksc, 4ksd cpus and
> smartmips extension. It doesn't add support for SmartMIPS MMU (another
> patch may be sent in future) though. I tried to take into account
> Maciej Rozycki and Kevin Kissel first feedbacks.
>
> Thanks
> --
>                Franck
>
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/Kconfig
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/Kconfig
> --- linux-2.6.14-rc2-mipscvs/arch/mips/Kconfig  2005-09-23
> 22:02:44.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/Kconfig     2005-10-24
> 16:42:11.000000000 +0200
> @@ -1123,6 +1123,20 @@ config CPU_SB1
>         select CPU_SUPPORTS_64BIT_KERNEL
>         select CPU_SUPPORTS_HIGHMEM
>
> +config CPU_4KSC
> +       bool "4KSC"
> +       select CPU_SUPPORTS_32BIT_KERNEL
> +       select CPU_HAS_PREFETCH
> +       help
> +         MIPS Technologies 4KSc-series processors.
> +
> +config CPU_4KSD
> +       bool "4KSD"
> +       select CPU_SUPPORTS_32BIT_KERNEL
> +       select CPU_HAS_PREFETCH
> +       help
> +         MIPS Technologies 4KSd-series processors.
> +
>  endchoice
>
>  endmenu
> @@ -1337,6 +1351,14 @@ config CPU_HAS_WB
>           machines which require flushing of write buffers in software.  Saying
>           Y is the safe option; N may result in kernel malfunction and crashes.
>
> +config CPU_HAS_SMARTMIPS
> +       bool "SmartMIPS extension available" if CPU_ADVANCED
> +       default y if !CPU_ADVANCED && (CPU_4KSC || CPU_4KSD)
> +       help
> +         Say Y here if your CPU supports Smartmips ASE. The SmartMIPS ASE
> +         includes a set of features that form a cryptographic extension to
> +         the MIPS32 architecture.
> +
>  menu "MIPSR2 Interrupt handling"
>         depends on CPU_MIPSR2 && CPU_ADVANCED
>
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/kernel/asm-offsets.c
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/asm-offsets.c
> --- linux-2.6.14-rc2-mipscvs/arch/mips/kernel/asm-offsets.c     2005-09-15
> 10:53:13.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/asm-offsets.c        2005-10-25
> 13:02:30.000000000 +0200
> @@ -65,6 +65,7 @@ void output_ptreg_defines(void)
>         offset("#define PT_R31    ", struct pt_regs, regs[31]);
>         offset("#define PT_LO     ", struct pt_regs, lo);
>         offset("#define PT_HI     ", struct pt_regs, hi);
> +       offset("#define PT_ACX    ", struct pt_regs, acx);
>         offset("#define PT_EPC    ", struct pt_regs, cp0_epc);
>         offset("#define PT_BVADDR ", struct pt_regs, cp0_badvaddr);
>         offset("#define PT_STATUS ", struct pt_regs, cp0_status);
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/kernel/cpu-probe.c
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/cpu-probe.c
> --- linux-2.6.14-rc2-mipscvs/arch/mips/kernel/cpu-probe.c       2005-08-16
> 19:50:43.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/cpu-probe.c  2005-10-04
> 09:41:42.000000000 +0200
> @@ -552,6 +552,7 @@ static inline void cpu_probe_mips(struct
>                 c->cputype = CPU_4KEC;
>                 break;
>         case PRID_IMP_4KSC:
> +       case PRID_IMP_4KSD:
>                 c->cputype = CPU_4KSC;
>                 break;
>         case PRID_IMP_5KC:
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/kernel/Makefile
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/Makefile
> --- linux-2.6.14-rc2-mipscvs/arch/mips/kernel/Makefile  2005-09-01
> 22:42:46.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/Makefile     2005-10-04
> 09:30:29.000000000 +0200
> @@ -31,6 +31,8 @@ obj-$(CONFIG_CPU_SB1)         += r4k_fpu.o r4k_
>  obj-$(CONFIG_CPU_MIPS32_R1)    += r4k_fpu.o r4k_switch.o
>  obj-$(CONFIG_CPU_MIPS64_R1)    += r4k_fpu.o r4k_switch.o
>  obj-$(CONFIG_CPU_R6000)                += r6000_fpu.o r4k_switch.o
> +obj-$(CONFIG_CPU_4KSC)         += r4k_switch.o
> +obj-$(CONFIG_CPU_4KSD)         += r4k_switch.o
>
>  obj-$(CONFIG_SMP)              += smp.o
>
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/kernel/ptrace32.c
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/ptrace32.c
> --- linux-2.6.14-rc2-mipscvs/arch/mips/kernel/ptrace32.c        2005-05-31
> 13:49:19.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/ptrace32.c   2005-10-25
> 13:08:41.000000000 +0200
> @@ -144,6 +144,11 @@ asmlinkage int sys32_ptrace(int request,
>                 case MMLO:
>                         tmp = regs->lo;
>                         break;
> +#ifdef CONFIG_CPU_HAS_SMARTMIPS
> +               case ACX:
> +                       tmp = regs->acx;
> +                       break;
> +#endif
>                 case FPC_CSR:
>                         if (cpu_has_fpu)
>                                 tmp = child->thread.fpu.hard.fcr31;
> @@ -246,6 +251,11 @@ asmlinkage int sys32_ptrace(int request,
>                 case MMLO:
>                         regs->lo = data;
>                         break;
> +#ifdef CONFIG_CPU_HAS_SMARTMIPS
> +               case ACX:
> +                       regs->acx = data;
> +                       break;
> +#endif
>                 case FPC_CSR:
>                         if (cpu_has_fpu)
>                                 child->thread.fpu.hard.fcr31 = data;
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/kernel/ptrace.c
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/ptrace.c
> --- linux-2.6.14-rc2-mipscvs/arch/mips/kernel/ptrace.c  2005-07-14
> 14:05:05.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/kernel/ptrace.c     2005-10-25
> 13:09:52.000000000 +0200
> @@ -159,6 +159,11 @@ asmlinkage int sys_ptrace(long request,
>                 case MMLO:
>                         tmp = regs->lo;
>                         break;
> +#ifdef CONFIG_CPU_HAS_SMARTMIPS
> +               case ACX:
> +                       tmp = regs->acx;
> +                       break;
> +#endif
>                 case FPC_CSR:
>                         if (cpu_has_fpu)
>                                 tmp = child->thread.fpu.hard.fcr31;
> @@ -267,6 +272,11 @@ asmlinkage int sys_ptrace(long request,
>                 case MMLO:
>                         regs->lo = data;
>                         break;
> +#ifdef CONFIG_CPU_HAS_SMARTMIPS
> +               case ACX:
> +                       regs->acx = data;
> +                       break;
> +#endif
>                 case FPC_CSR:
>                         if (cpu_has_fpu)
>                                 child->thread.fpu.hard.fcr31 = data;
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/lib-32/Makefile
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/lib-32/Makefile
> --- linux-2.6.14-rc2-mipscvs/arch/mips/lib-32/Makefile  2005-07-11
> 12:03:27.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/lib-32/Makefile     2005-10-04
> 09:44:09.000000000 +0200
> @@ -21,5 +21,7 @@ obj-$(CONFIG_CPU_SB1)         += dump_tlb.o
>  obj-$(CONFIG_CPU_TX39XX)       += r3k_dump_tlb.o
>  obj-$(CONFIG_CPU_TX49XX)       += dump_tlb.o
>  obj-$(CONFIG_CPU_VR41XX)       += dump_tlb.o
> +obj-$(CONFIG_CPU_4KSC)         += dump_tlb.o
> +obj-$(CONFIG_CPU_4KSD)         += dump_tlb.o
>
>  EXTRA_AFLAGS := $(CFLAGS)
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/Makefile
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/Makefile
> --- linux-2.6.14-rc2-mipscvs/arch/mips/Makefile 2005-09-15
> 10:53:10.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/Makefile    2005-10-24
> 16:19:15.000000000 +0200
> @@ -237,6 +237,14 @@ cflags-$(CONFIG_CPU_R10000)        += \
>                         $(call set_gccflags,r10000,mips4,r8000,mips4,mips2) \
>                         -Wa,--trap
>
> +cflags-$(CONFIG_CPU_4KSC)      += \
> +                       $(call set_gccflags,4ksc,mips32,4kc,mips32) \
> +                       -msmartmips -Wa,--trap
> +
> +cflags-$(CONFIG_CPU_4KSD)      += \
> +                       $(call set_gccflags,4ksd,mips32r2,4kec,mips32r2) \
> +                       -msmartmips -Wa,--trap
> +
>  ifdef CONFIG_CPU_SB1
>  ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
>  MODFLAGS       += -msb1-pass1-workarounds
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/mm/cache.c
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/mm/cache.c
> --- linux-2.6.14-rc2-mipscvs/arch/mips/mm/cache.c       2005-07-06
> 14:08:14.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/mm/cache.c  2005-10-04
> 09:46:56.000000000 +0200
> @@ -120,7 +120,8 @@ void __init cpu_cache_init(void)
>      defined(CONFIG_CPU_NEVADA) || defined(CONFIG_CPU_R5432)  || \
>      defined(CONFIG_CPU_R5500)  || defined(CONFIG_CPU_MIPS32_R1) || \
>      defined(CONFIG_CPU_MIPS64_R1) || defined(CONFIG_CPU_TX49XX) || \
> -    defined(CONFIG_CPU_RM7000) || defined(CONFIG_CPU_RM9000)
> +    defined(CONFIG_CPU_RM7000) || defined(CONFIG_CPU_RM9000) || \
> +    defined(CONFIG_CPU_4KSC)   || defined(CONFIG_CPU_4KSD)
>                 ld_mmu_r4xx0();
>  #endif
>         } else switch (current_cpu_data.cputype) {
> diff -Nurp linux-2.6.14-rc2-mipscvs/arch/mips/mm/Makefile
> linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/mm/Makefile
> --- linux-2.6.14-rc2-mipscvs/arch/mips/mm/Makefile      2005-07-14
> 14:05:06.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/arch/mips/mm/Makefile 2005-10-04
> 09:45:17.000000000 +0200
> @@ -26,6 +26,8 @@ obj-$(CONFIG_CPU_SB1)         += c-sb1.o cerr-s
>  obj-$(CONFIG_CPU_TX39XX)       += c-tx39.o pg-r4k.o tlb-r3k.o
>  obj-$(CONFIG_CPU_TX49XX)       += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o
>  obj-$(CONFIG_CPU_VR41XX)       += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o
> +obj-$(CONFIG_CPU_4KSC)         += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o
> +obj-$(CONFIG_CPU_4KSD)         += c-r4k.o cex-gen.o pg-r4k.o tlb-r4k.o
>
>  obj-$(CONFIG_IP22_CPU_SCACHE)  += sc-ip22.o
>  obj-$(CONFIG_R5000_CPU_SCACHE)  += sc-r5k.o
> diff -Nurp linux-2.6.14-rc2-mipscvs/include/asm-mips/module.h
> linux-2.6.14-rc2-mipscvs-4KSx/include/asm-mips/module.h
> --- linux-2.6.14-rc2-mipscvs/include/asm-mips/module.h  2005-09-14
> 12:35:37.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/include/asm-mips/module.h     2005-10-04
> 09:55:34.000000000 +0200
> @@ -113,7 +113,11 @@ search_module_dbetables(unsigned long ad
>  #define MODULE_PROC_FAMILY "RM9000"
>  #elif defined CONFIG_CPU_SB1
>  #define MODULE_PROC_FAMILY "SB1"
> -#elif
> +#elif defined CONFIG_CPU_4KSC
> +#define MODULE_PROC_FAMILY "4KSC"
> +#elif defined CONFIG_CPU_4KSD
> +#define MODULE_PROC_FAMILY "4KSD"
> +#else
>  #error MODULE_PROC_FAMILY undefined for your processor configuration
>  #endif
>
> diff -Nurp linux-2.6.14-rc2-mipscvs/include/asm-mips/ptrace.h
> linux-2.6.14-rc2-mipscvs-4KSx/include/asm-mips/ptrace.h
> --- linux-2.6.14-rc2-mipscvs/include/asm-mips/ptrace.h  2005-07-14
> 14:05:09.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/include/asm-mips/ptrace.h     2005-10-25
> 13:07:04.000000000 +0200
> @@ -24,6 +24,7 @@
>  #define FPC_EIR                70
>  #define DSP_BASE       71              /* 3 more hi / lo register pairs */
>  #define DSP_CONTROL    77
> +#define ACX            78
>
>  /*
>   * This struct defines the way the registers are stored on the stack during a
> @@ -42,6 +43,9 @@ struct pt_regs {
>         unsigned long cp0_status;
>         unsigned long hi;
>         unsigned long lo;
> +#ifdef CONFIG_CPU_HAS_SMARTMIPS
> +       unsigned long acx;
> +#endif
>         unsigned long cp0_badvaddr;
>         unsigned long cp0_cause;
>         unsigned long cp0_epc;
> diff -Nurp linux-2.6.14-rc2-mipscvs/include/asm-mips/stackframe.h
> linux-2.6.14-rc2-mipscvs-4KSx/include/asm-mips/stackframe.h
> --- linux-2.6.14-rc2-mipscvs/include/asm-mips/stackframe.h      2005-09-15
> 10:56:06.000000000 +0200
> +++ linux-2.6.14-rc2-mipscvs-4KSx/include/asm-mips/stackframe.h 2005-10-25
> 14:35:56.000000000 +0200
> @@ -25,16 +25,25 @@
>                 .endm
>
>                 .macro  SAVE_TEMP
> +#ifdef CONFIG_CPU_HAS_SMARTMIPS
> +               mflhxu  v1
> +               LONG_S  v1, PT_LO(sp)
> +               mflhxu  v1
> +               LONG_S  v1, PT_HI(sp)
> +               mflhxu  v1
> +               LONG_S  v1, PT_ACX(sp)
> +#else
>                 mfhi    v1
> +               LONG_S  v1, PT_HI(sp)
> +               mflo    v1
> +               LONG_S  v1, PT_LO(sp)
> +#endif
>  #ifdef CONFIG_32BIT
>                 LONG_S  $8, PT_R8(sp)
>                 LONG_S  $9, PT_R9(sp)
>  #endif
> -               LONG_S  v1, PT_HI(sp)
> -               mflo    v1
>                 LONG_S  $10, PT_R10(sp)
>                 LONG_S  $11, PT_R11(sp)
> -               LONG_S  v1,  PT_LO(sp)
>                 LONG_S  $12, PT_R12(sp)
>                 LONG_S  $13, PT_R13(sp)
>                 LONG_S  $14, PT_R14(sp)
> @@ -175,16 +184,25 @@
>                 .endm
>
>                 .macro  RESTORE_TEMP
> +#ifdef CONFIG_CPU_HAS_SMARTMIPS
> +               LONG_L  $24, PT_ACX(sp)
> +               mtlhx   $24
> +               LONG_L  $24, PT_HI(sp)
> +               mtlhx   $24
>                 LONG_L  $24, PT_LO(sp)
> +               mtlhx   $24
> +#else
> +               LONG_L  $24, PT_LO(sp)
> +               mtlo    $24
> +               LONG_L  $24, PT_HI(sp)
> +               mthi    $24
> +#endif
>  #ifdef CONFIG_32BIT
>                 LONG_L  $8, PT_R8(sp)
>                 LONG_L  $9, PT_R9(sp)
>  #endif
> -               mtlo    $24
> -               LONG_L  $24, PT_HI(sp)
>                 LONG_L  $10, PT_R10(sp)
>                 LONG_L  $11, PT_R11(sp)
> -               mthi    $24
>                 LONG_L  $12, PT_R12(sp)
>                 LONG_L  $13, PT_R13(sp)
>                 LONG_L  $14, PT_R14(sp)
>

             reply	other threads:[~2005-10-31  8:34 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-31  8:34 Franck [this message]
2005-10-31  9:08 ` [RFC] Add 4KSx support (try 2) Kevin D. Kissell
2005-10-31 11:15   ` Ralf Baechle
2005-10-31 16:21     ` Franck
2005-10-31 16:01   ` Franck
2005-10-31 17:45     ` Kevin D. Kissell
2005-11-01  8:34       ` Franck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cda58cb80510310034k60b273dfm@mail.gmail.com \
    --to=vagabon.xyz@gmail.com \
    --cc=kevink@mips.com \
    --cc=linux-mips@linux-mips.org \
    --cc=macro@linux-mips.org \
    --cc=ralf@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.