diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | common/tf_log.c | 61 | ||||
-rw-r--r-- | common/tf_printf.c | 25 | ||||
-rw-r--r-- | docs/porting-guide.rst | 15 | ||||
-rw-r--r-- | include/common/debug.h | 27 | ||||
-rw-r--r-- | include/lib/aarch32/arch.h | 51 | ||||
-rw-r--r-- | include/lib/aarch64/arch.h | 49 | ||||
-rw-r--r-- | include/lib/xlat_tables/xlat_tables_defs.h | 8 | ||||
-rw-r--r-- | include/lib/xlat_tables/xlat_tables_v2.h | 7 | ||||
-rw-r--r-- | include/plat/common/platform.h | 1 | ||||
-rw-r--r-- | lib/xlat_tables_v2/xlat_tables_internal.c | 14 | ||||
-rw-r--r-- | plat/common/plat_log_common.c | 25 | ||||
-rw-r--r-- | plat/hisilicon/hikey/hikey_bl2_setup.c | 2 | ||||
-rw-r--r-- | plat/hisilicon/hikey/hikey_pm.c | 2 | ||||
-rw-r--r-- | plat/hisilicon/hikey/hisi_pwrc.c | 15 | ||||
-rw-r--r-- | plat/hisilicon/hikey/include/hisi_pwrc.h | 2 | ||||
-rw-r--r-- | plat/hisilicon/hikey/include/platform_def.h | 7 | ||||
-rw-r--r-- | plat/hisilicon/hikey960/hikey960_bl2_setup.c | 2 | ||||
-rw-r--r-- | plat/hisilicon/hikey960/include/platform_def.h | 7 | ||||
-rw-r--r-- | plat/xilinx/zynqmp/pm_service/pm_api_sys.h | 4 | ||||
-rw-r--r-- | tools/cert_create/Makefile | 1 |
21 files changed, 292 insertions, 35 deletions
@@ -162,11 +162,13 @@ include lib/compiler-rt/compiler-rt.mk include lib/stdlib/stdlib.mk BL_COMMON_SOURCES += common/bl_common.c \ + common/tf_log.c \ common/tf_printf.c \ common/tf_snprintf.c \ common/${ARCH}/debug.S \ lib/${ARCH}/cache_helpers.S \ lib/${ARCH}/misc_helpers.S \ + plat/common/plat_log_common.c \ plat/common/${ARCH}/plat_common.c \ plat/common/${ARCH}/platform_helpers.S \ ${COMPILER_RT_SRCS} \ diff --git a/common/tf_log.c b/common/tf_log.c new file mode 100644 index 00000000..54c0a436 --- /dev/null +++ b/common/tf_log.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <assert.h> +#include <debug.h> +#include <platform.h> + +/* Set the default maximum log level to the `LOG_LEVEL` build flag */ +static unsigned int max_log_level = LOG_LEVEL; + +/* + * The common log function which is invoked by ARM Trusted Firmware code. + * This function should not be directly invoked and is meant to be + * only used by the log macros defined in debug.h. The function + * expects the first character in the format string to be one of the + * LOG_MARKER_* macros defined in debug.h. + */ +void tf_log(const char *fmt, ...) +{ + unsigned int log_level; + va_list args; + const char *prefix_str; + + /* We expect the LOG_MARKER_* macro as the first character */ + log_level = fmt[0]; + + /* Verify that log_level is one of LOG_MARKER_* macro defined in debug.h */ + assert(log_level && log_level <= LOG_LEVEL_VERBOSE); + assert(log_level % 10 == 0); + + if (log_level > max_log_level) + return; + + prefix_str = plat_log_get_prefix(log_level); + + if (prefix_str != NULL) + tf_string_print(prefix_str); + + va_start(args, fmt); + tf_vprintf(fmt+1, args); + va_end(args); +} + +/* + * The helper function to set the log level dynamically by platform. The + * maximum log level is determined by `LOG_LEVEL` build flag at compile time + * and this helper can set a lower log level than the one at compile. + */ +void tf_log_set_max_level(unsigned int log_level) +{ + assert(log_level <= LOG_LEVEL_VERBOSE); + assert((log_level % 10) == 0); + + /* Cap log_level to the compile time maximum. */ + if (log_level < LOG_LEVEL) + max_log_level = log_level; + +} diff --git a/common/tf_printf.c b/common/tf_printf.c index c18e2f99..f73842ac 100644 --- a/common/tf_printf.c +++ b/common/tf_printf.c @@ -23,8 +23,10 @@ (((lcount) > 1) ? va_arg(args, unsigned long long int) : \ ((lcount) ? va_arg(args, unsigned long int) : va_arg(args, unsigned int))) -static void string_print(const char *str) +void tf_string_print(const char *str) { + assert(str); + while (*str) putchar(*str++); } @@ -64,15 +66,13 @@ static void unsigned_num_print(unsigned long long int unum, unsigned int radix) * The print exits on all other formats specifiers other than valid * combinations of the above specifiers. *******************************************************************/ -void tf_printf(const char *fmt, ...) +void tf_vprintf(const char *fmt, va_list args) { - va_list args; int l_count; long long int num; unsigned long long int unum; char *str; - va_start(args, fmt); while (*fmt) { l_count = 0; @@ -94,12 +94,12 @@ loop: break; case 's': str = va_arg(args, char *); - string_print(str); + tf_string_print(str); break; case 'p': unum = (uintptr_t)va_arg(args, void *); if (unum) - string_print("0x"); + tf_string_print("0x"); unsigned_num_print(unum, 16); break; @@ -123,13 +123,20 @@ loop: break; default: /* Exit on any other format specifier */ - goto exit; + return; } fmt++; continue; } putchar(*fmt++); } -exit: - va_end(args); +} + +void tf_printf(const char *fmt, ...) +{ + va_list va; + + va_start(va, fmt); + tf_vprintf(fmt, va); + va_end(va); } diff --git a/docs/porting-guide.rst b/docs/porting-guide.rst index c8d61ed1..97985666 100644 --- a/docs/porting-guide.rst +++ b/docs/porting-guide.rst @@ -1014,6 +1014,21 @@ This function flushes to main memory all the image params that are passed to next image. This function is currently invoked in BL2 to flush this information to the next BL image, when LOAD\_IMAGE\_V2 is enabled. +Function : plat\_log\_get\_prefix() +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:: + + Argument : unsigned int + Return : const char * + +This function defines the prefix string corresponding to the `log_level` to be +prepended to all the log output from ARM Trusted Firmware. The `log_level` +(argument) will correspond to one of the standard log levels defined in +debug.h. The platform can override the common implementation to define a +different prefix string for the log output. The implementation should be +robust to future changes that increase the number of log levels. + Modifications specific to a Boot Loader stage --------------------------------------------- diff --git a/include/common/debug.h b/include/common/debug.h index 814cf840..3f0f84a1 100644 --- a/include/common/debug.h +++ b/include/common/debug.h @@ -24,47 +24,62 @@ #define LOG_LEVEL_VERBOSE 50 #ifndef __ASSEMBLY__ +#include <stdarg.h> #include <stdio.h> +/* + * Define Log Markers corresponding to each log level which will + * be embedded in the format string and is expected by tf_log() to determine + * the log level. + */ +#define LOG_MARKER_ERROR "\xa" /* 10 */ +#define LOG_MARKER_NOTICE "\x14" /* 20 */ +#define LOG_MARKER_WARNING "\x1e" /* 30 */ +#define LOG_MARKER_INFO "\x28" /* 40 */ +#define LOG_MARKER_VERBOSE "\x32" /* 50 */ + #if LOG_LEVEL >= LOG_LEVEL_NOTICE -# define NOTICE(...) tf_printf("NOTICE: " __VA_ARGS__) +# define NOTICE(...) tf_log(LOG_MARKER_NOTICE __VA_ARGS__) #else # define NOTICE(...) #endif #if LOG_LEVEL >= LOG_LEVEL_ERROR -# define ERROR(...) tf_printf("ERROR: " __VA_ARGS__) +# define ERROR(...) tf_log(LOG_MARKER_ERROR __VA_ARGS__) #else # define ERROR(...) #endif #if LOG_LEVEL >= LOG_LEVEL_WARNING -# define WARN(...) tf_printf("WARNING: " __VA_ARGS__) +# define WARN(...) tf_log(LOG_MARKER_WARNING __VA_ARGS__) #else # define WARN(...) #endif #if LOG_LEVEL >= LOG_LEVEL_INFO -# define INFO(...) tf_printf("INFO: " __VA_ARGS__) +# define INFO(...) tf_log(LOG_MARKER_INFO __VA_ARGS__) #else # define INFO(...) #endif #if LOG_LEVEL >= LOG_LEVEL_VERBOSE -# define VERBOSE(...) tf_printf("VERBOSE: " __VA_ARGS__) +# define VERBOSE(...) tf_log(LOG_MARKER_VERBOSE __VA_ARGS__) #else # define VERBOSE(...) #endif - void __dead2 do_panic(void); #define panic() do_panic() /* Function called when stack protection check code detects a corrupted stack */ void __dead2 __stack_chk_fail(void); +void tf_log(const char *fmt, ...) __printflike(1, 2); void tf_printf(const char *fmt, ...) __printflike(1, 2); int tf_snprintf(char *s, size_t n, const char *fmt, ...) __printflike(3, 4); +void tf_vprintf(const char *fmt, va_list args); +void tf_string_print(const char *str); +void tf_log_set_max_level(unsigned int log_level); #endif /* __ASSEMBLY__ */ #endif /* __DEBUG_H__ */ diff --git a/include/lib/aarch32/arch.h b/include/lib/aarch32/arch.h index 56163c8b..5fbb83a6 100644 --- a/include/lib/aarch32/arch.h +++ b/include/lib/aarch32/arch.h @@ -7,6 +7,8 @@ #ifndef __ARCH_H__ #define __ARCH_H__ +#include <utils_def.h> + /******************************************************************************* * MIDR bit definitions ******************************************************************************/ @@ -459,4 +461,53 @@ #define ICC_ASGI1R_EL1_64 p15, 1, c12 #define ICC_SGI0R_EL1_64 p15, 2, c12 +/******************************************************************************* + * Definitions of MAIR encodings for device and normal memory + ******************************************************************************/ +/* + * MAIR encodings for device memory attributes. + */ +#define MAIR_DEV_nGnRnE U(0x0) +#define MAIR_DEV_nGnRE U(0x4) +#define MAIR_DEV_nGRE U(0x8) +#define MAIR_DEV_GRE U(0xc) + +/* + * MAIR encodings for normal memory attributes. + * + * Cache Policy + * WT: Write Through + * WB: Write Back + * NC: Non-Cacheable + * + * Transient Hint + * NTR: Non-Transient + * TR: Transient + * + * Allocation Policy + * RA: Read Allocate + * WA: Write Allocate + * RWA: Read and Write Allocate + * NA: No Allocation + */ +#define MAIR_NORM_WT_TR_WA U(0x1) +#define MAIR_NORM_WT_TR_RA U(0x2) +#define MAIR_NORM_WT_TR_RWA U(0x3) +#define MAIR_NORM_NC U(0x4) +#define MAIR_NORM_WB_TR_WA U(0x5) +#define MAIR_NORM_WB_TR_RA U(0x6) +#define MAIR_NORM_WB_TR_RWA U(0x7) +#define MAIR_NORM_WT_NTR_NA U(0x8) +#define MAIR_NORM_WT_NTR_WA U(0x9) +#define MAIR_NORM_WT_NTR_RA U(0xa) +#define MAIR_NORM_WT_NTR_RWA U(0xb) +#define MAIR_NORM_WB_NTR_NA U(0xc) +#define MAIR_NORM_WB_NTR_WA U(0xd) +#define MAIR_NORM_WB_NTR_RA U(0xe) +#define MAIR_NORM_WB_NTR_RWA U(0xf) + +#define MAIR_NORM_OUTER_SHIFT 4 + +#define MAKE_MAIR_NORMAL_MEMORY(inner, outer) ((inner) | ((outer) << MAIR_NORM_OUTER_SHIFT)) + #endif /* __ARCH_H__ */ diff --git a/include/lib/aarch64/arch.h b/include/lib/aarch64/arch.h index 2adf7699..e38a5307 100644 --- a/include/lib/aarch64/arch.h +++ b/include/lib/aarch64/arch.h @@ -504,4 +504,53 @@ #define PMCR_EL0_N_MASK U(0x1f) #define PMCR_EL0_N_BITS (PMCR_EL0_N_MASK << PMCR_EL0_N_SHIFT) +/******************************************************************************* + * Definitions of MAIR encodings for device and normal memory + ******************************************************************************/ +/* + * MAIR encodings for device memory attributes. + */ +#define MAIR_DEV_nGnRnE ULL(0x0) +#define MAIR_DEV_nGnRE ULL(0x4) +#define MAIR_DEV_nGRE ULL(0x8) +#define MAIR_DEV_GRE ULL(0xc) + +/* + * MAIR encodings for normal memory attributes. + * + * Cache Policy + * WT: Write Through + * WB: Write Back + * NC: Non-Cacheable + * + * Transient Hint + * NTR: Non-Transient + * TR: Transient + * + * Allocation Policy + * RA: Read Allocate + * WA: Write Allocate + * RWA: Read and Write Allocate + * NA: No Allocation + */ +#define MAIR_NORM_WT_TR_WA ULL(0x1) +#define MAIR_NORM_WT_TR_RA ULL(0x2) +#define MAIR_NORM_WT_TR_RWA ULL(0x3) +#define MAIR_NORM_NC ULL(0x4) +#define MAIR_NORM_WB_TR_WA ULL(0x5) +#define MAIR_NORM_WB_TR_RA ULL(0x6) +#define MAIR_NORM_WB_TR_RWA ULL(0x7) +#define MAIR_NORM_WT_NTR_NA ULL(0x8) +#define MAIR_NORM_WT_NTR_WA ULL(0x9) +#define MAIR_NORM_WT_NTR_RA ULL(0xa) +#define MAIR_NORM_WT_NTR_RWA ULL(0xb) +#define MAIR_NORM_WB_NTR_NA ULL(0xc) +#define MAIR_NORM_WB_NTR_WA ULL(0xd) +#define MAIR_NORM_WB_NTR_RA ULL(0xe) +#define MAIR_NORM_WB_NTR_RWA ULL(0xf) + +#define MAIR_NORM_OUTER_SHIFT 4 + +#define MAKE_MAIR_NORMAL_MEMORY(inner, outer) ((inner) | ((outer) << MAIR_NORM_OUTER_SHIFT)) + #endif /* __ARCH_H__ */ diff --git a/include/lib/xlat_tables/xlat_tables_defs.h b/include/lib/xlat_tables/xlat_tables_defs.h index 008ae9bc..b0f5a04c 100644 --- a/include/lib/xlat_tables/xlat_tables_defs.h +++ b/include/lib/xlat_tables/xlat_tables_defs.h @@ -7,6 +7,7 @@ #ifndef __XLAT_TABLES_DEFS_H__ #define __XLAT_TABLES_DEFS_H__ +#include <arch.h> #include <utils_def.h> /* Miscellaneous MMU related constants */ @@ -96,12 +97,13 @@ #define ATTR_DEVICE_INDEX U(0x1) #define ATTR_IWBWA_OWBWA_NTR_INDEX U(0x0) #define LOWER_ATTRS(x) (((x) & U(0xfff)) << 2) + /* Normal Memory, Outer Write-Through non-transient, Inner Non-cacheable */ -#define ATTR_NON_CACHEABLE U(0x44) +#define ATTR_NON_CACHEABLE MAKE_MAIR_NORMAL_MEMORY(MAIR_NORM_NC, MAIR_NORM_NC) /* Device-nGnRE */ -#define ATTR_DEVICE U(0x4) +#define ATTR_DEVICE MAIR_DEV_nGnRE /* Normal Memory, Outer Write-Back non-transient, Inner Write-Back non-transient */ -#define ATTR_IWBWA_OWBWA_NTR U(0xff) +#define ATTR_IWBWA_OWBWA_NTR MAKE_MAIR_NORMAL_MEMORY(MAIR_NORM_WB_NTR_RWA, MAIR_NORM_WB_NTR_RWA) #define MAIR_ATTR_SET(attr, index) ((attr) << ((index) << 3)) #define ATTR_INDEX_MASK U(0x3) #define ATTR_INDEX_GET(attr) (((attr) >> 2) & ATTR_INDEX_MASK) diff --git a/include/lib/xlat_tables/xlat_tables_v2.h b/include/lib/xlat_tables/xlat_tables_v2.h index 288a8e0b..2be43296 100644 --- a/include/lib/xlat_tables/xlat_tables_v2.h +++ b/include/lib/xlat_tables/xlat_tables_v2.h @@ -23,7 +23,12 @@ /* Helper macro to define entries for mmap_region_t. It allows to * re-map address mappings from 'pa' to 'va' for each region. */ -#define MAP_REGION(pa, va, sz, attr) {(pa), (va), (sz), (attr)} +#define MAP_REGION(_pa, _va, _sz, _attr) ((mmap_region_t){ \ + .base_pa = (_pa), \ + .base_va = (_va), \ + .size = (_sz), \ + .attr = (_attr), \ + }) /* * Shifts and masks to access fields of an mmap_attr_t diff --git a/include/plat/common/platform.h b/include/plat/common/platform.h index bd721bba..e189f648 100644 --- a/include/plat/common/platform.h +++ b/include/plat/common/platform.h @@ -79,6 +79,7 @@ int plat_crash_console_putc(int c); int plat_crash_console_flush(void); void plat_error_handler(int err) __dead2; void plat_panic_handler(void) __dead2; +const char *plat_log_get_prefix(unsigned int log_level); /******************************************************************************* * Mandatory BL1 functions diff --git a/lib/xlat_tables_v2/xlat_tables_internal.c b/lib/xlat_tables_v2/xlat_tables_internal.c index ce44e736..47929906 100644 --- a/lib/xlat_tables_v2/xlat_tables_internal.c +++ b/lib/xlat_tables_v2/xlat_tables_internal.c @@ -767,12 +767,7 @@ void mmap_add_region(unsigned long long base_pa, size_t size, mmap_attr_t attr) { - mmap_region_t mm = { - .base_va = base_va, - .base_pa = base_pa, - .size = size, - .attr = attr, - }; + mmap_region_t mm = MAP_REGION(base_pa, base_va, size, attr); mmap_add_region_ctx(&tf_xlat_ctx, &mm); } @@ -887,12 +882,7 @@ int mmap_add_dynamic_region_ctx(xlat_ctx_t *ctx, mmap_region_t *mm) int mmap_add_dynamic_region(unsigned long long base_pa, uintptr_t base_va, size_t size, mmap_attr_t attr) { - mmap_region_t mm = { - .base_va = base_va, - .base_pa = base_pa, - .size = size, - .attr = attr, - }; + mmap_region_t mm = MAP_REGION(base_pa, base_va, size, attr); return mmap_add_dynamic_region_ctx(&tf_xlat_ctx, &mm); } diff --git a/plat/common/plat_log_common.c b/plat/common/plat_log_common.c new file mode 100644 index 00000000..30dcb121 --- /dev/null +++ b/plat/common/plat_log_common.c @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <assert.h> +#include <debug.h> +#include <platform.h> + +/* Allow platforms to override the log prefix string */ +#pragma weak plat_log_get_prefix + +static const char *prefix_str[] = { + "ERROR: ", "NOTICE: ", "WARNING: ", "INFO: ", "VERBOSE: "}; + +const char *plat_log_get_prefix(unsigned int log_level) +{ + if (log_level < LOG_LEVEL_ERROR) + log_level = LOG_LEVEL_ERROR; + else if (log_level > LOG_LEVEL_VERBOSE) + log_level = LOG_LEVEL_VERBOSE; + + return prefix_str[(log_level/10) - 1]; +} diff --git a/plat/hisilicon/hikey/hikey_bl2_setup.c b/plat/hisilicon/hikey/hikey_bl2_setup.c index 968da9bd..86c205d3 100644 --- a/plat/hisilicon/hikey/hikey_bl2_setup.c +++ b/plat/hisilicon/hikey/hikey_bl2_setup.c @@ -244,7 +244,7 @@ bl31_params_t *bl2_plat_get_bl31_params(void) VERSION_1, 0); /* Fill BL3-2 related information if it exists */ -#if BL32_BASE +#ifdef BL32_BASE bl2_to_bl31_params->bl32_ep_info = &bl31_params_mem.bl32_ep_info; SET_PARAM_HEAD(bl2_to_bl31_params->bl32_ep_info, PARAM_EP, VERSION_1, 0); diff --git a/plat/hisilicon/hikey/hikey_pm.c b/plat/hisilicon/hikey/hikey_pm.c index c796e8a5..d4dd683e 100644 --- a/plat/hisilicon/hikey/hikey_pm.c +++ b/plat/hisilicon/hikey/hikey_pm.c @@ -40,7 +40,9 @@ static int hikey_pwr_domain_on(u_register_t mpidr) hisi_ipc_cluster_on(cpu, cluster); hisi_pwrc_set_core_bx_addr(cpu, cluster, hikey_sec_entrypoint); + hisi_pwrc_enable_debug(cpu, cluster); hisi_ipc_cpu_on(cpu, cluster); + return 0; } diff --git a/plat/hisilicon/hikey/hisi_pwrc.c b/plat/hisilicon/hikey/hisi_pwrc.c index 8e9d1fc4..b635fb16 100644 --- a/plat/hisilicon/hikey/hisi_pwrc.c +++ b/plat/hisilicon/hikey/hisi_pwrc.c @@ -51,6 +51,21 @@ void hisi_pwrc_set_cluster_wfi(unsigned int cluster) } } +void hisi_pwrc_enable_debug(unsigned int core, unsigned int cluster) +{ + unsigned int val, enable; + + enable = 1U << (core + PDBGUP_CLUSTER1_SHIFT * cluster); + + /* Enable debug module */ + val = mmio_read_32(ACPU_SC_PDBGUP_MBIST); + mmio_write_32(ACPU_SC_PDBGUP_MBIST, val | enable); + do { + /* RAW barrier */ + val = mmio_read_32(ACPU_SC_PDBGUP_MBIST); + } while (!(val & enable)); +} + int hisi_pwrc_setup(void) { unsigned int reg, sec_entrypoint; diff --git a/plat/hisilicon/hikey/include/hisi_pwrc.h b/plat/hisilicon/hikey/include/hisi_pwrc.h index 3a87e72b..cffe70e3 100644 --- a/plat/hisilicon/hikey/include/hisi_pwrc.h +++ b/plat/hisilicon/hikey/include/hisi_pwrc.h @@ -13,6 +13,8 @@ void hisi_pwrc_set_cluster_wfi(unsigned int id); void hisi_pwrc_set_core_bx_addr(unsigned int core, unsigned int cluster, uintptr_t entry_point); +void hisi_pwrc_enable_debug(unsigned int core, + unsigned int cluster); int hisi_pwrc_setup(void); #endif /*__ASSEMBLY__*/ diff --git a/plat/hisilicon/hikey/include/platform_def.h b/plat/hisilicon/hikey/include/platform_def.h index 0c736ab1..01806542 100644 --- a/plat/hisilicon/hikey/include/platform_def.h +++ b/plat/hisilicon/hikey/include/platform_def.h @@ -135,6 +135,13 @@ #error "Currently unsupported HIKEY_TSP_LOCATION_ID value" #endif +/* BL32 is mandatory in AArch32 */ +#ifndef AARCH32 +#ifdef SPD_none +#undef BL32_BASE +#endif /* SPD_none */ +#endif + #define NS_BL1U_BASE (BL2_BASE) #define NS_BL1U_SIZE (0x00010000) #define NS_BL1U_LIMIT (NS_BL1U_BASE + NS_BL1U_SIZE) diff --git a/plat/hisilicon/hikey960/hikey960_bl2_setup.c b/plat/hisilicon/hikey960/hikey960_bl2_setup.c index b8d7f9e9..b50ed87f 100644 --- a/plat/hisilicon/hikey960/hikey960_bl2_setup.c +++ b/plat/hisilicon/hikey960/hikey960_bl2_setup.c @@ -91,7 +91,7 @@ bl31_params_t *bl2_plat_get_bl31_params(void) VERSION_1, 0); /* Fill BL3-2 related information if it exists */ -#if BL32_BASE +#ifdef BL32_BASE bl2_to_bl31_params->bl32_ep_info = &bl31_params_mem.bl32_ep_info; SET_PARAM_HEAD(bl2_to_bl31_params->bl32_ep_info, PARAM_EP, VERSION_1, 0); diff --git a/plat/hisilicon/hikey960/include/platform_def.h b/plat/hisilicon/hikey960/include/platform_def.h index 2fae666b..202952c5 100644 --- a/plat/hisilicon/hikey960/include/platform_def.h +++ b/plat/hisilicon/hikey960/include/platform_def.h @@ -94,6 +94,13 @@ #error "Currently unsupported HIKEY960_TSP_LOCATION_ID value" #endif +/* BL32 is mandatory in AArch32 */ +#ifndef AARCH32 +#ifdef SPD_none +#undef BL32_BASE +#endif /* SPD_none */ +#endif + #define NS_BL1U_BASE (BL31_LIMIT) /* 1AC9_8000 */ #define NS_BL1U_SIZE (0x00100000) #define NS_BL1U_LIMIT (NS_BL1U_BASE + NS_BL1U_SIZE) diff --git a/plat/xilinx/zynqmp/pm_service/pm_api_sys.h b/plat/xilinx/zynqmp/pm_service/pm_api_sys.h index b533345b..af7b2523 100644 --- a/plat/xilinx/zynqmp/pm_service/pm_api_sys.h +++ b/plat/xilinx/zynqmp/pm_service/pm_api_sys.h @@ -85,8 +85,8 @@ enum pm_ret_status pm_mmio_write(uintptr_t address, unsigned int mask, unsigned int value); enum pm_ret_status pm_mmio_read(uintptr_t address, unsigned int *value); -enum pm_ret_status pm_fpga_load(uint32_t address_high, - uint32_t address_low, +enum pm_ret_status pm_fpga_load(uint32_t address_low, + uint32_t address_high, uint32_t size, uint32_t flags); enum pm_ret_status pm_fpga_get_status(unsigned int *value); diff --git a/tools/cert_create/Makefile b/tools/cert_create/Makefile index eae76dfb..437b6927 100644 --- a/tools/cert_create/Makefile +++ b/tools/cert_create/Makefile @@ -10,6 +10,7 @@ V ?= 0 DEBUG := 0 BINARY := ${PROJECT}${BIN_EXT} OPENSSL_DIR := /usr +USE_TBBR_DEFS := 1 OBJECTS := src/cert.o \ src/cmd_opt.o \ |