diff options
author | Manish V Badarkhe <Manish.Badarkhe@arm.com> | 2021-06-16 19:59:41 +0100 |
---|---|---|
committer | Manish V Badarkhe <Manish.Badarkhe@arm.com> | 2021-07-06 16:32:38 +0100 |
commit | aa79421c16b98aad5920410d7658039dfa16c345 (patch) | |
tree | 21b3427e51b6d9787512d886f6566adfda5f806e | |
parent | 79d8be3c143d6d7edd1da04dd05d246e194adea1 (diff) | |
download | trusted-firmware-a-aa79421c16b98aad5920410d7658039dfa16c345.tar.gz |
refactor(plat/arm): use mmio* functions to read/write NVFLAGS registers
Used mmio* functions to read/write NVFLAGS registers to avoid
possibile reordering of instructions by compiler.
Change-Id: Iae50ac30e5413259cf8554f0fff47512ad83b0fd
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
-rw-r--r-- | plat/arm/board/juno/juno_bl1_setup.c | 16 | ||||
-rw-r--r-- | plat/arm/board/juno/juno_err.c | 6 |
2 files changed, 9 insertions, 13 deletions
diff --git a/plat/arm/board/juno/juno_bl1_setup.c b/plat/arm/board/juno/juno_bl1_setup.c index 2234055d41..a9d5cc37fa 100644 --- a/plat/arm/board/juno/juno_bl1_setup.c +++ b/plat/arm/board/juno/juno_bl1_setup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2021, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -62,11 +62,11 @@ static int is_watchdog_reset(void) ******************************************************************************/ bool plat_arm_bl1_fwu_needed(void) { - const int32_t *nv_flags_ptr = (const int32_t *)V2M_SYS_NVFLAGS_ADDR; + int32_t nv_flags = (int32_t)mmio_read_32(V2M_SYS_NVFLAGS_ADDR); /* Check if TOC is invalid or watchdog reset happened. */ - return (!arm_io_is_toc_valid() || (((*nv_flags_ptr == -EAUTH) || - (*nv_flags_ptr == -ENOENT)) && is_watchdog_reset())); + return (!arm_io_is_toc_valid() || (((nv_flags == -EAUTH) || + (nv_flags == -ENOENT)) && is_watchdog_reset())); } /******************************************************************************* @@ -86,13 +86,11 @@ void bl1_plat_set_ep_info(unsigned int image_id, ******************************************************************************/ __dead2 void bl1_plat_fwu_done(void *client_cookie, void *reserved) { - unsigned int *nv_flags_clr = (unsigned int *) - (V2M_SYSREGS_BASE + V2M_SYS_NVFLAGSCLR); - unsigned int *nv_flags_ptr = (unsigned int *) - (V2M_SYSREGS_BASE + V2M_SYS_NVFLAGS); + uint32_t nv_flags = mmio_read_32(V2M_SYS_NVFLAGS_ADDR); /* Clear the NV flags register. */ - *nv_flags_clr = *nv_flags_ptr; + mmio_write_32((V2M_SYSREGS_BASE + V2M_SYS_NVFLAGSCLR), + nv_flags); /* Setup the watchdog to reset the system as soon as possible */ sp805_refresh(ARM_SP805_TWDG_BASE, 1U); diff --git a/plat/arm/board/juno/juno_err.c b/plat/arm/board/juno/juno_err.c index 60699cc732..02d751e9a5 100644 --- a/plat/arm/board/juno/juno_err.c +++ b/plat/arm/board/juno/juno_err.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2021, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -16,10 +16,8 @@ */ void __dead2 plat_arm_error_handler(int err) { - uint32_t *flags_ptr = (uint32_t *)V2M_SYS_NVFLAGS_ADDR; - /* Propagate the err code in the NV-flags register */ - *flags_ptr = err; + mmio_write_32(V2M_SYS_NVFLAGS_ADDR, (uint32_t)err); /* Setup the watchdog to reset the system as soon as possible */ sp805_refresh(ARM_SP805_TWDG_BASE, 1U); |