]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/arm/asm.S
ARM: enable UAL syntax in asm.S
[ffmpeg] / libavcodec / arm / asm.S
index 06006730dab0c5338fecd4550ba6904752b88b90..8d7fe98614c4937a19c881d86960e5850e9ea836 100644 (file)
@@ -1,20 +1,20 @@
 /*
  * Copyright (c) 2008 Mans Rullgard <mans@mansr.com>
  *
- * This file is part of FFmpeg.
+ * This file is part of Libav.
  *
- * FFmpeg is free software; you can redistribute it and/or
+ * Libav is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2.1 of the License, or (at your option) any later version.
  *
- * FFmpeg is distributed in the hope that it will be useful,
+ * Libav is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
+ * License along with Libav; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #   define ELF @
 #endif
 
-        .macro require8, val=1
+        .syntax unified
+
+.macro  require8 val=1
 ELF     .eabi_attribute 24, \val
-        .endm
+.endm
 
-        .macro preserve8, val=1
+.macro  preserve8 val=1
 ELF     .eabi_attribute 25, \val
-        .endm
+.endm
 
-        .macro function name, export=0
-.if \export
-        .global \name
-.endif
+.macro  function name, export=0
+    .macro endfunc
+ELF     .size   \name, . - \name
+        .endfunc
+        .purgem endfunc
+    .endm
+        .text
+    .if \export
+        .global EXTERN_ASM\name
+EXTERN_ASM\name:
+    .endif
 ELF     .type   \name, %function
         .func   \name
 \name:
-        .endm
+.endm
+
+.macro  const   name, align=2
+    .macro endconst
+ELF     .size   \name, . - \name
+        .purgem endconst
+    .endm
+        .section        .rodata
+        .align          \align
+\name:
+.endm
+
+.macro  mov32   rd, val
+#if HAVE_ARMV6T2
+        movw            \rd, #(\val) & 0xffff
+    .if (\val) >> 16
+        movt            \rd, #(\val) >> 16
+    .endif
+#else
+        ldr             \rd, =\val
+#endif
+.endm
 
-        .macro movrel rd, val
-#if HAVE_ARMV6T2 && !CONFIG_SHARED && !CONFIG_PIC
+.macro  movrel rd, val
+#if HAVE_ARMV6T2 && !CONFIG_PIC && !defined(__APPLE__)
         movw            \rd, #:lower16:\val
         movt            \rd, #:upper16:\val
 #else
         ldr             \rd, =\val
 #endif
-        .endm
+.endm
 
 #if HAVE_VFP_ARGS
         .eabi_attribute 28, 1
@@ -60,3 +90,7 @@ ELF     .type   \name, %function
 #   define VFP   @
 #   define NOVFP
 #endif
+
+#define GLUE(a, b) a ## b
+#define JOIN(a, b) GLUE(a, b)
+#define X(s) JOIN(EXTERN_ASM, s)