$$dyncall in PA-RISC2.0 64 bit assembler ??? - HP UX

This is a discussion on $$dyncall in PA-RISC2.0 64 bit assembler ??? - HP UX ; Hi again - While trying to get some old code to work under HP-UX 11.11 with a PA-RISC 2.0 CPU-based machine in 64 bit mode I have some assembler code that doesn't compile. Note that I am using gcc 4.2.3 ...

+ Reply to Thread
Results 1 to 6 of 6

Thread: $$dyncall in PA-RISC2.0 64 bit assembler ???

  1. $$dyncall in PA-RISC2.0 64 bit assembler ???


    Hi again -

    While trying to get some old code to work under HP-UX 11.11 with a
    PA-RISC 2.0 CPU-based machine in 64 bit mode I have some assembler
    code that doesn't compile.

    Note that I am using gcc 4.2.3 to do this and so I am using the gnu as
    assembler.

    Still, this is the "offending" code part:

    .import $$dyncall,MILLICODE /* sitting at the top of the file */

    /* somewhere in a procedure: */

    bl $$dyncall,%r31

    The linker then barfs and says that $$dyncall is an unsatisfied
    symbol. Looking at docs from HP (man, I used to work for HP for more
    than 12 years back then) I see that there's a $$dyncall entry in the
    32 bit /usr/lib/libmilli.a but no such symbol in
    /usr/lib/PA20_64/libmilli.a ...

    The 64 bit porting info I found also doesn't help.

    Any ideas?

    Thanks!!!

    Best,
    Frank

    --

    Frank Goenninger

    frgo(at)mac(dot)com

    "Don't ask me! I haven't been reading comp.lang.lisp long enough to
    really know ..."

  2. Re: $$dyncall in PA-RISC2.0 64 bit assembler ??? SOLVED

    "Frank Goenninger" writes:

    > Hi again -
    >
    > While trying to get some old code to work under HP-UX 11.11 with a
    > PA-RISC 2.0 CPU-based machine in 64 bit mode I have some assembler
    > code that doesn't compile.
    >
    > Note that I am using gcc 4.2.3 to do this and so I am using the gnu as
    > assembler.
    >
    > Still, this is the "offending" code part:
    >
    > .import $$dyncall,MILLICODE /* sitting at the top of the file */
    >
    > /* somewhere in a procedure: */
    >
    > bl $$dyncall,%r31
    >
    > The linker then barfs and says that $$dyncall is an unsatisfied
    > symbol. Looking at docs from HP (man, I used to work for HP for more
    > than 12 years back then) I see that there's a $$dyncall entry in the
    > 32 bit /usr/lib/libmilli.a but no such symbol in
    > /usr/lib/PA20_64/libmilli.a ...


    Solved:

    gcc -march2.0

    and static linking ...

    (I don't know the details, though - it was a monkey style problem
    solving technique ...)

    Best,
    Frank

    --

    Frank Goenninger

    frgo(at)mac(dot)com

    "Don't ask me! I haven't been reading comp.lang.lisp long enough to
    really know ..."

  3. Re: $$dyncall in PA-RISC2.0 64 bit assembler ???

    Frank Bennington's wrote:
    > While trying to get some old code to work under HP-UX 11.11 with a
    > PA-RISC 2.0 CPU-based machine in 64 bit mode I have some assembler
    > code that doesn't compile.
    > bl $$dyncall,%r31
    > The linker then barfs and says that $$dyncall is an unsatisfied
    > symbol. but no such symbol in /usr/lib/PA20_64/libmilli.a ...


    There is no need for $$dyncall on PA2.0 since there is an instruction
    that does exactly that BVE,L.

    >it was a monkey style problem solving technique


    Yes, looking at a simple example of an indirect call would show that.

  4. Re: $$dyncall in PA-RISC2.0 64 bit assembler ???

    Dennis Handly writes:

    > Frank Goenninger wrote:
    >> While trying to get some old code to work under HP-UX 11.11 with a
    >> PA-RISC 2.0 CPU-based machine in 64 bit mode I have some assembler
    >> code that doesn't compile.
    >> bl $$dyncall,%r31
    >> The linker then barfs and says that $$dyncall is an unsatisfied
    >> symbol. but no such symbol in /usr/lib/PA20_64/libmilli.a ...

    >
    > There is no need for $$dyncall on PA2.0 since there is an instruction
    > that does exactly that BVE,L.
    >
    >>it was a monkey style problem solving technique

    >
    > Yes, looking at a simple example of an indirect call would show that.


    You mean like

    COPY gp, save_gp
    LDD 16(fp), tmp
    LDD 24(fp), gp
    BVE,L (tmp), r2

    COPY save_gp, gp

    ???

    Thx!
    Frank

    --

    Frank Goenninger

    frgo(at)mac(dot)com

    "Don't ask me! I haven't been reading comp.lang.lisp long enough to
    really know ..."

  5. Re: $$dyncall in PA-RISC2.0 64 bit assembler ???

    Frank "frgo" a.k.a DG1SBG wrote:
    > You mean like
    > COPY gp, save_gp
    > LDD 16(fp), tmp
    > LDD 24(fp), gp
    > BVE,L (tmp), r2
    >
    > COPY save_gp, gp


    Yes and you'll need to set R29 (same as other calls):
    LDO -48(%r30),%r29
    LDD 16(%r31),%r19
    .CALL ;in=26,29;out=28;
    BVE,L (%r19),%r2
    LDD 24(%r31),%r27
    LDD -128(%r30),%r27

  6. Re: $$dyncall in PA-RISC2.0 64 bit assembler ???

    Dennis Handly writes:

    > Yes and you'll need to set R29 (same as other calls):
    > LDO -48(%r30),%r29
    > LDD 16(%r31),%r19
    > .CALL ;in=26,29;out=28;
    > BVE,L (%r19),%r2
    > LDD 24(%r31),%r27
    > LDD -128(%r30),%r27


    Thx!!

    Best,
    Frank

    (formerly been working for HP in Germany for 12 years)
    --

    Frank Goenninger

    frgo(at)mac(dot)com

    "Don't ask me! I haven't been reading comp.lang.lisp long enough to
    really know ..."

+ Reply to Thread