diff --git a/lisp/hppa-assem.S b/lisp/hppa-assem.S index 2770bc528dfb51a5aa3639ea4f9dc5f716d5c553..d800c92c8648c022c762ff5aaf4d481532f8f0a9 100644 --- a/lisp/hppa-assem.S +++ b/lisp/hppa-assem.S @@ -189,9 +189,11 @@ call_into_c /* Turn off pseudo-atomic and check for traps. */ addit,od -4,reg_ALLOC,reg_ALLOC - /* Now we can call the C function. */ - ble 0(4,reg_CFUNC) - copy r31, r2 + /* in order to be able to call incrementally linked (ld -A) functions, + we have to do some mild trickery here */ + copy reg_CFUNC,%r22 + bl $$dyncall,r31 + copy r31, r2 /* Clear the callee saves descriptor regs. */ copy r0, reg_A5 diff --git a/lisp/hppa-assem.s b/lisp/hppa-assem.s index 2770bc528dfb51a5aa3639ea4f9dc5f716d5c553..d800c92c8648c022c762ff5aaf4d481532f8f0a9 100644 --- a/lisp/hppa-assem.s +++ b/lisp/hppa-assem.s @@ -189,9 +189,11 @@ call_into_c /* Turn off pseudo-atomic and check for traps. */ addit,od -4,reg_ALLOC,reg_ALLOC - /* Now we can call the C function. */ - ble 0(4,reg_CFUNC) - copy r31, r2 + /* in order to be able to call incrementally linked (ld -A) functions, + we have to do some mild trickery here */ + copy reg_CFUNC,%r22 + bl $$dyncall,r31 + copy r31, r2 /* Clear the callee saves descriptor regs. */ copy r0, reg_A5