Mercurial > libavcodec.hg
annotate arm/asm.S @ 12483:0159a19bfff7 libavcodec
aacdec: Rework channel mapping compatibility hacks.
For a PCE based configuration map the channels solely based on tags.
For an indexed configuration map the channels solely based on position.
This works with all known exotic samples including al17, elem_id0, bad_concat,
and lfe_is_sce.
author | alexc |
---|---|
date | Fri, 10 Sep 2010 18:01:48 +0000 |
parents | d6e87496883b |
children | 036603a63c51 |
rev | line source |
---|---|
8068 | 1 /* |
2 * Copyright (c) 2008 Mans Rullgard <mans@mansr.com> | |
3 * | |
4 * This file is part of FFmpeg. | |
5 * | |
6 * FFmpeg is free software; you can redistribute it and/or | |
7 * modify it under the terms of the GNU Lesser General Public | |
8 * License as published by the Free Software Foundation; either | |
9 * version 2.1 of the License, or (at your option) any later version. | |
10 * | |
11 * FFmpeg is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 * Lesser General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU Lesser General Public | |
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 | |
19 */ | |
20 | |
8507
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
21 #include "config.h" |
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
22 |
9991
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
23 #ifdef __ELF__ |
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
24 # define ELF |
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
25 #else |
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
26 # define ELF @ |
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
27 #endif |
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
28 |
12014 | 29 .macro require8 val=1 |
9991
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
30 ELF .eabi_attribute 24, \val |
12014 | 31 .endm |
8068 | 32 |
12014 | 33 .macro preserve8 val=1 |
9991
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
34 ELF .eabi_attribute 25, \val |
12014 | 35 .endm |
8068 | 36 |
12014 | 37 .macro function name, export=0 |
38 .macro endfunc | |
11456
c16e47ff9a49
Only use .size in ARM assembly when targeting ELF
mstorsjo
parents:
11443
diff
changeset
|
39 ELF .size \name, . - \name |
11443 | 40 .endfunc |
41 .purgem endfunc | |
12014 | 42 .endm |
12105 | 43 .text |
12014 | 44 .if \export |
10346 | 45 .global EXTERN_ASM\name |
46 EXTERN_ASM\name: | |
12014 | 47 .endif |
9991
c50957bfd553
ARM: cleaner selection of ELF-spefic assembler directives
mru
parents:
9989
diff
changeset
|
48 ELF .type \name, %function |
8068 | 49 .func \name |
50 \name: | |
12014 | 51 .endm |
8507
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
52 |
12015 | 53 .macro mov32 rd, val |
54 #if HAVE_ARMV6T2 | |
55 movw \rd, #(\val) & 0xffff | |
56 .if (\val) >> 16 | |
57 movt \rd, #(\val) >> 16 | |
58 .endif | |
59 #else | |
60 ldr \rd, =\val | |
61 #endif | |
62 .endm | |
63 | |
12014 | 64 .macro movrel rd, val |
10384
c44205b868dc
ARM: simplify movrel definition as CONFIG_PIC is now set for shared libs
mru
parents:
10346
diff
changeset
|
65 #if HAVE_ARMV6T2 && !CONFIG_PIC |
8507
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
66 movw \rd, #:lower16:\val |
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
67 movt \rd, #:upper16:\val |
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
68 #else |
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
69 ldr \rd, =\val |
779a9c93bf61
ARM: work around linker bug with movw/movt relocations in shared libs
mru
parents:
8359
diff
changeset
|
70 #endif |
12014 | 71 .endm |
9968 | 72 |
73 #if HAVE_VFP_ARGS | |
74 .eabi_attribute 28, 1 | |
75 # define VFP | |
76 # define NOVFP @ | |
77 #else | |
78 # define VFP @ | |
79 # define NOVFP | |
80 #endif | |
10346 | 81 |
82 #define GLUE(a, b) a ## b | |
83 #define JOIN(a, b) GLUE(a, b) | |
84 #define X(s) JOIN(EXTERN_ASM, s) |