Mercurial > libavcodec.hg
changeset 12087:1532477cc30f libavcodec
PPC: add some asm support macros
author | mru |
---|---|
date | Sun, 04 Jul 2010 18:33:40 +0000 |
parents | d780ae746855 |
children | bb603bb20873 |
files | ppc/asm.S |
diffstat | 1 files changed, 56 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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