|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [ImageBuilder v2] Add support for 64-bit addresses/sizes
Hi Xenia,
On 10/10/2022 10:52, Xenia Ragiadakou wrote:
>
>
> On 10/10/22 10:29, Michal Orzel wrote:
>
> Hi Michal
>
>> At the moment, ImageBuilder assumes that all addresses/sizes are
>> 32-bit max. It sets #{address,size}-cells to 0x2 and puts 0x0 as the
>> value for the first cell. Because of that, we cannot specify
>> MEMORY_START and MEMORY_END to be above 32-bits (e.g. to place the images
>> in the upper memory bank).
>>
>> Add support to properly handle 64-bit addresses/sizes:
>> - add function split_into_halves to split the value passed as a first
>> argument into upper and lower halves. These are then set as values for
>> variables passed respetively as the second and third argument,
>
> s/respetively/respectively/
Ok.
>
>> - add function split_addr_size to split address and size and form a
>> string to be passed to dt_set as data argument for reg property.
>>
>> Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
>> ---
>> Changes in v2:
>> - redesign a patch based on master-next instead of NXP dynamic assignment
>> patch
>> ---
>> scripts/uboot-script-gen | 33 ++++++++++++++++++++++++++++-----
>> 1 file changed, 28 insertions(+), 5 deletions(-)
>>
>> diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
>> index b24dca2b7f7e..09d237d192c1 100755
>> --- a/scripts/uboot-script-gen
>> +++ b/scripts/uboot-script-gen
>> @@ -22,6 +22,29 @@ function dt_mknode()
>> fi
>> }
>>
>> +# Usage:
>> +# split_into_halves <value> <variable_to_store_upper>
>> <variable_to_store_lower>
>> +function split_into_halves()
>> +{
>> + local value=$1
>> + local upper=$2
>> + local lower=$3
>> +
>> + eval "$upper=$(printf "0x%X\n" $(($value >> 32)))"
>> + eval "$lower=$(printf "0x%X\n" $(($value & 0xFFFFFFFF)))"
>> +}
>> +
>> +function split_addr_size()
>> +{
>> + local addr=$1
>> + local size=$2
>> +
>> + split_into_halves $addr addr_upper addr_lower
>> + split_into_halves $size size_upper size_lower
>> +
>
> Just a minor observation, the variables addr_upper, addr_lower,
> size_upper and size_lower can be declared local.
>
This function is to be called to perform substitution and as such
is always executed within a subshell so no need for local.
~Michal
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |