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