From 0589b9280b623ef2dc2ec2c5c879b4d23cabddb9 Mon Sep 17 00:00:00 2001 From: gkostka Date: Fri, 1 Apr 2016 15:05:29 +0200 Subject: ext4_config: add CONFIG_UNALIGNED_ACCESS configuration switch On some targets unaligned 32/16 bit access will raise exeption. --- src/ext4_bitmap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ext4_bitmap.c b/src/ext4_bitmap.c index 807acb9..be37a5a 100644 --- a/src/ext4_bitmap.c +++ b/src/ext4_bitmap.c @@ -59,6 +59,7 @@ void ext4_bmap_bits_free(uint8_t *bmap, uint32_t sbit, uint32_t bcnt) sbit = i; bmap += (sbit >> 3); +#if CONFIG_UNALIGNED_ACCESS while (bcnt >= 32) { *(uint32_t *)bmap = 0; bmap += 4; @@ -72,6 +73,7 @@ void ext4_bmap_bits_free(uint8_t *bmap, uint32_t sbit, uint32_t bcnt) bcnt -= 16; sbit += 16; } +#endif while (bcnt >= 8) { *bmap = 0; @@ -110,6 +112,7 @@ int ext4_bmap_bit_find_clr(uint8_t *bmap, uint32_t sbit, uint32_t ebit, sbit = i; bmap += (sbit >> 3); +#if CONFIG_UNALIGNED_ACCESS while (bcnt >= 32) { if (*(uint32_t *)bmap != 0xFFFFFFFF) goto finish_it; @@ -127,8 +130,8 @@ int ext4_bmap_bit_find_clr(uint8_t *bmap, uint32_t sbit, uint32_t ebit, bcnt -= 16; sbit += 16; } - finish_it: +#endif while (bcnt >= 8) { if (*bmap != 0xFF) { for (i = 0; i < 8; ++i) { -- cgit v1.2.3