Message ID | 20250512180502.2395029-30-pierrick.bouvier@linaro.org |
---|---|
State | New |
Headers | show |
Series | single-binary: compile target/arm twice | expand |
Hi Pierrick, On 12/5/25 20:04, Pierrick Bouvier wrote: > sextract64 returns a signed value. > > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> > --- > target/arm/ptw.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/target/arm/ptw.c b/target/arm/ptw.c > index 89979c07e5a..68ec3f5e755 100644 > --- a/target/arm/ptw.c > +++ b/target/arm/ptw.c > @@ -1660,7 +1660,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw, > uint64_t ttbr; > hwaddr descaddr, indexmask, indexmask_grainsize; > uint32_t tableattrs; > - target_ulong page_size; > + uint64_t page_size; Subject mentions int64_t, description mentions signed, but patch uses unsigned uint64_t, is that expected? > uint64_t attrs; > int32_t stride; > int addrsize, inputsize, outputsize; > @@ -1733,7 +1733,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw, > * validation to do here. > */ > if (inputsize < addrsize) { > - target_ulong top_bits = sextract64(address, inputsize, > + uint64_t top_bits = sextract64(address, inputsize, > addrsize - inputsize); > if (-top_bits != param.select) { > /* The gap between the two regions is a Translation fault */
diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 89979c07e5a..68ec3f5e755 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1660,7 +1660,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw, uint64_t ttbr; hwaddr descaddr, indexmask, indexmask_grainsize; uint32_t tableattrs; - target_ulong page_size; + uint64_t page_size; uint64_t attrs; int32_t stride; int addrsize, inputsize, outputsize; @@ -1733,7 +1733,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw, * validation to do here. */ if (inputsize < addrsize) { - target_ulong top_bits = sextract64(address, inputsize, + uint64_t top_bits = sextract64(address, inputsize, addrsize - inputsize); if (-top_bits != param.select) { /* The gap between the two regions is a Translation fault */