# HG changeset patch # User mru # Date 1278268420 0 # Node ID 1532477cc30ff255dc0bbc561af4f876b321d139 # Parent d780ae746855cfbf02daafe747036f8cb084b202 PPC: add some asm support macros diff -r d780ae746855 -r 1532477cc30f ppc/asm.S --- a/ppc/asm.S Sat Jul 03 19:26:30 2010 +0000 +++ b/ppc/asm.S Sun Jul 04 18:33:40 2010 +0000 @@ -20,6 +20,62 @@ #include "config.h" +#define GLUE(a, b) a ## b +#define JOIN(a, b) GLUE(a, b) +#define X(s) JOIN(EXTERN_ASM, s) + +#if ARCH_PPC64 + +#define PTR .quad +#define lp ld +#define lpx ldx +#define stp std +#define stpu stdu +#define PS 8 +#define L(s) JOIN(., s) + +.macro extfunc name + .global X(\name) + .section .opd, "aw" +X(\name): + .quad L(\name), .TOC.@tocbase, 0 + .previous + .type X(\name), STT_FUNC +L(\name): +.endm + +.macro movrel rd, sym + ld \rd, \sym@got(r2) +.endm + +#else /* ARCH_PPC64 */ + +#define PTR .int +#define lp lwz +#define lpx lwzx +#define stp stw +#define stpu stwu +#define PS 4 +#define L(s) s + +.macro extfunc name + .global X(\name) + .type X(\name), STT_FUNC +X(\name): +\name: +.endm + +.macro movrel rd, sym +#if CONFIG_PIC + lwz \rd, \sym@got(r2) +#else + lis \rd, \sym@ha + la \rd, \sym@l(\rd) +#endif +.endm + +#endif /* ARCH_PPC64 */ + #if HAVE_IBM_ASM .macro DEFINE_REG n