Commit 4e0d14f2 authored by Soby Mathew's avatar Soby Mathew Committed by TrustedFirmware Code Review
Browse files

Merge "arm: gicv3: Fix compiler dependent behavior" into integration

parents 287a81df d0196911
/* /*
* Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -79,13 +79,11 @@ void zeromem(void *mem, u_register_t length); ...@@ -79,13 +79,11 @@ void zeromem(void *mem, u_register_t length);
* which is constant and does not depend on the execute address of the binary. * which is constant and does not depend on the execute address of the binary.
*/ */
#define DEFINE_LOAD_SYM_ADDR(_name) \ #define DEFINE_LOAD_SYM_ADDR(_name) \
static inline u_register_t load_addr_## _name(void) \ static inline u_register_t load_addr_## _name(void) \
{ \ { \
u_register_t v; \ u_register_t v; \
/* Create a void reference to silence compiler */ \ __asm__ volatile ("ldr %0, =" #_name : "=r" (v) : "X" (#_name));\
(void) _name; \ return v; \
__asm__ volatile ("ldr %0, =" #_name : "=r" (v)); \
return v; \
} }
/* Helper to invoke the function defined by DEFINE_LOAD_SYM_ADDR() */ /* Helper to invoke the function defined by DEFINE_LOAD_SYM_ADDR() */
......
...@@ -44,12 +44,11 @@ static const interrupt_prop_t arm_interrupt_props[] = { ...@@ -44,12 +44,11 @@ static const interrupt_prop_t arm_interrupt_props[] = {
/* /*
* We save and restore the GICv3 context on system suspend. Allocate the * We save and restore the GICv3 context on system suspend. Allocate the
* data in the designated EL3 Secure carve-out memory. The `volatile` * data in the designated EL3 Secure carve-out memory. The `used` attribute
* is used to prevent the compiler from removing the gicv3 contexts even * is used to prevent the compiler from removing the gicv3 contexts.
* though the DEFINE_LOAD_SYM_ADDR creates a dummy reference to it.
*/ */
static volatile gicv3_redist_ctx_t rdist_ctx __section("arm_el3_tzc_dram"); static gicv3_redist_ctx_t rdist_ctx __section("arm_el3_tzc_dram") __used;
static volatile gicv3_dist_ctx_t dist_ctx __section("arm_el3_tzc_dram"); static gicv3_dist_ctx_t dist_ctx __section("arm_el3_tzc_dram") __used;
/* Define accessor function to get reference to the GICv3 context */ /* Define accessor function to get reference to the GICv3 context */
DEFINE_LOAD_SYM_ADDR(rdist_ctx) DEFINE_LOAD_SYM_ADDR(rdist_ctx)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment