Align the FAT FS buffers so DMA on various systems can directly pick them. Signed-off-by: Marek Vasut <ma...@denx.de> --- fs/fat/fat.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 1f95eb4..d709e59 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -31,6 +31,7 @@ #include <fat.h> #include <asm/byteorder.h> #include <part.h> +#include <malloc.h> /* * Convert a string to lowercase. @@ -62,7 +63,7 @@ static int disk_read(__u32 block, __u32 nr_blocks, void *buf) int fat_register_device (block_dev_desc_t * dev_desc, int part_no) { - unsigned char buffer[dev_desc->blksz]; + ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buffer, dev_desc->blksz); /* First close any currently found FAT filesystem */ cur_dev = NULL; @@ -293,9 +294,10 @@ get_cluster (fsdata *mydata, __u32 clustnum, __u8 *buffer, return -1; } if (size % mydata->sect_size) { - __u8 tmpbuf[mydata->sect_size]; + ALLOC_CACHE_ALIGN_BUFFER(unsigned char, tmpbuf, mydata->sect_size); idx = size / mydata->sect_size; + ret = disk_read(startsect + idx, 1, tmpbuf); if (ret != 1) { debug("Error reading data (got %d)\n", ret); @@ -709,7 +711,7 @@ read_bootsectandvi (boot_sector *bs, volume_info *volinfo, int *fatsize) return -1; } - block = malloc(cur_dev->blksz); + block = memalign(ARCH_DMA_MINALIGN, cur_dev->blksz); if (block == NULL) { debug("Error: allocating block\n"); return -1; @@ -765,9 +767,6 @@ exit: return ret; } -__attribute__ ((__aligned__ (__alignof__ (dir_entry)))) -__u8 do_fat_read_block[MAX_CLUSTSIZE]; - long do_fat_read (const char *filename, void *buffer, unsigned long maxsize, int dols) @@ -788,6 +787,7 @@ do_fat_read (const char *filename, void *buffer, unsigned long maxsize, __u32 root_cluster = 0; int rootdir_size = 0; int j; + uint8_t do_fat_read_block[MAX_CLUSTSIZE] __attribute__((aligned(32))); if (read_bootsectandvi(&bs, &volinfo, &mydata->fatsize)) { debug("Error: reading boot sector\n"); -- 1.7.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot