[Xen-devel] [PATCH for-4.13] xen/arm32: head: Fix build when using GAS 2.25.0

Julien Grall posted 1 patch 6 years, 1 month ago
Failed in applying to current master (apply log)
xen/arch/arm/arm32/head.S | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[Xen-devel] [PATCH for-4.13] xen/arm32: head: Fix build when using GAS 2.25.0
Posted by Julien Grall 6 years, 1 month ago
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
Re: [Xen-devel] [PATCH for-4.13] xen/arm32: head: Fix build when using GAS 2.25.0
Posted by Andrew Cooper 6 years, 1 month ago
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
Re: [Xen-devel] [PATCH for-4.13] xen/arm32: head: Fix build when using GAS 2.25.0
Posted by Stefano Stabellini 6 years, 1 month ago
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
Re: [Xen-devel] [PATCH for-4.13] xen/arm32: head: Fix build when using GAS 2.25.0
Posted by Jürgen Groß 6 years, 1 month ago
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