mirror of
https://github.com/reactos/reactos.git
synced 2025-04-22 13:10:39 +00:00
Fix align 4 problem with color fill and hline.
Now OARCH=pentium2 working with 32bpp svn path=/trunk/; revision=15856
This commit is contained in:
parent
df3ceea77c
commit
1503cdc0b4
1 changed files with 44 additions and 6 deletions
|
@ -48,8 +48,27 @@ DIB_32BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c)
|
||||||
LONG cx = (x2 - x1) ;
|
LONG cx = (x2 - x1) ;
|
||||||
PBYTE byteaddr = SurfObj->pvScan0 + y * SurfObj->lDelta;
|
PBYTE byteaddr = SurfObj->pvScan0 + y * SurfObj->lDelta;
|
||||||
PDWORD addr = (PDWORD)byteaddr + x1;
|
PDWORD addr = (PDWORD)byteaddr + x1;
|
||||||
memset4(addr, c, cx);
|
|
||||||
|
|
||||||
|
__asm__(
|
||||||
|
" cld\n"
|
||||||
|
" mov %0, %%eax\n"
|
||||||
|
" test $0x03, %%edi\n" /* Align to fullword boundary */
|
||||||
|
" jnz .L1\n"
|
||||||
|
" mov %1,%%ecx\n" /* Setup count of fullwords to fill */
|
||||||
|
" rep stosl\n" /* The actual fill */
|
||||||
|
" jz .L2\n"
|
||||||
|
".L1:\n"
|
||||||
|
" mov %%eax, %%ecx\n"
|
||||||
|
" stosw\n"
|
||||||
|
" sub $0x04,%1\n"
|
||||||
|
" mov %1,%%ecx\n" /* Setup count of fullwords to fill */
|
||||||
|
" rep stosl\n" /* The actual fill */
|
||||||
|
" shr $0x08,%%eax\n"
|
||||||
|
" stosw\n"
|
||||||
|
".L2:\n"
|
||||||
|
: /* no output */
|
||||||
|
: "r"(c), "r"(cx), "D"(addr)
|
||||||
|
: "%eax", "%ecx");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -694,7 +713,26 @@ DIB_32BPP_ColorFill(SURFOBJ* DestSurface, RECTL* DestRect, ULONG color)
|
||||||
|
|
||||||
for (DestY = DestRect->top; DestY< DestRect->bottom; DestY++)
|
for (DestY = DestRect->top; DestY< DestRect->bottom; DestY++)
|
||||||
{
|
{
|
||||||
memset4( ((PDWORD)(pos)), color, width);
|
__asm__(
|
||||||
|
" cld\n"
|
||||||
|
" mov %0, %%eax\n"
|
||||||
|
" test $0x03, %%edi\n" /* Align to fullword boundary */
|
||||||
|
" jnz .FL1\n"
|
||||||
|
" mov %1,%%ecx\n" /* Setup count of fullwords to fill */
|
||||||
|
" rep stosl\n" /* The actual fill */
|
||||||
|
" jz .FL2\n"
|
||||||
|
".FL1:\n"
|
||||||
|
" mov %%eax, %%ecx\n"
|
||||||
|
" stosw\n"
|
||||||
|
" sub $0x04,%1\n"
|
||||||
|
" mov %1,%%ecx\n" /* Setup count of fullwords to fill */
|
||||||
|
" rep stosl\n" /* The actual fill */
|
||||||
|
" shr $0x08,%%eax\n"
|
||||||
|
" stosw\n"
|
||||||
|
".FL2:\n"
|
||||||
|
: /* no output */
|
||||||
|
: "r"(color), "r"(width), "D"(pos)
|
||||||
|
: "%eax", "%ecx");
|
||||||
pos =(PULONG)((ULONG_PTR)pos + delta);
|
pos =(PULONG)((ULONG_PTR)pos + delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue