Re: [PATCH] MIPS: Kconfig: microMIPS and SmartMIPS are mutually exclusive

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

 



On Tue, 3 Jun 2014, Ralf Baechle wrote:

> >  Do we need this CPU_HAS_SMARTMIPS setting at all?  Can't we just 
> > save/restore this SmartMIPS ACX register on context switches where 
> > available (straightforward to detect at the run time) and have the 
> > relevant pieces of code excluded (#ifdef-ed out or suchlike) on 
> > non-supported configurations such as microMIPS or MIPS64?
> 
> SmartMIPS has new instructions which are hardcoded in various assembler
> fragments, where something like if (cpu_has_smartmips) won't work.
> So until a more complex solution is implemented CPU_HAS_SMARTMIPS is
> what there is.

 Well:

	.set	push
	.set	smartmips
	# Whatever SmartMIPS stuff.
	.set	pop

should do.  It has been supported by GAS since forever (well, since it has 
included SmartMIPS instructions that is, which is 2.18; to support older 
versions we can use $(call as-instr,...) and some #ifdef-ry that we have 
anyway).  It's <asm/stackframe.h> only BTW for six instructions total.

 So I think that is straightforward to implement and much more reasonable 
than the hacks we have now.  A SmartMIPS-enabled kernel doesn't even check 
if the CPU it's run on implements the ASE so it'll just crash at some 
point trying to execute MFLHXU or MTLHX if it does not -- and obviously if 
two SmartMIPS user programs are run concurrently on a SmartMIPS-disabled 
kernel and use the ACX register, then they will yield random results.

  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