Fix bad assembler statements for compiling with gcc 8.1 / as 2.30

Message ID 1528901663-4584-1-git-send-email-thuth@redhat.com
State Accepted
Headers show
Series
  • Fix bad assembler statements for compiling with gcc 8.1 / as 2.30
Related show

Commit Message

Thomas Huth June 13, 2018, 2:54 p.m.
When compiling with a very recent toolchain, I get these warnings:

../../llfw/boot_abort.S: Assembler messages:
../../llfw/boot_abort.S:76: Warning: invalid register expression

and:

stage2_head.S: Assembler messages:
stage2_head.S:57: Warning: invalid register expression

The first one is using the wrong opcode, we should use "and" instead of
"andi" here. The second one is using a register instead of a constant
for load-immediate, which is non-sense, too. Fix it to use the right
constant instead.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 board-qemu/llfw/stage2_head.S | 2 +-
 llfw/boot_abort.S             | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Thomas Huth June 27, 2018, 7:37 a.m. | #1
On 13.06.2018 16:54, Thomas Huth wrote:
> When compiling with a very recent toolchain, I get these warnings:
> 
> ../../llfw/boot_abort.S: Assembler messages:
> ../../llfw/boot_abort.S:76: Warning: invalid register expression
> 
> and:
> 
> stage2_head.S: Assembler messages:
> stage2_head.S:57: Warning: invalid register expression
> 
> The first one is using the wrong opcode, we should use "and" instead of
> "andi" here. The second one is using a register instead of a constant
> for load-immediate, which is non-sense, too. Fix it to use the right
> constant instead.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  board-qemu/llfw/stage2_head.S | 2 +-
>  llfw/boot_abort.S             | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/board-qemu/llfw/stage2_head.S b/board-qemu/llfw/stage2_head.S
> index adf7554..1568f27 100644
> --- a/board-qemu/llfw/stage2_head.S
> +++ b/board-qemu/llfw/stage2_head.S
> @@ -54,7 +54,7 @@ bsscdone:
>  	/* jump to c-code                       */
>  	/* r31 = fdt                    - r5    */
>  	/* ------------------------------------ */
> -	li	r3, r0
> +	li	r3, 0
>  	mr	r4, r31
>  	bl	.early_c_entry
>  
> diff --git a/llfw/boot_abort.S b/llfw/boot_abort.S
> index 996bdd7..47a9178 100644
> --- a/llfw/boot_abort.S
> +++ b/llfw/boot_abort.S
> @@ -73,7 +73,7 @@ ASM_ENTRY(boot_abort)
>  	
>  	/* check if i/o is possible, if yes then print message */
>  	li	r10, ABORT_CANIO
> -	andi.	r3, r31, r10
> +	and.	r3, r31, r10
>  	bne	abort_noio
>  
>  	/* use i/o ..., first print reference message */
> 

Ping?
Laurent Vivier June 29, 2018, 11:27 a.m. | #2
On 13/06/2018 16:54, Thomas Huth wrote:
> When compiling with a very recent toolchain, I get these warnings:
> 
> ../../llfw/boot_abort.S: Assembler messages:
> ../../llfw/boot_abort.S:76: Warning: invalid register expression
> 
> and:
> 
> stage2_head.S: Assembler messages:
> stage2_head.S:57: Warning: invalid register expression
> 
> The first one is using the wrong opcode, we should use "and" instead of
> "andi" here. The second one is using a register instead of a constant
> for load-immediate, which is non-sense, too. Fix it to use the right
> constant instead.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  board-qemu/llfw/stage2_head.S | 2 +-
>  llfw/boot_abort.S             | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/board-qemu/llfw/stage2_head.S b/board-qemu/llfw/stage2_head.S
> index adf7554..1568f27 100644
> --- a/board-qemu/llfw/stage2_head.S
> +++ b/board-qemu/llfw/stage2_head.S
> @@ -54,7 +54,7 @@ bsscdone:
>  	/* jump to c-code                       */
>  	/* r31 = fdt                    - r5    */
>  	/* ------------------------------------ */
> -	li	r3, r0
> +	li	r3, 0
>  	mr	r4, r31
>  	bl	.early_c_entry
>  
> diff --git a/llfw/boot_abort.S b/llfw/boot_abort.S
> index 996bdd7..47a9178 100644
> --- a/llfw/boot_abort.S
> +++ b/llfw/boot_abort.S
> @@ -73,7 +73,7 @@ ASM_ENTRY(boot_abort)
>  	
>  	/* check if i/o is possible, if yes then print message */
>  	li	r10, ABORT_CANIO
> -	andi.	r3, r31, r10
> +	and.	r3, r31, r10
>  	bne	abort_noio
>  
>  	/* use i/o ..., first print reference message */
> 

Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Alexey Kardashevskiy July 2, 2018, 6:23 a.m. | #3
On Wed, 27 Jun 2018 09:37:38 +0200
Thomas Huth <thuth@redhat.com> wrote:

