diff options
author | Helge Deller <deller@gmx.de> | 2023-09-16 22:12:15 +0200 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2023-10-14 13:39:42 +0200 |
commit | 46554dbde528c43c332d3e45b83b963c6731d0dc (patch) | |
tree | 2a56105e246ab1673b70aeef5fda4484d2a126e1 | |
parent | 6f5b0bce327dc75eeeebff097b5de0c535e57360 (diff) | |
download | seabios-hppa-46554dbde528c43c332d3e45b83b963c6731d0dc.zip seabios-hppa-46554dbde528c43c332d3e45b83b963c6731d0dc.tar.gz seabios-hppa-46554dbde528c43c332d3e45b83b963c6731d0dc.tar.bz2 |
parisc: Fix serial output at early bootup
If some bug happens during early bootup, the mem_cons might not have
been initialized yet. In that case use default PARISC_SERIAL_CONSOLE
to show something.
Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r-- | src/parisc/parisc.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c index bf0f41c..8e2b253 100644 --- a/src/parisc/parisc.c +++ b/src/parisc/parisc.c @@ -530,10 +530,18 @@ static unsigned long parisc_serial_in(char *c, unsigned long maxchars) static void parisc_serial_out(char c) { - portaddr_t addr = PAGE0->mem_cons.hpa + 0x800; /* PARISC_SERIAL_CONSOLE */ + portaddr_t addr = PAGE0->mem_cons.hpa; + + /* might not be initialized if problems happen during early bootup */ + if (!addr) + addr = PARISC_SERIAL_CONSOLE; + else + addr += 0x800; + + if (c == '\n') + parisc_serial_out('\r'); + for (;;) { - if (c == '\n') - parisc_serial_out('\r'); u8 lsr = inb(addr+SEROFF_LSR); if ((lsr & 0x60) == 0x60) { // Success - can write data |