mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	MIPS: Detect MIPSr6 Virtual Processor support
MIPSr6 introduces support for "Virtual Processors", which are conceptually similar to VPEs from the now-deprecated MT ASE. Detect whether the system supports VPs using the VP bit in Config5, adding cpu_has_vp for use by later patches. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Cc: Maciej W. Rozycki <macro@imgtec.com> Cc: Joshua Kinard <kumba@gentoo.org> Cc: Steven J. Hill <sjhill@realitydiluted.com> Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com> Cc: James Hogan <james.hogan@imgtec.com> Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/12327/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
		
							parent
							
								
									98c1c5078d
								
							
						
					
					
						commit
						f270d881fa
					
				
					 4 changed files with 8 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -311,6 +311,10 @@
 | 
			
		|||
#define cpu_has_mipsmt		(cpu_data[0].ases & MIPS_ASE_MIPSMT)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef cpu_has_vp
 | 
			
		||||
#define cpu_has_vp		(cpu_data[0].options & MIPS_CPU_VP)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef cpu_has_userlocal
 | 
			
		||||
#define cpu_has_userlocal	(cpu_data[0].options & MIPS_CPU_ULRI)
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -390,6 +390,7 @@ enum cpu_type_enum {
 | 
			
		|||
#define MIPS_CPU_FTLB		0x20000000000ull /* CPU has Fixed-page-size TLB */
 | 
			
		||||
#define MIPS_CPU_NAN_LEGACY	0x40000000000ull /* Legacy NaN implemented */
 | 
			
		||||
#define MIPS_CPU_NAN_2008	0x80000000000ull /* 2008 NaN implemented */
 | 
			
		||||
#define MIPS_CPU_VP		0x100000000000ull /* MIPSr6 Virtual Processors (multi-threading) */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * CPU ASE encodings
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -623,6 +623,7 @@
 | 
			
		|||
#define MIPS_CONF5_MRP		(_ULCAST_(1) << 3)
 | 
			
		||||
#define MIPS_CONF5_LLB		(_ULCAST_(1) << 4)
 | 
			
		||||
#define MIPS_CONF5_MVH		(_ULCAST_(1) << 5)
 | 
			
		||||
#define MIPS_CONF5_VP		(_ULCAST_(1) << 7)
 | 
			
		||||
#define MIPS_CONF5_FRE		(_ULCAST_(1) << 8)
 | 
			
		||||
#define MIPS_CONF5_UFE		(_ULCAST_(1) << 9)
 | 
			
		||||
#define MIPS_CONF5_MSAEN	(_ULCAST_(1) << 27)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -796,6 +796,8 @@ static inline unsigned int decode_config5(struct cpuinfo_mips *c)
 | 
			
		|||
	if (config5 & MIPS_CONF5_MVH)
 | 
			
		||||
		c->options |= MIPS_CPU_XPA;
 | 
			
		||||
#endif
 | 
			
		||||
	if (cpu_has_mips_r6 && (config5 & MIPS_CONF5_VP))
 | 
			
		||||
		c->options |= MIPS_CPU_VP;
 | 
			
		||||
 | 
			
		||||
	return config5 & MIPS_CONF_M;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue