bug-binutils
[Top][All Lists]
Advanced

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

Re: [Bug gas/336] gas cannot assemble pdtlb,l instruction


From: Nick Clifton
Subject: Re: [Bug gas/336] gas cannot assemble pdtlb,l instruction
Date: Tue, 31 Aug 2004 13:04:16 +0100
User-agent: Mozilla Thunderbird 0.7.3 (X11/20040803)

Hi Randolph,

so, apparently, gas thinks that:

pdtlb   0(%r29)     -> valid for .level 1.1 or .level 2.0
pdtlb   %r0(%r29)   -> ditto
pdtlb,l 0(%r29)     -> invalid always
pdtlb,l %r0(%r29)   -> valid iff .level 2.0

i can't say that this is strictly wrong, just seems inconsistent :)

I agree. This behaviour is explicitly coded into the sources. if you have a look at the header file include/opcodes/hppa.h and search for the pdtlb instruction you will find four entries:

 { "pdtlb", 0x04001600, 0xfc003fdf, "cLcZx(s,b)", pa20, FLAG_STRICT},
 { "pdtlb", 0x04001600, 0xfc003fdf, "cLcZx(b)", pa20, FLAG_STRICT},
 { "pdtlb", 0x04001200, 0xfc003fdf, "cZx(s,b)", pa10, 0},
 { "pdtlb", 0x04001200, 0xfc003fdf, "cZx(b)", pa10, 0},

It is the presence of FLAG_STRICT which is forcing the assembler to require an explicit register name for the "x" field. My assumption is that this is because the HPPA 2.0 ISA specification tightened up the syntax for the pdtlb instruction, ruling out register name abbreviations. Presumably the "0" abbreviation is still supported for level 1.1 since that might be used in already existing code. I cannot be definitive about this since I did not write the code and I am not an expert on the HPPA ISA.

Cheers
  Nick




reply via email to

[Prev in Thread] Current Thread [Next in Thread]