On 29 Dec 2000, at 5:17, Jakub Jelinek wrote:

> On Fri, Dec 29, 2000 at 10:54:38AM +0100, Ulrich Windl wrote:
> > Hello,
> > 
> > I noticed (with some inspiration from Andy Kleen) that some asm() 
> > instructions for the ia32 use the "g" constraint for "mull", where my 
> > Intel 386 Assembly Language Manual suggests the "MUL" instruction needs 
> > an r/m operand. So I guess the correct constraint is "rm" in gcc, and 
> > not "g". That change identical assembly output for gcc-2.95.2, but some 
> > gcc-2.96.x will try a multiplication with an immediate (constant) 
> > operand for the "g" constarint, and the as will choke on that.
> > (Redhat 7.0 ships such a version of gcc).
> 
> gcc 2.95.2 md.texi sais:
> @cindex @samp{g} in constraint
> @item @samp{g}
> Any register, memory or immediate integer operand is allowed, except for
> registers that are not general registers.
> 
> (2.95.2 was chosen to make it clear it is not something new in gcc).
> That means gcc is really free to choose which of register, memory or
> immediate it puts in and the fact that some gcc version choose one and
> others choose other is perfectly correct.
> Fix the constraints and be happy (at least during the upcoming millenium) :)

Oh, if it wasn't clear: It's what I wanted to say. As I don't have a 
patch ready for that, maybe start at arch/i386/kernel/time.c; there are 
at least two of these "mull" instructions.

Ulrich

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to