On Tue, Mar 25, 2014 at 10:44:21PM +1100, Anton Blanchard wrote: > Fix STK_PARAM and use it instead of hardcoding ABIv1 offsets.
> _GLOBAL(memcpy) > BEGIN_FTR_SECTION > - std r3,48(r1) /* save destination pointer for return value */ > + std r3,STK_PARAM(R3)(r1) /* save destination pointer for return > value */ Here and elsewhere you're assuming you have a parameter save area. That won't be true with ELFv2 for calls to functions like memcpy. typedef __SIZE_TYPE__ size_t; extern void *memcpy (void *dest, const void *src, size_t n); void foo (void *dest, const void *src, size_t n) { memcpy (dest, src, n); } foo: 0: addis 2,12,.TOC.-0b@ha addi 2,2,.TOC.-0b@l .localentry foo,.-foo mflr 0 std 0,16(1) stdu 1,-32(1) # <======== bl memcpy nop addi 1,1,32 ld 0,16(1) mtlr 0 blr -- Alan Modra Australia Development Lab, IBM _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev