110-fix_endian_conv.patch 1.6 KB

123456789101112131415161718192021222324252627282930313233
  1. --- a/k2m_biops.h
  2. +++ b/k2m_biops.h
  3. @@ -10,7 +10,9 @@
  4. */
  5. //нужна ли конвертация. устанавливавется автоматически в 1 для НЕ big_endian систем
  6. -static int endian_need_conv = __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__;
  7. +static int big_endian;
  8. +
  9. +#define endian_need_conv (!!big_endian ^ (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__))
  10. /* конвертор из одного байтового порядка в обратный
  11. x обязательно должна быть переменной но не выражением !
  12. --- a/kernel2minor.c
  13. +++ b/kernel2minor.c
  14. @@ -76,7 +76,7 @@ void print_help(void){
  15. char *usage[] =
  16. { "-k", "Path to kernel file", kernel_file,
  17. "-r", "Path to result file", res_file,
  18. - "-e", "Enable endian convert", endian_need_conv ? "Yes" : "No",
  19. + "-e", "Enable endian convert to big-endian", big_endian ? "Yes" : "No",
  20. "-c", "Use ECC", use_ecc ? "Yes" : "No",
  21. "-s", "FLASH Unit(Chunk) size", chunk_size_str,
  22. "-i", "Add image info block", add_image_info_block ? info_block_size_str : "No",
  23. @@ -595,7 +595,7 @@ int main(int argc, char *argv[]){
  24. case 'k': snprintf(kernel_file, sizeof(kernel_file) - 1, "%s", optarg); break;
  25. case 'r': snprintf(res_file, sizeof(res_file) - 1, "%s", optarg); break;
  26. case 'c': use_ecc = 1; break;
  27. - case 'e': endian_need_conv = 1; break;
  28. + case 'e': big_endian = 1; break;
  29. case 's': chunk_size = atoi(optarg); break;
  30. case 'i': add_image_info_block = 1; align_size = atoi(optarg); break;
  31. case 'p': strncpy(platform_name, optarg, sizeof(platform_name)); break;