Subject: Re: ath hal and reserved register r23
To: None <rumble@ephemeral.org>
From: Paul Koning <pkoning@equallogic.com>
List: port-mips
Date: 07/24/2007 16:58:42
>>>>> "Stephen" == Stephen M Rumble <stephen.rumble@utoronto.ca> writes:

 Stephen> Quoting David Young <dyoung@pobox.com>:
 >> Apparently the changes from the yamt-idlelwp branch reserve MIPS
 >> register r23 for curlwp for a kernel size/(speed?) benefit.  The
 >> Atheros HAL, which we do not have the liberty to recompile, uses
 >> r23 for its own purposes, which clash with the kernel's.
 >> Consequently, one cannot use ath(4) on a MIPS box running
 >> -current.
 >> 
 >> Is it possible either to use some other register, or to make the
 >> use of r23 for curlwp a compile-time option, so that development
 >> in -current on MIPS boxen such as the Meraki Mini[1] can continue?

 Stephen> Isn't the reservation of r23 just a single GCC flag? Since
 Stephen> Sam builds the HALs for a bunch of platforms anyhow, maybe
 Stephen> if it's not complicated he'd be willing to add one more
 Stephen> image to his builds.

r23 is s7, and that has been a "preserved across function calls"
register in the standard MIPS ABI forever.  I can't think of any
switch to GCC to treat it differently.  (I'm sure it could be done
with a change to the code generator, probably a fairly easy one, but I
wouldn't expect it to be a feature of any standard compiler.)

I suppose it would be possible to hack code, or hack the compiler, to
accommodate someone who is violating this ABI, but if they are so
badly confused, what else did they get wrong?  Wouldn't it make more
sense to say "hey, go fix your broken code"?

      paul