xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, Oleksandr_Tyshchenko@epam.com,
	andrii_anisov@epam.com, andre.przywara@arm.com
Subject: Re: [Xen-devel] [PATCH 02/17] xen/arm64: head: Don't clobber x30/lr in the macro PRINT
Date: Wed, 26 Jun 2019 10:07:03 +0100	[thread overview]
Message-ID: <31afe099-1a7b-d8f3-6d11-0fdf78594c2e@arm.com> (raw)
In-Reply-To: <alpine.DEB.2.21.1906251656420.5851@sstabellini-ThinkPad-T480s>

Hi Stefano,

On 26/06/2019 00:59, Stefano Stabellini wrote:
> On Tue, 25 Jun 2019, Stefano Stabellini wrote:
>> On Mon, 10 Jun 2019, Julien Grall wrote:
>>>>   The current implementation of the macro PRINT will clobber x30/lr. This
>>> means the user should save lr if it cares about it.
>>
>> By x30/lr, do you mean x0-x3 and lr? I would prefer a clearer
>> expression.
> 
> No of course not! You meant x30 which is a synonym of lr! It is just
> that in this case it is also supposed to clobber x0-x3 -- I got
> confused! The commit message is also fine as is then. More below.
> 
> 
>> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
>>
>>
>>> Follow-up patches will introduce more use of PRINT in place where lr
>>> should be preserved. Rather than requiring all the users to preserve lr,
>>> the macro PRINT is modified to save and restore it.
>>>
>>> While the comment state x3 will be clobbered, this is not the case. So
>>> PRINT will use x3 to preserve lr.
>>>
>>> Lastly, take the opportunity to move the comment on top of PRINT and use
>>> PRINT in init_uart. Both changes will be helpful in a follow-up patch.
>>>
>>> Signed-off-by: Julien Grall <julien.grall@arm.com>
>>> ---
>>>   xen/arch/arm/arm64/head.S | 14 +++++++++-----
>>>   1 file changed, 9 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
>>> index c8bbdf05a6..a5147c8d80 100644
>>> --- a/xen/arch/arm/arm64/head.S
>>> +++ b/xen/arch/arm/arm64/head.S
>>> @@ -78,12 +78,17 @@
>>>    *  x30 - lr
>>>    */
>>>   
>>> -/* Macro to print a string to the UART, if there is one.
>>> - * Clobbers x0-x3. */
>>>   #ifdef CONFIG_EARLY_PRINTK
>>> +/*
>>> + * Macro to print a string to the UART, if there is one.
>>> + *
>>> + * Clobbers x0 - x3
>>> + */
>>>   #define PRINT(_s)           \
>>> +        mov   x3, lr  ;     \
>>>           adr   x0, 98f ;     \
>>>           bl    puts    ;     \
>>> +        mov   lr, x3  ;     \
>>>           RODATA_STR(98, _s)
> 
> Strangely enough I get a build error with gcc 7.3.1, but if I use x30
> instead of lr, it builds fine. Have you seen this before?

Hmmm, I can't to reproduce it even on older compiler (4.9). My guess is not all 
the assembler is able to understand "lr".

In the file entry.S we have the following line:

lr      .req    x30             // link register


Could you give a try to add the line in head.S?

