From: David Esler Date: Fri, 20 Oct 2017 07:29:29 +0000 (+0200) Subject: x86/boot: fix early error output X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~1077 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=78e693cc123296db2f79e792cf474544c1ffd064;p=xen.git x86/boot: fix early error output In 9180f5365524 a change was made to the send_chr function to take in C-strings and output a character at a time until a NULL was encountered. However, when there is no VGA there is no code to increment the current character position resulting in an endless loop of the first character. This moves the (implicit) increment such that it occurs in all cases. Signed-off-by: David Esler Reviewed-by: Doug Goldstein [jb: correct title and description] Reviewed-by: Jan Beulich Reviewed-by: Daniel Kiper --- diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S index fd6fc337fe..9cc35da558 100644 --- a/xen/arch/x86/boot/head.S +++ b/xen/arch/x86/boot/head.S @@ -173,10 +173,11 @@ not_multiboot: .Lget_vtb: mov sym_esi(vga_text_buffer),%edi .Lsend_chr: - mov (%esi),%bl - test %bl,%bl # Terminate on '\0' sentinel + lodsb + test %al,%al # Terminate on '\0' sentinel je .Lhalt mov $0x3f8+5,%dx # UART Line Status Register + mov %al,%bl 2: in %dx,%al test $0x20,%al # Test THR Empty flag je 2b @@ -185,7 +186,7 @@ not_multiboot: out %al,%dx # Send a character over the serial line test %edi,%edi # Is the VGA text buffer available? jz .Lsend_chr - movsb # Write a character to the VGA text buffer + stosb # Write a character to the VGA text buffer mov $7,%al stosb # Write an attribute to the VGA text buffer jmp .Lsend_chr