summaryrefslogtreecommitdiff
path: root/libavutil/riscv
diff options
context:
space:
mode:
authorRémi Denis-Courmont <remi@remlab.net>2022-09-26 17:52:22 +0300
committerLynne <dev@lynne.ee>2022-09-27 13:19:52 +0200
commit746f1ff36ac0d232687820fbde4e4efc79093af7 (patch)
treef9252d6e42f7c67743c7ebfaf957f706ff562f6e /libavutil/riscv
parentb95e2fbd85e93b58d019ad0e3da64a72ee7cc3d5 (diff)
downloadffmpeg-746f1ff36ac0d232687820fbde4e4efc79093af7.tar.gz
lavu/riscv: initial common header for assembler macros
Diffstat (limited to 'libavutil/riscv')
-rw-r--r--libavutil/riscv/asm.S77
1 files changed, 77 insertions, 0 deletions
diff --git a/libavutil/riscv/asm.S b/libavutil/riscv/asm.S
new file mode 100644
index 0000000000..dbd97f40a4
--- /dev/null
+++ b/libavutil/riscv/asm.S
@@ -0,0 +1,77 @@
+/*
+ * Copyright © 2022 Rémi Denis-Courmont.
+ * Loosely based on earlier work copyrighted by Måns Rullgård, 2008.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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,
+ * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+
+#if defined (__riscv_float_abi_soft)
+#define NOHWF
+#define NOHWD
+#define HWF #
+#define HWD #
+#elif defined (__riscv_float_abi_single)
+#define NOHWF #
+#define NOHWD
+#define HWF
+#define HWD #
+#else
+#define NOHWF #
+#define NOHWD #
+#define HWF
+#define HWD
+#endif
+
+ .macro func sym, ext=
+ .text
+ .align 2
+
+ .option push
+ .ifnb \ext
+ .option arch, +\ext
+ .endif
+
+ .global \sym
+ .hidden \sym
+ .type \sym, %function
+ \sym:
+
+ .macro endfunc
+ .size \sym, . - \sym
+ .option pop
+ .previous
+ .purgem endfunc
+ .endm
+ .endm
+
+ .macro const sym, align=3, relocate=0
+ .if \relocate
+ .pushsection .data.rel.ro
+ .else
+ .pushsection .rodata
+ .endif
+ .align \align
+ \sym:
+
+ .macro endconst
+ .size \sym, . - \sym
+ .popsection
+ .purgem endconst
+ .endm
+ .endm