mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-28 20:51:13 +00:00
gst/gsttrashstack.h: Fix asm to build on Solaris (#170809)
Original commit message from CVS: * gst/gsttrashstack.h: Fix asm to build on Solaris (#170809)
This commit is contained in:
parent
5a6d945ade
commit
96f85a23ed
2 changed files with 17 additions and 13 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
2005-06-09 David Schleef <ds@schleef.org>
|
||||||
|
|
||||||
|
* gst/gsttrashstack.h: Fix asm to build on Solaris (#170809)
|
||||||
|
|
||||||
2005-06-09 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
2005-06-09 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||||
|
|
||||||
* gst/schedulers/entryscheduler.c:
|
* gst/schedulers/entryscheduler.c:
|
||||||
|
|
|
@ -101,20 +101,20 @@ gst_trash_stack_pop (GstTrashStack *stack)
|
||||||
* inlikely that we manage to grab the wrong head->next value.
|
* inlikely that we manage to grab the wrong head->next value.
|
||||||
*/
|
*/
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
" pushl %%ebx; \n\t"
|
"\tpushl %%ebx; \n"
|
||||||
" testl %%eax, %%eax; \n\t" /* if (head == NULL) return */
|
"\ttestl %%eax, %%eax; \n" /* if (head == NULL) return */
|
||||||
" jz 20f; \n\t"
|
"\tjz 2f; \n"
|
||||||
"10: \n\t"
|
"1: \n"
|
||||||
" movl (%%eax), %%ebx; \n\t" /* take value pointed to by head (head->next) */
|
"\tmovl (%%eax), %%ebx; \n" /* take value pointed to by head (head->next) */
|
||||||
" movl %%edx, %%ecx; \n\t" /* take counter */
|
"\tmovl %%edx, %%ecx; \n" /* take counter */
|
||||||
" incl %%ecx; \n\t" /* and increment */
|
"\tincl %%ecx; \n" /* and increment */
|
||||||
SMP_LOCK "cmpxchg8b %1; \n\t" /* if eax:edx == *stack, move ebx:ecx to *stack,
|
"\t" SMP_LOCK "cmpxchg8b %1;\n" /* if eax:edx == *stack, move ebx:ecx to *stack,
|
||||||
* else *stack is moved into eax:edx again... */
|
* else *stack is moved into eax:edx again... */
|
||||||
" jz 20f; \n\t" /* success */
|
"\tjz 2f; \n" /* success */
|
||||||
" testl %%eax, %%eax; \n\t" /* if (head == NULL) return */
|
"\ttestl %%eax, %%eax; \n" /* if (head == NULL) return */
|
||||||
" jnz 10b; \n\t" /* else we retry */
|
"\tjnz 1b; \n" /* else we retry */
|
||||||
"20: \n\t"
|
"2: \n"
|
||||||
" popl %%ebx \n"
|
"\tpopl %%ebx \n"
|
||||||
: "=a" (head)
|
: "=a" (head)
|
||||||
: "m" (*stack),
|
: "m" (*stack),
|
||||||
"a" (stack->head),
|
"a" (stack->head),
|
||||||
|
|
Loading…
Reference in a new issue