> The error is:
> 
> arm64/head.S: Assembler messages:
> arm64/head.S:272: Error: operand 1 must be an integer register -- `mov lr,x3'
> [...]
> arm64/head.S:272: Error: undefined symbol lr used as an immediate value
> [...]
> 

Cheers,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2019-06-26  9:07 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-10 19:31 [Xen-devel] [PATCH 00/17] xen/arm64: Rework head.S to make it more compliant with the Arm Arm Julien Grall
2019-06-10 19:31 ` [Xen-devel] [PATCH 01/17] xen/arm64: head Mark the end of subroutines with ENDPROC Julien Grall
2019-06-25 23:23   ` Stefano Stabellini
2019-06-10 19:32 ` [Xen-devel] [PATCH 02/17] xen/arm64: head: Don't clobber x30/lr in the macro PRINT Julien Grall
2019-06-25 23:35   ` Stefano Stabellini
2019-06-25 23:59     ` Stefano Stabellini
2019-06-26  9:07       ` Julien Grall [this message]
2019-06-26 15:27         ` Stefano Stabellini
2019-06-26 15:28           ` Julien Grall
2019-06-26 18:32             ` Stefano Stabellini
2019-06-26 19:24               ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 03/17] xen/arm64: head: Rework UART initialization on boot CPU Julien Grall
2019-06-25 23:49   ` Stefano Stabellini
2019-06-10 19:32 ` [Xen-devel] [PATCH 04/17] xen/arm64: head: Don't "reserve" x24 for the CPUID Julien Grall
2019-06-26  0:01   ` Stefano Stabellini
2019-06-26  9:09     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 05/17] xen/arm64: head: Introduce print_reg Julien Grall
2019-06-26  0:09   ` Stefano Stabellini
2019-06-26  9:10     ` Julien Grall
2019-07-15 18:46   ` Volodymyr Babchuk
2019-07-16  9:55     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 06/17] xen/arm64: head: Introduce distinct paths for the boot CPU and secondary CPUs Julien Grall
2019-06-26  1:00   ` Stefano Stabellini
2019-06-26  9:14     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 07/17] xen/arm64: head: Rework and document check_cpu_mode() Julien Grall
2019-06-26  1:00   ` Stefano Stabellini
2019-06-10 19:32 ` [Xen-devel] [PATCH 08/17] xen/arm64: head: Rework and document zero_bss() Julien Grall
2019-06-26  1:01   ` Stefano Stabellini
2019-06-26  9:16     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 09/17] xen/arm64: head: Improve coding style and document cpu_init() Julien Grall
2019-06-26  1:01   ` Stefano Stabellini
2019-06-26 10:34     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 10/17] xen/arm64: head: Improve coding style and document create_pages_tables() Julien Grall
2019-06-26  1:03   ` Stefano Stabellini
2019-06-26 11:20     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 11/17] xen/arm64: head: Document enable_mmu() Julien Grall
2019-06-26  1:03   ` Stefano Stabellini
2019-06-26 11:23     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 12/17] xen/arm64: head: Move assembly switch to the runtime PT in secondary CPUs path Julien Grall
2019-06-26  1:03   ` Stefano Stabellini
2019-06-10 19:32 ` [Xen-devel] [PATCH 13/17] xen/arm64: head: Don't setup the fixmap on secondary CPUs Julien Grall
2019-06-26 18:51   ` Stefano Stabellini
2019-06-26 19:26     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 14/17] xen/arm64: head: Remove ID map as soon as it is not used Julien Grall
2019-06-26 20:25   ` Stefano Stabellini
2019-06-26 20:39     ` Julien Grall
2019-06-26 20:44       ` Andrew Cooper
2019-06-28  0:36       ` Stefano Stabellini
2019-06-27 18:55   ` Stefano Stabellini
2019-06-27 19:30     ` Julien Grall
2019-07-10 19:39       ` Julien Grall
2019-07-30 17:33       ` Stefano Stabellini
2019-07-30 19:52         ` Julien Grall
2019-07-31 20:40           ` Stefano Stabellini
2019-07-31 21:07             ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 15/17] xen/arm64: head: Rework and document setup_fixmap() Julien Grall
2019-06-26 19:01   ` Stefano Stabellini
2019-06-26 19:30     ` Julien Grall
2019-06-27  9:29       ` Julien Grall
2019-06-27 15:38         ` Stefano Stabellini
2019-06-26 19:02   ` Stefano Stabellini
2019-06-27  9:19     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 16/17] xen/arm64: head: Rework and document launch() Julien Grall
2019-06-26 19:12   ` Stefano Stabellini
2019-06-26 20:09     ` Julien Grall
2019-06-10 19:32 ` [Xen-devel] [PATCH 17/17] xen/arm64: Zero BSS after the MMU and D-cache is turned on Julien Grall
2019-06-26 19:29   ` Stefano Stabellini
2019-06-26 20:07     ` Julien Grall
2019-06-26 21:08       ` Stefano Stabellini
2019-06-27 11:04         ` Julien Grall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=31afe099-1a7b-d8f3-6d11-0fdf78594c2e@arm.com \
    --to=julien.grall@arm.com \
    --cc=Oleksandr_Tyshchenko@epam.com \
    --cc=andre.przywara@arm.com \
    --cc=andrii_anisov@epam.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).