Mercurial > libavcodec.hg
comparison ppc/asm.S @ 12087:1532477cc30f libavcodec
PPC: add some asm support macros
author | mru |
---|---|
date | Sun, 04 Jul 2010 18:33:40 +0000 |
parents | f399ea693f46 |
children |
comparison
equal
deleted
inserted
replaced
12086:d780ae746855 | 12087:1532477cc30f |
---|---|
17 * License along with FFmpeg; if not, write to the Free Software | 17 * License along with FFmpeg; if not, write to the Free Software |
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
19 */ | 19 */ |
20 | 20 |
21 #include "config.h" | 21 #include "config.h" |
22 | |
23 #define GLUE(a, b) a ## b | |
24 #define JOIN(a, b) GLUE(a, b) | |
25 #define X(s) JOIN(EXTERN_ASM, s) | |
26 | |
27 #if ARCH_PPC64 | |
28 | |
29 #define PTR .quad | |
30 #define lp ld | |
31 #define lpx ldx | |
32 #define stp std | |
33 #define stpu stdu | |
34 #define PS 8 | |
35 #define L(s) JOIN(., s) | |
36 | |
37 .macro extfunc name | |
38 .global X(\name) | |
39 .section .opd, "aw" | |
40 X(\name): | |
41 .quad L(\name), .TOC.@tocbase, 0 | |
42 .previous | |
43 .type X(\name), STT_FUNC | |
44 L(\name): | |
45 .endm | |
46 | |
47 .macro movrel rd, sym | |
48 ld \rd, \sym@got(r2) | |
49 .endm | |
50 | |
51 #else /* ARCH_PPC64 */ | |
52 | |
53 #define PTR .int | |
54 #define lp lwz | |
55 #define lpx lwzx | |
56 #define stp stw | |
57 #define stpu stwu | |
58 #define PS 4 | |
59 #define L(s) s | |
60 | |
61 .macro extfunc name | |
62 .global X(\name) | |
63 .type X(\name), STT_FUNC | |
64 X(\name): | |
65 \name: | |
66 .endm | |
67 | |
68 .macro movrel rd, sym | |
69 #if CONFIG_PIC | |
70 lwz \rd, \sym@got(r2) | |
71 #else | |
72 lis \rd, \sym@ha | |
73 la \rd, \sym@l(\rd) | |
74 #endif | |
75 .endm | |
76 | |
77 #endif /* ARCH_PPC64 */ | |
22 | 78 |
23 #if HAVE_IBM_ASM | 79 #if HAVE_IBM_ASM |
24 | 80 |
25 .macro DEFINE_REG n | 81 .macro DEFINE_REG n |
26 .equiv r\n, \n | 82 .equiv r\n, \n |