Dear Piotr Wilczek,

In message <[email protected]> you wrote:
> When compressed image is loaded, it must be decompressed
> to an aligned address + 2 to avoid unaligned access exception
> on some ARM platforms.
...

> -     dst = malloc(CONFIG_SYS_VIDEO_LOGO_MAX_SIZE);
> +     dst = malloc(CONFIG_SYS_VIDEO_LOGO_MAX_SIZE + 0x04);

Why + 4?  This needs a comment.  And please write 4 as 4, and not as
0x4 when there is no good reason for it.

> +     /* align to 32-bit-aligned-address + 2 */
> +     if ((unsigned int)bmp % 0x04 != 0x02)
> +             bmp = (bmp_image_t *)((((unsigned int)dst + 0x2) & ~0x1) | 0x2);

This is difficult to read and inefficient.

If you want to do it manually, just write it as

        bmp = (bmp_image_t *)((((unsigned int)dst + 1) & ~3) + 2);

[Actually adding 3 to the "malloc()" size above would be sufficient
with this].

A more readable way but slightly less efficient way might be:

        u32_t n = (u32_t)dst;

        bmp = (bmp_image_t *)(ALIGN(n, 4) + 2);

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [email protected]
I've got to get something inside me. Some coffee  or  something.  And
then the world will somehow be better.
                                     - Terry Pratchett, _Men at Arms_
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to