Snap for 6844436 from 262c28b52f817309994f1f501556627e562eab50 to simpleperf-release Change-Id: I4fb8f6b9aa5fad8d874f8ffb0036cc3978414ba2
diff --git a/arch/x86/include/asm/zimage.h b/arch/x86/include/asm/zimage.h index 391adc0..43c8599 100644 --- a/arch/x86/include/asm/zimage.h +++ b/arch/x86/include/asm/zimage.h
@@ -22,7 +22,6 @@ #define COMMAND_LINE_MAGIC 0xA33F /* limits */ -#define BZIMAGE_MAX_SIZE 16*1024*1024 /* 15MB */ #define ZIMAGE_MAX_SIZE 512*1024 /* 512k */ #define SETUP_MAX_SIZE 32768
diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c index 588bc2f..b65c619 100644 --- a/arch/x86/lib/zimage.c +++ b/arch/x86/lib/zimage.c
@@ -220,14 +220,7 @@ SETUP_MAX_SIZE - setup_size); } - if (big_image) { - if (kernel_size > BZIMAGE_MAX_SIZE) { - printf("Error: bzImage kernel too big! " - "(size: %ld, max: %d)\n", - kernel_size, BZIMAGE_MAX_SIZE); - return 0; - } - } else if ((kernel_size) > ZIMAGE_MAX_SIZE) { + if (big_image == false && (kernel_size) > ZIMAGE_MAX_SIZE) { printf("Error: zImage kernel too big! (size: %ld, max: %d)\n", kernel_size, ZIMAGE_MAX_SIZE); return 0; @@ -366,6 +359,33 @@ } #ifdef CONFIG_ANDROID_BOOT_IMAGE +static char hex_to_char(uint8_t nibble) { + if (nibble < 10) { + return '0' + nibble; + } else { + return 'a' + nibble - 10; + } +} +// Helper function to convert 32bit int to a hex string +static void hex_to_str(char* str, ulong input) { + str[0] = '0'; str[1] = 'x'; + size_t str_idx = 2; + uint32_t byte_extracted; + uint8_t nibble; + // Assume that this is on a little endian system. + for(int byte_idx = 3; byte_idx >= 0; byte_idx--) { + byte_extracted = ((0xFF << (byte_idx*8)) & input) >> (byte_idx*8); + nibble = byte_extracted & 0xF0; + nibble = nibble >> 4; + nibble = nibble & 0xF; + str[str_idx] = hex_to_char(nibble); + str_idx++; + nibble = byte_extracted & 0xF; + str[str_idx] = hex_to_char(nibble); + str_idx++; + } + str[str_idx] = 0; +} int android_bootloader_boot_kernel(const struct andr_boot_info_t *boot_info) { ulong kernel_address; @@ -380,9 +400,9 @@ return -1; kernel_address = android_image_get_kload(boot_info); - sprintf(kernel_addr_str, "0x%lx", kernel_address); - sprintf(ramdisk_addr_str, "0x%lx", ramdisk_address); - sprintf(ramdisk_len_str, "0x%lx", ramdisk_len); + hex_to_str(kernel_addr_str, kernel_address); + hex_to_str(ramdisk_addr_str, ramdisk_address); + hex_to_str(ramdisk_len_str , ramdisk_len); printf("Booting kernel at %s with fdt at %s ramdisk %s (%s bytes)...\n\n\n", kernel_addr_str, env_get("fdtaddr"), ramdisk_addr_str, ramdisk_len_str);