Misalignment of local SSE variables in thread function
Andrew Haley
aph@gcc.gnu.org
Thu Jan 18 16:11:00 GMT 2007
Brian Dessent writes:
> Jonathan Kinsey wrote:
>
> > Thanks for the link, unfortunately it doesn't work _beginthread just
> > calls _beginthreadex - unless there is a alignment argument I didn't see
> > (I tried it anyway and no luck).
> >
> > If you read the end of the post at the link it says that it doesn't fix
> > a SSE problem that someone was having - at least I'm not on my own...
>
> I did read that but I hoped it was someone having unrelated problems. I
> guess it's not.
>
> So, neither CreateThread nor MSVCRT align the stack, so I guess you'll
> have to do it yourself. You should be able to do this with something
> like:
>
> asm __volatile__ ("andl $-16, %%esp" : : : "%esp");
>
> at the beginning of your thread function.
Ouch. I don't think that would work.
> You could probably do this in a wrapper-function that calls your
> actual thread function too.
That sounds like a much better idea, although it may well also be
problematic.
A pure assembly function that did the adjustment and called your
actual thread function would be the best idea.
Andrew.
More information about the Gcc-help
mailing list