Mercurial > mplayer.hg
annotate loader/wrapper.S @ 37158:08bbd1e9036d
vd_ffmpeg: Rewrite ticket reference in comment
Omit the issue tracking software's name. Despite the migration from
Bugzilla to Trac we were able to keep the ticket numbers.
| author | al |
|---|---|
| date | Fri, 15 Aug 2014 22:27:52 +0000 |
| parents | 32725ca88fed |
| children |
| rev | line source |
|---|---|
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
1 #include "config.h" |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
2 |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
3 #define GLUE(a, b) a ## b |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
4 #define JOIN(a, b) GLUE(a, b) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
5 #define MANGLE(s) JOIN(EXTERN_ASM, s) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
6 |
|
30469
6dd1ae2298f3
Remove '.section' causing the following assembler error on OS/2.
komh
parents:
29263
diff
changeset
|
7 .data |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
8 .globl MANGLE(caller_return) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
9 MANGLE(caller_return): |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
10 .long 0 |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
11 .globl MANGLE(report_entry) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
12 MANGLE(report_entry): |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
13 .long MANGLE(null_call) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
14 .globl MANGLE(report_ret) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
15 MANGLE(report_ret): |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
16 .long MANGLE(null_call) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
17 .global MANGLE(wrapper_target) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
18 MANGLE(wrapper_target): |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
19 .long MANGLE(null_call) |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
20 |
|
30469
6dd1ae2298f3
Remove '.section' causing the following assembler error on OS/2.
komh
parents:
29263
diff
changeset
|
21 .text |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
22 .globl MANGLE(null_call) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
23 .type MANGLE(null_call), @function |
| 8287 | 24 .balign 16,0x90 |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
25 MANGLE(null_call): |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
26 ret |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
27 .globl MANGLE(wrapper) |
|
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
28 .type MANGLE(wrapper), @function |
| 8287 | 29 .balign 16,0x90 |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
30 MANGLE(wrapper): |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
31 pusha # store registers (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI) |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
32 pushf # store flags |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
33 |
|
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
34 push %ebp # set up a stack frame |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
35 movl %esp, %ebp |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
36 |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
37 leal 4(%ebp), %eax # push flags addr |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
38 push %eax |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
39 leal 8(%ebp), %eax # push registers addr |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
40 push %eax |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
41 |
|
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
42 leal 40(%ebp), %edx |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
43 movl (%ebp), %eax |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
44 subl %edx, %eax |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
45 push %eax |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
46 push %edx |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
47 |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
48 call *MANGLE(report_entry) # report entry |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
49 |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
50 test %eax, %eax |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
51 jnz .Ldone |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
52 |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
53 leave # restore %esp, %ebp |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
54 popf # restore flags |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
55 popa # restore registers |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
56 |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
57 popl MANGLE(caller_return) # switch return addresses |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
58 pushl $.Lwrapper_return |
|
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
59 |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
60 jmp *MANGLE(wrapper_target) # wrapper_target should return at .Lwrapper_return |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
61 |
| 8287 | 62 .balign 16, 0x90 |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
63 .Lwrapper_return: |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
64 pushl MANGLE(caller_return) # restore the original return address |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
65 pusha # more for reference sake here |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
66 pushf |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
67 |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
68 push %ebp # set up a stack frame |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
69 movl %esp, %ebp |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
70 |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
71 leal 4(%ebp), %eax # push flags addr |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
72 push %eax |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
73 leal 8(%ebp), %eax # push registers addr |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
74 push %eax |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
75 |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
76 leal 40(%ebp), %edx # push stack top address (relative to our entry) |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
77 movl (%ebp), %eax |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
78 subl %edx, %eax # calculate difference between entry and previous frame |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
79 push %eax |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
80 push %edx |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
81 |
|
30470
9ccf3bea4cf1
Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
komh
parents:
30469
diff
changeset
|
82 call *MANGLE(report_ret) # report the return information (same args) |
|
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
8287
diff
changeset
|
83 .Ldone: |
|
8269
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
84 |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
85 leave |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
86 popf |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
87 popa |
|
8b905703a450
- qtx (quicktime's macos emulation layer) debugging/emulation environment :)
arpi
parents:
diff
changeset
|
88 ret |
