On Fri, 2005-02-25 at 12:31 +0100, Leopold Toetsch wrote:

> I'm still waiting for confirmation that the recipe below works for
> ppc-linux.

Nope, the assembler here doesn't understand the code.  Here's what
worked for me.

-- c


#define PPC_JIT_GP_REGISTER_SAVE_SPACE (4*19)

;; This macro would generate the below asm, but requires using 'cc -c' 
;; rather than 'as' as the assembler (so that the preprocessor runs), 
;; and this is not currently configurable in the Parrot makefiles

.macro RESTORE_NONVOLATILE_FLOATS
    lfd    f14, -PPC_JIT_GP_REGISTER_SAVE_SPACE-1*8(r1)
    lfd    f15, -PPC_JIT_GP_REGISTER_SAVE_SPACE-2*8(r1)
    lfd    f16, -PPC_JIT_GP_REGISTER_SAVE_SPACE-3*8(r1)
    lfd    f17, -PPC_JIT_GP_REGISTER_SAVE_SPACE-4*8(r1)
    lfd    f18, -PPC_JIT_GP_REGISTER_SAVE_SPACE-5*8(r1)
    lfd    f19, -PPC_JIT_GP_REGISTER_SAVE_SPACE-6*8(r1)
    lfd    f20, -PPC_JIT_GP_REGISTER_SAVE_SPACE-7*8(r1)
    lfd    f21, -PPC_JIT_GP_REGISTER_SAVE_SPACE-8*8(r1)
    lfd    f22, -PPC_JIT_GP_REGISTER_SAVE_SPACE-9*8(r1)
    lfd    f23, -PPC_JIT_GP_REGISTER_SAVE_SPACE-10*8(r1)
    lfd    f24, -PPC_JIT_GP_REGISTER_SAVE_SPACE-11*8(r1)
    lfd    f25, -PPC_JIT_GP_REGISTER_SAVE_SPACE-12*8(r1)
    lfd    f26, -PPC_JIT_GP_REGISTER_SAVE_SPACE-13*8(r1)
    lfd    f27, -PPC_JIT_GP_REGISTER_SAVE_SPACE-14*8(r1)
    lfd    f28, -PPC_JIT_GP_REGISTER_SAVE_SPACE-15*8(r1)
    lfd    f29, -PPC_JIT_GP_REGISTER_SAVE_SPACE-16*8(r1)
    lfd    f30, -PPC_JIT_GP_REGISTER_SAVE_SPACE-17*8(r1)
    lfd    f31, -PPC_JIT_GP_REGISTER_SAVE_SPACE-18*8(r1)

.endmacro

.text
        .align  12              ; vm page aligned
        .globl _Parrot_ppc_jit_restore_nonvolatile_registers
_Parrot_ppc_jit_restore_nonvolatile_registers:

    lfd     f14,-84(r1)
    lfd     f15,-92(r1)
    lfd     f16,-100(r1)
    lfd     f17,-108(r1)
    lfd     f18,-116(r1)
    lfd     f19,-124(r1)
    lfd     f20,-132(r1)
    lfd     f21,-140(r1)
    lfd     f22,-148(r1)
    lfd     f23,-156(r1)
    lfd     f24,-164(r1)
    lfd     f25,-172(r1)
    lfd     f26,-180(r1)
    lfd     f27,-188(r1)
    lfd     f28,-196(r1)
    lfd     f29,-204(r1)
    lfd     f30,-212(r1)
    lfd     f31,-220(r1)

    blr 

Reply via email to