> On 13.06.2018 16:54, Thomas Huth wrote:
> > When compiling with a very recent toolchain, I get these warnings:
> > 
> > ../../llfw/boot_abort.S: Assembler messages:
> > ../../llfw/boot_abort.S:76: Warning: invalid register expression
> > 
> > and:
> > 
> > stage2_head.S: Assembler messages:
> > stage2_head.S:57: Warning: invalid register expression
> > 
> > The first one is using the wrong opcode, we should use "and" instead of
> > "andi" here. The second one is using a register instead of a constant
> > for load-immediate, which is non-sense, too. Fix it to use the right
> > constant instead.
> > 
> > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > ---
> >  board-qemu/llfw/stage2_head.S | 2 +-
> >  llfw/boot_abort.S             | 2 +-
> >  2 files changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/board-qemu/llfw/stage2_head.S b/board-qemu/llfw/stage2_head.S
> > index adf7554..1568f27 100644
> > --- a/board-qemu/llfw/stage2_head.S
> > +++ b/board-qemu/llfw/stage2_head.S
> > @@ -54,7 +54,7 @@ bsscdone:
> >  	/* jump to c-code                       */
> >  	/* r31 = fdt                    - r5    */
> >  	/* ------------------------------------ */
> > -	li	r3, r0
> > +	li	r3, 0
> >  	mr	r4, r31
> >  	bl	.early_c_entry
> >  
> > diff --git a/llfw/boot_abort.S b/llfw/boot_abort.S
> > index 996bdd7..47a9178 100644
> > --- a/llfw/boot_abort.S
> > +++ b/llfw/boot_abort.S
> > @@ -73,7 +73,7 @@ ASM_ENTRY(boot_abort)
> >  	
> >  	/* check if i/o is possible, if yes then print message */
> >  	li	r10, ABORT_CANIO
> > -	andi.	r3, r31, r10
> > +	and.	r3, r31, r10
> >  	bne	abort_noio
> >  
> >  	/* use i/o ..., first print reference message */
> >   
> 
> Ping?

Sorry, missed that. 

Thanks, applied.


--
Alexey

Patch

diff --git a/board-qemu/llfw/stage2_head.S b/board-qemu/llfw/stage2_head.S
index adf7554..1568f27 100644
--- a/board-qemu/llfw/stage2_head.S
+++ b/board-qemu/llfw/stage2_head.S
@@ -54,7 +54,7 @@  bsscdone:
 	/* jump to c-code                       */
 	/* r31 = fdt                    - r5    */
 	/* ------------------------------------ */
-	li	r3, r0
+	li	r3, 0
 	mr	r4, r31
 	bl	.early_c_entry
 
diff --git a/llfw/boot_abort.S b/llfw/boot_abort.S
index 996bdd7..47a9178 100644
--- a/llfw/boot_abort.S
+++ b/llfw/boot_abort.S
@@ -73,7 +73,7 @@  ASM_ENTRY(boot_abort)
 	
 	/* check if i/o is possible, if yes then print message */
 	li	r10, ABORT_CANIO
-	andi.	r3, r31, r10
+	and.	r3, r31, r10
 	bne	abort_noio
 
 	/* use i/o ..., first print reference message */