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

[xen staging] xen/arm: Print a 64-bit number in hex from early uart



commit a250debd2a76e4af058ad611657432f0626922e3
Author:     Wei Chen <wei.chen@xxxxxxx>
AuthorDate: Wed May 11 09:46:31 2022 +0800
Commit:     Julien Grall <jgrall@xxxxxxxxxx>
CommitDate: Mon May 16 18:10:31 2022 +0100

    xen/arm: Print a 64-bit number in hex from early uart
    
    Current putn function that is using for early print
    only can print low 32-bit of AArch64 register. This
    will lose some important messages while debugging
    with early console. For example:
    (XEN) Bringing up CPU5
    - CPU 0000000100000100 booting -
    Will be truncated to
    (XEN) Bringing up CPU5
    - CPU 00000100 booting -
    
    In this patch, we increased the print loops and shift
    bits to make putn print 64-bit number.
    
    Signed-off-by: Wei Chen <wei.chen@xxxxxxx>
    Tested-by: Jiamei Xie <jiamei.xie@xxxxxxx>
    Acked-by: Julien Grall <jgrall@xxxxxxxxxx>
---
 xen/arch/arm/arm64/head.S | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 1fd35a8390..109ae7de0c 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -872,17 +872,19 @@ puts:
         ret
 ENDPROC(puts)
 
-/* Print a 32-bit number in hex.  Specific to the PL011 UART.
+/*
+ * Print a 64-bit number in hex.
  * x0: Number to print.
  * x23: Early UART base address
- * Clobbers x0-x3 */
+ * Clobbers x0-x3
+ */
 putn:
         adr   x1, hex
-        mov   x3, #8
+        mov   x3, #16
 1:
         early_uart_ready x23, 2
-        and   x2, x0, #0xf0000000    /* Mask off the top nybble */
-        lsr   x2, x2, #28
+        and   x2, x0, #(0xf<<60)     /* Mask off the top nybble */
+        lsr   x2, x2, #60
         ldrb  w2, [x1, x2]           /* Convert to a char */
         early_uart_transmit x23, w2
         lsl   x0, x0, #4             /* Roll it through one nybble at a time */
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

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