Re: [PATCH] MIPS: Add basic R5900 support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Fredrik,

 Thank you for your contribution.  As Ralf has noted your change looks 
good overall.  I just have a couple of nits to address.  Please take them 
into account with the next version of your change.

> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index 2828ecde133d..2a3592032861 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -1708,6 +1708,16 @@ config CPU_BMIPS
>  	help
>  	  Support for BMIPS32/3300/4350/4380 and BMIPS5000 processors.
>  
> +config CPU_R5900
> +	bool "R5900"
> +	depends on SYS_HAS_CPU_R5900
> +	select CPU_SUPPORTS_32BIT_KERNEL
> +	select CPU_SUPPORTS_64BIT_KERNEL
> +	select IRQ_MIPS_CPU
> +	select CPU_HAS_WB

 Is there an external explicitly-driven write-back buffer there with the 
R5900?  That would be odd with a MIPS III ISA processor, however if there 
indeed is, then I think the CPU_HAS_WB setting needs to go along with the 
code that implements `__wbflush' for this platform.

> diff --git a/arch/mips/include/asm/cpu.h b/arch/mips/include/asm/cpu.h
> index 98f59307e6a3..f332aaa9e69b 100644
> --- a/arch/mips/include/asm/cpu.h
> +++ b/arch/mips/include/asm/cpu.h
> @@ -326,6 +327,11 @@ enum cpu_type_enum {
>  
>  	CPU_QEMU_GENERIC,
>  
> +	/*
> +	 * Playstation 2 processors
> +	 */
> +	CPU_R5900,

 Shouldn't it go along with `R4000 class processors' earlier above?

> diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
> index 1aba27786bd5..b8bed9f26f8d 100644
> --- a/arch/mips/kernel/cpu-probe.c
> +++ b/arch/mips/kernel/cpu-probe.c
> @@ -1518,6 +1518,16 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c, unsigned int cpu)
>  		}
>  
>  		break;
> +	case PRID_IMP_R5900:
> +		c->cputype = CPU_R5900;
> +		__cpu_name[cpu] = "R5900";
> +		c->isa_level = MIPS_CPU_ISA_III;
> +		c->tlbsize = 48;
> +		c->options = MIPS_CPU_TLB | MIPS_CPU_4K_CACHE |
> +			     MIPS_CPU_4KEX | MIPS_CPU_DIVEC |
> +			     MIPS_CPU_FPU | MIPS_CPU_32FPR |
> +			     MIPS_CPU_COUNTER;
> +		break;

 If this is a MIPS III base ISA implementation, then presumably you need 
to set `c->fpu_msk31' as well, to exclude FPU_CSR_CONDX bits introduced 
with the MIPS IV ISA only.  Double-check with hardware documentation for 
the details.

 If you don't have documentation, but you have the hardware at hand, then 
you'll best check it yourself by writing a small user program that writes 
to CP1.FCSR and checks which bits stick (of course you need to leave the 
exception cause/mask bits alone for this check or you'll get SIGFPE sent 
instead).

 Please let me know if you have any questions.

  Maciej


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux