*** cfi_flash.c.new 2004-02-23 15:54:51.000000000 -0800 --- cfi_flash.c 2004-03-03 13:08:15.610768328 -0800 *************** *** 724,741 **** --- 724,765 ---- */ static void flash_add_byte (flash_info_t * info, cfiword_t * cword, uchar c) { + #if defined(__LITTLE_ENDIAN) + unsigned short w; + unsigned int l; + unsigned long long ll; + #endif + switch (info->portwidth) { case FLASH_CFI_8BIT: cword->c = c; break; case FLASH_CFI_16BIT: + #if defined(__LITTLE_ENDIAN) + w = c; + w <<= 8; + cword->w = (cword->w >> 8) | w; + #else cword->w = (cword->w << 8) | c; + #endif break; case FLASH_CFI_32BIT: + #if defined(__LITTLE_ENDIAN) + l = c; + l <<= 24; + cword->l = (cword->l >> 8) | l; + #else cword->l = (cword->l << 8) | c; + #endif break; case FLASH_CFI_64BIT: + #if defined(__LITTLE_ENDIAN) + ll = c; + ll <<= 56; + cword->ll = (cword->ll >> 8) | ll; + #else cword->ll = (cword->ll << 8) | c; + #endif break; } }