[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[XEN v4] xen/arm32: head: Replace load_paddr with adr_l when they are equivalent


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
  • Date: Thu, 2 Nov 2023 19:46:49 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tNzcROT9UhTBzRLICl/1JgHtAA3AmFH6QDOoVTcUgss=; b=HVSr5DrWOA+C38nOxvLBnLJt4gKvPmQIGBMLLdN2HISZwvI3NuCAYQ+kzFHX5XRGJ3YwSoNO9TsQLI5BA1wtC/8TK+duaUPzWOYeQytpP1hsNOava/s1vk4eFtK0V+JzamdJt/jCpqDMX7I4CxFAhWUG9yPzYdF39FbB6dpeCBsHqqf12mBjBAphevK1ESArlzRiIfhfU6qcCspATbO+0dl8pKdVuGxjGBjgB0zuPYnH80xVDoG8Zpe2ihFqnS1dERJpfHW+/y1ln55Kk3IUYVQiFUuw27dpAzo5AVt0tNKgRKF/T5uiHvAE0F3J96CwDdPyNDn5ApVnME6dknje7A==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eMCNcE+G6LGyIdQDLn/PaXsBDhdqjwcOGRUl67RjWIqcx7NS0vf4Kv1H9sPQYJbaaiQZK24PZ0aTTmA5xSL+HPdR58JzvHtoZcG+SeFkyaa3WjjHPAoEp0jAbaCw3zwbwfhUTjqywTb6X/+8TVbgN6yzML8IsPIWCmOMw/6kyT5A6AHZentoK2FjaoLBO7uFHJ6TO9zL/t+acWh7TM2IjKnXLel2fMUfTNWzPhkbNntW3R0lXOO14PYETtaF4+1uhKsE5/wZxuX0UN8zyEm4EQqfN2fM+QDntbCOSjwJPa17JtQekzNZXO6s0bPoYNfXazt/+y4n0TP3su/Oq+PO8w==
  • Cc: <sstabellini@xxxxxxxxxx>, <stefano.stabellini@xxxxxxx>, <julien@xxxxxxx>, <Volodymyr_Babchuk@xxxxxxxx>, <bertrand.marquis@xxxxxxx>, <michal.orzel@xxxxxxx>, Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
  • Delivery-date: Thu, 02 Nov 2023 19:47:18 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Before the MMU is turned on, PC uses physical address. Thus, one can use adr_l
instead of load_paddr to obtain the physical address of a symbol.

The only exception (for this replacement) is create_table_entry() which is
called before and after MMU is turned on.

Also, in lookup_processor_type() "r10" is no longer used. The reason being
__lookup_processor_type uses adr_l (thus r10 is no longer used to obtain the
physical address offset). Consequently, there is no need to save/restore r10.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>
---

Refer https://lists.archive.carbon60.com/xen/devel/682900 for details.

Changes from :-

v1 :- 1. No need to modify create_table_entry().
2. Remove "mov   r10, #0 " in lookup_processor_type().

v2 :- 1. No need to save/restore r10 in lookup_processor_type().
2. Update the commit message title.

v3 :- 1. In __lookup_processor_type(), update the comment.
Add Michal's R-b.

 xen/arch/arm/arm32/head.S | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
index 33b038e7e0..20e92bdb61 100644
--- a/xen/arch/arm/arm32/head.S
+++ b/xen/arch/arm/arm32/head.S
@@ -171,7 +171,7 @@ past_zImage:
 
         /* Using the DTB in the .dtb section? */
 .ifnes CONFIG_DTB_FILE,""
-        load_paddr r8, _sdtb
+        adr_l r8, _sdtb
 .endif
 
         /* Initialize the UART if earlyprintk has been enabled. */
@@ -213,7 +213,7 @@ GLOBAL(init_secondary)
         mrc   CP32(r1, MPIDR)
         bic   r7, r1, #(~MPIDR_HWID_MASK) /* Mask out flags to get CPU ID */
 
-        load_paddr r0, smp_up_cpu
+        adr_l r0, smp_up_cpu
         dsb
 2:      ldr   r1, [r0]
         cmp   r1, r7
@@ -479,7 +479,7 @@ create_page_tables:
          * create_table_entry_paddr() will clobber the register storing
          * the physical address of the table to point to.
          */
-        load_paddr r5, boot_third
+        adr_l r5, boot_third
         mov_w r4, XEN_VIRT_START
 .rept XEN_NR_ENTRIES(2)
         mov   r0, r5                        /* r0 := paddr(l3 table) */
@@ -578,7 +578,7 @@ enable_mmu:
         flush_xen_tlb_local r0
 
         /* Write Xen's PT's paddr into the HTTBR */
-        load_paddr r0, boot_pgtable
+        adr_l r0, boot_pgtable
         mov   r1, #0                 /* r0:r1 is paddr (boot_pagetable) */
         mcrr  CP64(r0, r1, HTTBR)
         isb
@@ -876,19 +876,14 @@ putn:   mov   pc, lr
 
 /* This provides a C-API version of __lookup_processor_type */
 ENTRY(lookup_processor_type)
-        stmfd sp!, {r4, r10, lr}
-        mov   r10, #0                   /* r10 := offset between virt&phys */
+        stmfd sp!, {r4, lr}
         bl    __lookup_processor_type
         mov r0, r1
-        ldmfd sp!, {r4, r10, pc}
+        ldmfd sp!, {r4, pc}
 
 /*
  *  Read processor ID register (CP#15, CR0), and Look up in the linker-built
- * supported processor list. Note that we can't use the absolute addresses for
- * the __proc_info lists since we aren't running with the MMU on (and 
therefore,
- * we are not in correct address space). We have to calculate the offset.
- *
- * r10: offset between virt&phys
+ * supported processor list.
  *
  * Returns:
  * r0: CPUID
@@ -897,8 +892,8 @@ ENTRY(lookup_processor_type)
  */
 __lookup_processor_type:
         mrc   CP32(r0, MIDR)                /* r0 := our cpu id */
-        load_paddr r1, __proc_info_start
-        load_paddr r2, __proc_info_end
+        adr_l r1, __proc_info_start
+        adr_l r2, __proc_info_end
 1:      ldr   r3, [r1, #PROCINFO_cpu_mask]
         and   r4, r0, r3                    /* r4 := our cpu id with mask */
         ldr   r3, [r1, #PROCINFO_cpu_val]   /* r3 := cpu val in current proc 
info */
-- 
2.25.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.