xen/arch/arm/arm32/head.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
GAS 2.25.0 throws multiple errors when building arm32/head.S:
arm32/head.S: Assembler messages:
arm32/head.S:452: Error: invalid constant (f7f) after fixup
arm32/head.S:453: Error: invalid constant (f7f) after fixup
arm32/head.S:495: Error: invalid constant (f7f) after fixup
arm32/head.S:510: Error: invalid constant (f7f) after fixup
arm32/head.S:514: Error: invalid constant (f7f) after fixup
arm32/head.S:516: Error: invalid constant (f7f) after fixup
arm32/head.S:633: Error: invalid constant (f7f) after fixup
This makes sense because the instruction mov is only able to deal with a
specific set of immediate (see "modified immediate constants in ARM
instructions"). For any 16-bit immediate, the instruction movw should be
used.
It looks like newer version of GAS will seemly switch to movw if the
immediate does not fit in the immediate encoding for mov. But we should
not rely on this. So switch to movw.
Fixes: 23dfe48d10 ("xen/arm32: head: Introduce macros to create table and mapping entry")
Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Julien Grall <julien.grall@arm.com>
---
xen/arch/arm/arm32/head.S | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
index 2fc312f9e0..e9d356f05c 100644
--- a/xen/arch/arm/arm32/head.S
+++ b/xen/arch/arm/arm32/head.S
@@ -383,7 +383,7 @@ ENDPROC(cpu_init)
ldr r4, =\tbl
add r4, r4, r10 /* r4 := paddr(\tlb) */
- mov r2, #PT_PT /* r2:r3 := right for linear PT */
+ movw r2, #PT_PT /* r2:r3 := right for linear PT */
orr r2, r2, r4 /* + \tlb paddr */
mov r3, #0
@@ -419,7 +419,7 @@ ENDPROC(cpu_init)
lsr r4, \phys, #THIRD_SHIFT
lsl r4, r4, #THIRD_SHIFT /* r4 := PAGE_ALIGNED(phys) */
- mov r2, #\type /* r2:r3 := right for section PT */
+ movw r2, #\type /* r2:r3 := right for section PT */
orr r2, r2, r4 /* + PAGE_ALIGNED(phys) */
mov r3, #0
--
2.11.0
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
On 30/09/2019 19:44, Julien Grall wrote:
> GAS 2.25.0 throws multiple errors when building arm32/head.S:
>
> arm32/head.S: Assembler messages:
> arm32/head.S:452: Error: invalid constant (f7f) after fixup
> arm32/head.S:453: Error: invalid constant (f7f) after fixup
> arm32/head.S:495: Error: invalid constant (f7f) after fixup
> arm32/head.S:510: Error: invalid constant (f7f) after fixup
> arm32/head.S:514: Error: invalid constant (f7f) after fixup
> arm32/head.S:516: Error: invalid constant (f7f) after fixup
> arm32/head.S:633: Error: invalid constant (f7f) after fixup
>
> This makes sense because the instruction mov is only able to deal with a
> specific set of immediate (see "modified immediate constants in ARM
> instructions"). For any 16-bit immediate, the instruction movw should be
> used.
>
> It looks like newer version of GAS will seemly switch to movw if the
> immediate does not fit in the immediate encoding for mov. But we should
> not rely on this. So switch to movw.
>
> Fixes: 23dfe48d10 ("xen/arm32: head: Introduce macros to create table and mapping entry")
> Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Julien Grall <julien.grall@arm.com>
FWIW, Tested-by: Andrew Cooper <andrew.cooper3@citrix.com>, only insofar
as it fixing the build. I haven't booted the resulting binary.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
On Mon, 30 Sep 2019, Andrew Cooper wrote:
> On 30/09/2019 19:44, Julien Grall wrote:
> > GAS 2.25.0 throws multiple errors when building arm32/head.S:
> >
> > arm32/head.S: Assembler messages:
> > arm32/head.S:452: Error: invalid constant (f7f) after fixup
> > arm32/head.S:453: Error: invalid constant (f7f) after fixup
> > arm32/head.S:495: Error: invalid constant (f7f) after fixup
> > arm32/head.S:510: Error: invalid constant (f7f) after fixup
> > arm32/head.S:514: Error: invalid constant (f7f) after fixup
> > arm32/head.S:516: Error: invalid constant (f7f) after fixup
> > arm32/head.S:633: Error: invalid constant (f7f) after fixup
> >
> > This makes sense because the instruction mov is only able to deal with a
> > specific set of immediate (see "modified immediate constants in ARM
> > instructions"). For any 16-bit immediate, the instruction movw should be
> > used.
> >
> > It looks like newer version of GAS will seemly switch to movw if the
> > immediate does not fit in the immediate encoding for mov. But we should
> > not rely on this. So switch to movw.
> >
> > Fixes: 23dfe48d10 ("xen/arm32: head: Introduce macros to create table and mapping entry")
> > Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > Signed-off-by: Julien Grall <julien.grall@arm.com>
>
> FWIW, Tested-by: Andrew Cooper <andrew.cooper3@citrix.com>, only insofar
> as it fixing the build. I haven't booted the resulting binary.
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Given that this is a straightforward build fix, and due to timezone
differences, I have committed it (after verifying it fixes the build
myself). I hope that Juergen approves._______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
On 01.10.19 02:57, Stefano Stabellini wrote:
> On Mon, 30 Sep 2019, Andrew Cooper wrote:
>> On 30/09/2019 19:44, Julien Grall wrote:
>>> GAS 2.25.0 throws multiple errors when building arm32/head.S:
>>>
>>> arm32/head.S: Assembler messages:
>>> arm32/head.S:452: Error: invalid constant (f7f) after fixup
>>> arm32/head.S:453: Error: invalid constant (f7f) after fixup
>>> arm32/head.S:495: Error: invalid constant (f7f) after fixup
>>> arm32/head.S:510: Error: invalid constant (f7f) after fixup
>>> arm32/head.S:514: Error: invalid constant (f7f) after fixup
>>> arm32/head.S:516: Error: invalid constant (f7f) after fixup
>>> arm32/head.S:633: Error: invalid constant (f7f) after fixup
>>>
>>> This makes sense because the instruction mov is only able to deal with a
>>> specific set of immediate (see "modified immediate constants in ARM
>>> instructions"). For any 16-bit immediate, the instruction movw should be
>>> used.
>>>
>>> It looks like newer version of GAS will seemly switch to movw if the
>>> immediate does not fit in the immediate encoding for mov. But we should
>>> not rely on this. So switch to movw.
>>>
>>> Fixes: 23dfe48d10 ("xen/arm32: head: Introduce macros to create table and mapping entry")
>>> Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> Signed-off-by: Julien Grall <julien.grall@arm.com>
>>
>> FWIW, Tested-by: Andrew Cooper <andrew.cooper3@citrix.com>, only insofar
>> as it fixing the build. I haven't booted the resulting binary.
>
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
>
> Given that this is a straightforward build fix, and due to timezone
> differences, I have committed it (after verifying it fixes the build
> myself). I hope that Juergen approves.
>
I do.
Juergen
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
© 2016 - 2025 Red Hat, Inc.