hw/core/loader: Add new function rom_ptr_for_as()
commit1228c4596a0046b3e4e71f62773caa835dfc79df
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 18 Mar 2021 17:48:22 +0000 (18 17:48 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 23 Mar 2021 11:47:31 +0000 (23 11:47 +0000)
treecea61e7f6cb0c0656d9855bc23c880a31471382a
parentb3566001d4d4c3f4626442584556bd18b0e7243b
hw/core/loader: Add new function rom_ptr_for_as()

For accesses to rom blob data before or during reset, we have a
function rom_ptr() which looks for a rom blob that would be loaded to
the specified address, and returns a pointer into the rom blob data
corresponding to that address.  This allows board or CPU code to say
"what is the data that is going to be loaded to this address?".

However, this function does not take account of memory region
aliases.  If for instance a machine model has RAM at address
0x0000_0000 which is aliased to also appear at 0x1000_0000, a
rom_ptr() query for address 0x0000_0000 will only return a match if
the guest image provided by the user was loaded at 0x0000_0000 and
not if it was loaded at 0x1000_0000, even though they are the same
RAM and a run-time guest CPU read of 0x0000_0000 will read the data
loaded to 0x1000_0000.

Provide a new function rom_ptr_for_as() which takes an AddressSpace
argument, so that it can check whether the MemoryRegion corresponding
to the address is also mapped anywhere else in the AddressSpace and
look for rom blobs that loaded to that alias.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20210318174823.18066-5-peter.maydell@linaro.org
hw/core/loader.c
include/hw/loader.h