tools/kernel2minor: fix endian conversion issues, allow creating little-endian images
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
8782672b90
commit
476e77c3b7
1 changed files with 33 additions and 0 deletions
33
tools/kernel2minor/patches/110-fix_endian_conv.patch
Normal file
33
tools/kernel2minor/patches/110-fix_endian_conv.patch
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
--- a/k2m_biops.h
|
||||||
|
+++ b/k2m_biops.h
|
||||||
|
@@ -10,7 +10,9 @@
|
||||||
|
*/
|
||||||
|
|
||||||
|
//нужна ли конвертация. устанавливавется автоматически в 1 для НЕ big_endian систем
|
||||||
|
-static int endian_need_conv = __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__;
|
||||||
|
+static int big_endian;
|
||||||
|
+
|
||||||
|
+#define endian_need_conv (!!big_endian ^ (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__))
|
||||||
|
|
||||||
|
/* конвертор из одного байтового порядка в обратный
|
||||||
|
x обязательно должна быть переменной но не выражением !
|
||||||
|
--- a/kernel2minor.c
|
||||||
|
+++ b/kernel2minor.c
|
||||||
|
@@ -76,7 +76,7 @@ void print_help(void){
|
||||||
|
char *usage[] =
|
||||||
|
{ "-k", "Path to kernel file", kernel_file,
|
||||||
|
"-r", "Path to result file", res_file,
|
||||||
|
- "-e", "Enable endian convert", endian_need_conv ? "Yes" : "No",
|
||||||
|
+ "-e", "Enable endian convert to big-endian", big_endian ? "Yes" : "No",
|
||||||
|
"-c", "Use ECC", use_ecc ? "Yes" : "No",
|
||||||
|
"-s", "FLASH Unit(Chunk) size", chunk_size_str,
|
||||||
|
"-i", "Add image info block", add_image_info_block ? info_block_size_str : "No",
|
||||||
|
@@ -595,7 +595,7 @@ int main(int argc, char *argv[]){
|
||||||
|
case 'k': snprintf(kernel_file, sizeof(kernel_file) - 1, "%s", optarg); break;
|
||||||
|
case 'r': snprintf(res_file, sizeof(res_file) - 1, "%s", optarg); break;
|
||||||
|
case 'c': use_ecc = 1; break;
|
||||||
|
- case 'e': endian_need_conv = 1; break;
|
||||||
|
+ case 'e': big_endian = 1; break;
|
||||||
|
case 's': chunk_size = atoi(optarg); break;
|
||||||
|
case 'i': add_image_info_block = 1; align_size = atoi(optarg); break;
|
||||||
|
case 'p': strncpy(platform_name, optarg, sizeof(platform_name)); break;
|
Loading…
Reference in a new issue