diff --git a/reactos/lib/pseh/i386/framebased-gcchack.c b/reactos/lib/pseh/i386/framebased-gcchack.c index ccf75c0ac2a..a254fd11066 100644 --- a/reactos/lib/pseh/i386/framebased-gcchack.c +++ b/reactos/lib/pseh/i386/framebased-gcchack.c @@ -94,13 +94,14 @@ void _SEH2GlobalUnwind(void * target) { __asm__ __volatile__ ( - "push %%ebp\n" - "push $0\n" - "push $0\n" - "push $Return%=\n" - "push %[target]\n" + "push %%ebp\n\t" + "push $0\n\t" + "push $0\n\t" + "push $Return%=\n\t" + "push %[target]\n\t" "call %c[RtlUnwind]\n" - "Return%=: pop %%ebp\n" : + "Return%=:\n\t" + "pop %%ebp" : : [target] "g" (target), [RtlUnwind] "g" (&RtlUnwind) : "eax", "ebx", "ecx", "edx", "esi", "edi", "flags", "memory" @@ -131,13 +132,13 @@ __SEH_EXCEPT_RET _SEH2Except(_SEH2Frame_t * frame, volatile _SEH2TryLevel_t * tr __asm__ __volatile__ ( - "push %[ep]\n" - "push %[frame]\n" - "call *%[filter]\n" - "pop %%edx\n" - "pop %%edx\n" : + "push %[ep]\n\t" + "push %[frame]\n\t" + "call *%[filter]\n\t" + "pop %%edx\n\t" + "pop %%edx" : [ret] "=a" (ret) : - "c" (context), [filter] "r" (filter), [frame] "g" (frame), [ep] "g" (ep) : + "c" (context), [filter] "r" (filter), [frame] "r" (frame), [ep] "r" (ep) : "edx", "flags", "memory" ); @@ -158,7 +159,7 @@ void _SEH2Finally(_SEH2Frame_t * frame, volatile _SEH2TryLevel_t * trylevel) body = _SEHFunctionFromTrampoline((_SEHTrampoline_t *)body); } - __asm__ __volatile__("call *%1\n" : : "c" (context), "r" (body) : "eax", "edx", "flags", "memory"); + __asm__ __volatile__("call *%1" : : "c" (context), "r" (body) : "eax", "edx", "flags", "memory"); } } diff --git a/reactos/subsystems/win32/win32k/dib/dib16bpp.c b/reactos/subsystems/win32/win32k/dib/dib16bpp.c index a1d72ae7251..fe5c1f16ecd 100644 --- a/reactos/subsystems/win32/win32k/dib/dib16bpp.c +++ b/reactos/subsystems/win32/win32k/dib/dib16bpp.c @@ -413,24 +413,24 @@ DIB_16BPP_ColorFill(SURFOBJ* DestSurface, RECTL* DestRect, ULONG color) for (DestY = DestRect->top; DestY< DestRect->bottom; DestY++) { __asm__ __volatile__ ( - " cld\n" - " mov %1,%%ebx\n" - " mov %2,%%edi\n" - " test $0x03, %%edi\n" /* Align to fullword boundary */ - " jz .FL1\n" - " stosw\n" - " dec %%ebx\n" - " jz .FL2\n" - ".FL1:\n" - " mov %%ebx,%%ecx\n" /* Setup count of fullwords to fill */ - " shr $1,%%ecx\n" - " rep stosl\n" /* The actual fill */ - " test $0x01, %%ebx\n" /* One left to do at the right side? */ - " jz .FL2\n" - " stosw\n" - ".FL2:\n" + "cld\n\t" + "mov %1,%%ebx\n\t" + "mov %2,%%edi\n\t" + "test $0x03, %%edi\n\t" /* Align to fullword boundary */ + "jz 1f\n\t" + "stosw\n\t" + "dec %%ebx\n\t" + "jz 2f\n" + "1:\n\t" + "mov %%ebx,%%ecx\n\t" /* Setup count of fullwords to fill */ + "shr $1,%%ecx\n\t" + "rep stosl\n\t" /* The actual fill */ + "test $0x01, %%ebx\n\t" /* One left to do at the right side? */ + "jz 2f\n\t" + "stosw\n" + "2:" : - : "a" (color), "r" (width), "m" (pos) + : "a" (color), "r" (width), "m" (pos) : "%ecx", "%ebx", "%edi"); pos =(PULONG)((ULONG_PTR)pos + delta); } diff --git a/reactos/subsystems/win32/win32k/dib/dib24bpp.c b/reactos/subsystems/win32/win32k/dib/dib24bpp.c index 2da1d119712..c4c532c0c89 100644 --- a/reactos/subsystems/win32/win32k/dib/dib24bpp.c +++ b/reactos/subsystems/win32/win32k/dib/dib24bpp.c @@ -344,37 +344,37 @@ DIB_24BPP_ColorFill(SURFOBJ* DestSurface, RECTL* DestRect, ULONG color) * So, taking endianness into account again, we need to fill with these * ULONGs: CABC BCAB ABCA */ - /* This is about 30% faster than the generic C code below */ - __asm__ __volatile__ ( -" movl %1, %%ecx\n" -" andl $0xffffff, %%ecx\n" /* 0ABC */ -" movl %%ecx, %%ebx\n" /* Construct BCAB in ebx */ -" shrl $8, %%ebx\n" -" movl %%ecx, %%eax\n" -" shll $16, %%eax\n" -" orl %%eax, %%ebx\n" -" movl %%ecx, %%edx\n" /* Construct ABCA in edx */ -" shll $8, %%edx\n" -" movl %%ecx, %%eax\n" -" shrl $16, %%eax\n" -" orl %%eax, %%edx\n" -" movl %%ecx, %%eax\n" /* Construct CABC in eax */ -" shll $24, %%eax\n" -" orl %%ecx, %%eax\n" -" movl %2, %%ecx\n" /* Load count */ -" shr $2, %%ecx\n" -" movl %3, %%edi\n" /* Load dest */ -".FL1:\n" -" movl %%eax, (%%edi)\n" /* Store 4 pixels, 12 bytes */ -" movl %%ebx, 4(%%edi)\n" -" movl %%edx, 8(%%edi)\n" -" addl $12, %%edi\n" -" dec %%ecx\n" -" jnz .FL1\n" -" movl %%edi, %0\n" - : "=m"(addr) - : "m"(color), "m"(Count), "m"(addr) - : "%eax", "%ebx", "%ecx", "%edx", "%edi"); + /* This is about 30% faster than the generic C code below */ + __asm__ __volatile__ ( + "movl %1, %%ecx\n\t" + "andl $0xffffff, %%ecx\n\t" /* 0ABC */ + "movl %%ecx, %%ebx\n\t" /* Construct BCAB in ebx */ + "shrl $8, %%ebx\n\t" + "movl %%ecx, %%eax\n\t" + "shll $16, %%eax\n\t" + "orl %%eax, %%ebx\n\t" + "movl %%ecx, %%edx\n\t" /* Construct ABCA in edx */ + "shll $8, %%edx\n\t" + "movl %%ecx, %%eax\n\t" + "shrl $16, %%eax\n\t" + "orl %%eax, %%edx\n\t" + "movl %%ecx, %%eax\n\t" /* Construct CABC in eax */ + "shll $24, %%eax\n\t" + "orl %%ecx, %%eax\n\t" + "movl %2, %%ecx\n\t" /* Load count */ + "shr $2, %%ecx\n\t" + "movl %3, %%edi\n" /* Load dest */ + "1:\n\t" + "movl %%eax, (%%edi)\n\t" /* Store 4 pixels, 12 bytes */ + "movl %%ebx, 4(%%edi)\n\t" + "movl %%edx, 8(%%edi)\n\t" + "addl $12, %%edi\n\t" + "dec %%ecx\n\t" + "jnz 1b\n\t" + "movl %%edi, %0" + : "=m"(addr) + : "m"(color), "m"(Count), "m"(addr) + : "%eax", "%ebx", "%ecx", "%edx", "%edi"); Count = Count & 0x03; while (0 != Count--) {