All of lore.kernel.org
 help / color / mirror / Atom feed
* [parisc-linux] 64 byte alignment
@ 2002-08-30 23:43 Will Newton
  2002-08-30 23:57 ` Randolph Chung
  0 siblings, 1 reply; 4+ messages in thread
From: Will Newton @ 2002-08-30 23:43 UTC (permalink / raw)
  To: parisc-linux

I'm trying to 64 byte align a stack pointer, unfortunately it's not working. 
Here is my code:

        ldi 0x03f,%r21                  ; Load mask (b0111111)
        and,<> %r3,%r21,%r21            ; Check alignment
        addi 64,%r3,%r3                 ; If not aligned round up
        depwi 0x0,31,6,%r3               ; Clear low order bits

Basically the idea is:
 and the low 6 bits with a mask to see if any are set.
 if any are set, add 64 and clear the low order bits

I may be doing something horribly ignorant here, but PA-RISC assembly is not 
the most widely documented of things. :)

Thanks,

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [parisc-linux] 64 byte alignment
  2002-08-30 23:43 [parisc-linux] 64 byte alignment Will Newton
@ 2002-08-30 23:57 ` Randolph Chung
  2002-08-31  0:10   ` Will Newton
  2002-08-31  1:12   ` John David Anglin
  0 siblings, 2 replies; 4+ messages in thread
From: Randolph Chung @ 2002-08-30 23:57 UTC (permalink / raw)
  To: Will Newton; +Cc: parisc-linux

> I'm trying to 64 byte align a stack pointer, unfortunately it's not working. 
> Here is my code:
> 
>         ldi 0x03f,%r21                  ; Load mask (b0111111)
>         and,<> %r3,%r21,%r21            ; Check alignment
>         addi 64,%r3,%r3                 ; If not aligned round up
>         depwi 0x0,31,6,%r3               ; Clear low order bits
> 
> Basically the idea is:
>  and the low 6 bits with a mask to see if any are set.
>  if any are set, add 64 and clear the low order bits
> 
> I may be doing something horribly ignorant here, but PA-RISC assembly is not 
> the most widely documented of things. :)

nullification only applies to one instruction. you probably need a
branch there.

as for documentation, the entire intruction set is documented for pa1.1
and 2.0 on the hp web site:

http://h21007.www2.hp.com/dspp/tech/tech_TechDocumentDetailPage_IDX/1,1701,958!1!253,00.html

http://h21007.www2.hp.com/dspp/tech/tech_TechDocumentDetailPage_IDX/1,1701,959,00.html

horrid link names :-(

another good way to do this is to write what you want in C, and tell gcc
to tell you what you want :-)


input: r26, r20 is scratch

        extru %r26,31,6,%r20
        comib,=,n 0,%r20,.L2
        ldo 64(%r26),%r26
        depi 0,31,6,%r26
.L2:
        /* ... */

randolph
--  
Randolph Chung
Debian GNU/Linux Developer, hppa/ia64 ports
http://www.tausq.org/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [parisc-linux] 64 byte alignment
  2002-08-30 23:57 ` Randolph Chung
@ 2002-08-31  0:10   ` Will Newton
  2002-08-31  1:12   ` John David Anglin
  1 sibling, 0 replies; 4+ messages in thread
From: Will Newton @ 2002-08-31  0:10 UTC (permalink / raw)
  To: parisc-linux

On Saturday 31 Aug 2002 12:57 am, Randolph Chung wrote:

> nullification only applies to one instruction. you probably need a
> branch there.

I know, but I figured clearing the low 6 bits on an already aligned pointer 
would do no damage.

> another good way to do this is to write what you want in C, and tell gcc
> to tell you what you want :-)

Thanks! I trust gcc somewhat more than I do myself at this stage. :)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [parisc-linux] 64 byte alignment
  2002-08-30 23:57 ` Randolph Chung
  2002-08-31  0:10   ` Will Newton
@ 2002-08-31  1:12   ` John David Anglin
  1 sibling, 0 replies; 4+ messages in thread
From: John David Anglin @ 2002-08-31  1:12 UTC (permalink / raw)
  To: randolph; +Cc: will, parisc-linux

> another good way to do this is to write what you want in C, and tell gcc
> to tell you what you want :-)

GCC aligns its stacks to 64 and 128 byte boundaries for the 32 and 64
bit ports, respectively.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2002-08-31  1:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-08-30 23:43 [parisc-linux] 64 byte alignment Will Newton
2002-08-30 23:57 ` Randolph Chung
2002-08-31  0:10   ` Will Newton
2002-08-31  1:12   ` John David Anglin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.