“Corona688”:
Hm.
Working on Compaq iPaq, I’ve built a library for my own use that
autorotates all
images on load-time, and ‘overloads’ the SDL functions and the normal
SDL_Surface with #undefs and #define 's.
[…]
Email me if you want it in it’s current state.
Thank you very much, but I already decided to solve the problem in another
way,
using a scratch rotated surface for drawing and then blitting those surface
rotated back to screen.
It may seem a waste of memory, but it enough for me 
Here is my code, it may be useful for others, or maybe, somebody may suggest
improvement. 
I tested it only in 16 bpp. Sorry for the bad coding style :-/
/* Crate a new rotated surface for drawing */
SDL_Surface *CreateRotatedSurface(SDL_Surface *s)
{
return(SDL_CreateRGBSurface(s->flags, s->h, s->w,
s->format->BitsPerPixel,
s->format->Rmask,
s->format->Gmask,
s->format->Bmask,
s->format->Amask));
}
/* Used to copy the rotated scratch surface to the screen */
void BlitRotatedSurface(SDL_Surface *from, SDL_Surface *to)
{
int bpp = from->format->BytesPerPixel;
int w=from->w, h=from->h, pitch=to->pitch;
int i,j;
Uint8 *pfrom, *pto, *to0;
SDL_LockSurface(from);
SDL_LockSurface(to);
pfrom=(Uint8 *)from->pixels;
to0=(Uint8 *) to->pixels+pitch*(w-1);
for (i=0; i<h; i++)
{
to0+=bpp;
pto=to0;
for (j=0; j<w; j++)
{
if (bpp==1) *pto=*pfrom;
else if (bpp==2) *(Uint16 *)pto=*(Uint16 *)pfrom;
else if (bpp==4) *(Uint32 *)pto=*(Uint32 *)pfrom;
else if (bpp==3)
{
pto[0]=pfrom[0];
pto[1]=pfrom[1];
pto[2]=pfrom[2];
}
pfrom+=bpp;
pto-=pitch;
}
}
SDL_UnlockSurface(from);
SDL_UnlockSurface(to);
}
Usage example-------------
scratch=CreateRotatedSurface(screen);
/* draw operations on scratch surface */
BlitRotatedSurface(scratch, screen);
SDL_UpdateRect(screen, 0, 0, 0, 0);