Hi,
I am using hypervisors to allow execution of EL3 code directly and had to deal with MMIO caused by instructions that have post-indexing parameters.
Xen community had to deal with this in 2022: https://www.mail-archive.com/xen-devel@lists.xenproject.org/msg113335.html
This does not cause any trouble and have implemented ways to deal with this expeditiously.
Yet, I wonder if it is desirable to from a synchronisation perspective?
Cheers
FF
Compiling TFA 2.10 for PLAT=a80x0_mcbin
The following line
https://elixir.bootlin.com/arm-trusted-firmware/v2.10.0/source/drivers/marv…
Is compiled as:
win_reg = mmio_read_32(AMB_WIN_CR_OFFSET(win_id));
4026d9c: f9470260 ldr x0, [x19, #3584]
4026da0: 9100e002 add x2, x0, #0x38
4026da4: b9400001 ldr w1, [x0]
win_reg &= ~WIN_ENABLE_BIT;
4026da8: 121f7821 and w1, w1, #0xfffffffe
*(volatile uint32_t*)addr = value;
// post-indexing
4026dac: b8008401 str w1, [x0], #8
#gcc --version
gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#objdump --version
GNU objdump (GNU Binutils for Ubuntu) 2.36.1
Copyright (C) 2021 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
#I can’t get access to latests compiler and binutils versions to overcome
# « ../.. array subscript 0 is outside array bounds of ‘volatile void[0] »
# « ../.. has a LOAD segment with RWX permissions »
# so I don’t know if this behaviour is changed when using this latests toolchain