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: Fri, 27 Aug 2004 17:25:53 +0100
User-agent: Mozilla Thunderbird 0.7.3 (X11/20040803)

Hi Randolph,

foo:
        pdtlb,l   0(%r28)

I do not believe that this instruction is valid. The "x" field of the instruction needs to be a register name.

According to the "PA-RISC 2.0 Architecture" document, chapter 7, page 7-106 the format for the instruction is:

   PDTLB,scope,cmplt x(s,b)

And the operation is defined as:

              if (priv != 0)
                   privileged_operation_trap;
              else {
                   space  space_select(s,GR[b],INDEXED);
                   switch (cmplt) {
                        case M: offset  GR[b];
                                  GR[b]  GR[b] + GR[x];
                                  break;
                        default: offset  GR[b] + GR[x];
                                  break;
                   }
                   page_size  4096 << (2 * GR[b]{60..63});
                   for (i  0; i < page_size/4096; i++) {
                        if (entry  DTLB_search(space, offset + i*4096))
                             DTLB_purge_local(entry);
                   }
                   if (scope != L)
                        DTLB_purge_broadcast(space,offset,page_size);
              }

Note how GR[x] is used regardless of the value of "cmplt".

The tests in the GAS testsuite also make this clear. The following instructions are all valid:

        pdtlb     %r4(%sr0,%r5)
        pdtlb,m   %r4(%sr0,%r5)
        pdtlb,l   %r4(%sr0,%r5)
        pdtlb,l,m %r4(%sr0,%r5)
        pitlb,l   %r4(%sr4,%r5)
        pitlb,l,m %r4(%sr4,%r5)

Cheers
  Nick




reply via email to

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