mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
x86/boot: fix early error output
In 9180f53655 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 <drumandstrum@gmail.com>
Reviewed-by: Doug Goldstein <cardoe@cardoe.com>
[jb: correct title and description]
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
1 parent
4a1d823f70
commit
78e693cc12
1 file changed
+4
-3
@@ -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
|
||||
|
||||