diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/aarch64/debug.S | 15 | ||||
-rw-r--r-- | common/bl_common.c | 15 | ||||
-rw-r--r-- | common/tf_printf.c | 9 |
3 files changed, 26 insertions, 13 deletions
diff --git a/common/aarch64/debug.S b/common/aarch64/debug.S index b3caafb9..d3538792 100644 --- a/common/aarch64/debug.S +++ b/common/aarch64/debug.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -120,7 +120,7 @@ endfunc asm_print_str /* * This function prints a hexadecimal number in x4. * In: x4 = the hexadecimal to print. - * Clobber: x30, x0, x5, x1, x2, x3 + * Clobber: x30, x0 - x3, x5 */ func asm_print_hex mov x3, x30 @@ -178,7 +178,7 @@ el3_panic: mov x6, x30 bl plat_crash_console_init /* Check if the console is initialized */ - cbz x0, _panic_loop + cbz x0, _panic_handler /* The console is initialized */ adr x4, panic_msg bl asm_print_str @@ -186,7 +186,10 @@ el3_panic: /* The panic location is lr -4 */ sub x4, x4, #4 bl asm_print_hex -_panic_loop: - b _panic_loop -endfunc do_panic +_panic_handler: + /* Pass to plat_panic_handler the address from where el3_panic was + * called, not the address of the call from el3_panic. */ + mov x30,x6 + b plat_panic_handler +endfunc do_panic diff --git a/common/bl_common.c b/common/bl_common.c index 0eeef83f..d5b095aa 100644 --- a/common/bl_common.c +++ b/common/bl_common.c @@ -229,7 +229,8 @@ int load_image(meminfo_t *mem_layout, return io_result; } - INFO("Loading image id=%u at address 0x%lx\n", image_id, image_base); + INFO("Loading image id=%u at address %p\n", image_id, + (void *) image_base); /* Find the size of the image */ io_result = io_size(image_handle, &image_size); @@ -242,8 +243,8 @@ int load_image(meminfo_t *mem_layout, /* Check that the memory where the image will be loaded is free */ if (!is_mem_free(mem_layout->free_base, mem_layout->free_size, image_base, image_size)) { - WARN("Failed to reserve memory: 0x%lx - 0x%lx\n", - image_base, image_base + image_size); + WARN("Failed to reserve memory: %p - %p\n", (void *) image_base, + (void *) (image_base + image_size)); dump_load_info(image_base, image_size, mem_layout); io_result = -ENOMEM; goto exit; @@ -268,8 +269,8 @@ int load_image(meminfo_t *mem_layout, reserve_mem(&mem_layout->free_base, &mem_layout->free_size, image_base, image_size); } else { - INFO("Skip reserving memory: 0x%lx - 0x%lx\n", - image_base, image_base + image_size); + INFO("Skip reserving memory: %p - %p\n", (void *) image_base, + (void *) (image_base + image_size)); } image_data->image_base = image_base; @@ -284,8 +285,8 @@ int load_image(meminfo_t *mem_layout, */ flush_dcache_range(image_base, image_size); - INFO("Image id=%u loaded: 0x%lx - 0x%lx\n", image_id, image_base, - image_base + image_size); + INFO("Image id=%u loaded: %p - %p\n", image_id, (void *) image_base, + (void *) (image_base + image_size)); exit: io_close(image_handle); diff --git a/common/tf_printf.c b/common/tf_printf.c index c68b9904..c1d41889 100644 --- a/common/tf_printf.c +++ b/common/tf_printf.c @@ -68,6 +68,7 @@ static void string_print(const char *str) * %u - unsigned 32 bit decimal format * %ld and %lld - signed 64 bit decimal format * %lu and %llu - unsigned 64 bit decimal format + * %p - pointer format * Exits on all other formats. *******************************************************************/ @@ -107,6 +108,14 @@ loop: str = va_arg(args, char *); string_print(str); break; + case 'p': + unum = (uint64_t)va_arg(args, void *); + + if (unum) + string_print("0x"); + + unsigned_num_print(unum, 16); + break; case 'x': if (bit64) unum = va_arg(args, uint64_t); |