From: Julien Grall Date: Mon, 30 Sep 2019 18:44:25 +0000 (+0100) Subject: xen/arm32: head: Fix build when using GAS 2.25.0 X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~1383 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=58197b685a4f61969c5903e7f079ba0ebf4fa59e;p=xen.git xen/arm32: head: Fix build when using GAS 2.25.0 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 Signed-off-by: Julien Grall Tested-by: Andrew Cooper Reviewed-by: Stefano Stabellini --- 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