Fix issues with big-endian system
[lwext4.git] / src / ext4_bitmap.c
index 132003337733d4f21429d9b40ebdfbd667f92621..be37a5a559cd96d1c5efd864a78d45f76eac72f8 100644 (file)
  */
 
 #include "ext4_config.h"
-#include "ext4_bitmap.h"
-
+#include "ext4_types.h"
+#include "ext4_misc.h"
 #include "ext4_errno.h"
+#include "ext4_debug.h"
+
+#include "ext4_bitmap.h"
 
 void ext4_bmap_bits_free(uint8_t *bmap, uint32_t sbit, uint32_t bcnt)
 {
@@ -56,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;
@@ -69,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;
@@ -107,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;
@@ -124,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) {