parisc: SEABIOS_HPPA_VERSION 6
New features and fixes:
* Allow "z" instead of "y" in firmware boot menu for german keyboards
* Fixed serial port emulation
Serial ports ttyS0 and ttyS1 were swapped compared to the real hardware.
So, a booting Linux was actually using ttyS1 as serial console, and the
emulated ttyS0 wasn't useable.
With this version you can use e.g.:
-serial mon:stdio -serial /dev/ttyS4
to use emulated ttyS0 in the gueast for console output, and pass ttyS4
from the host to ttyS1 in the guest.
NOTE: This version is incompatible with older qemu versions, since
the serial ports are now swapped.
Signed-off-by: Helge Deller <deller@gmx.de>
diff --git a/src/parisc/hppa_hardware.h b/src/parisc/hppa_hardware.h
index 5edf577..c036d46 100644
--- a/src/parisc/hppa_hardware.h
+++ b/src/parisc/hppa_hardware.h
@@ -1,4 +1,5 @@
/* HPPA cores and system support chips. */
+/* Be aware: This file is shared as-is with seabios-hppa. */
#ifndef HW_HPPA_HPPA_HARDWARE_H
#define HW_HPPA_HPPA_HARDWARE_H
@@ -40,8 +41,8 @@
#define FW_CFG_IO_BASE 0xfffa0000
-#define PORT_SERIAL1 (DINO_UART_HPA + 0x800)
-#define PORT_SERIAL2 (LASI_UART_HPA + 0x800)
+#define PORT_SERIAL1 (LASI_UART_HPA + 0x800)
+#define PORT_SERIAL2 (DINO_UART_HPA + 0x800)
#define HPPA_MAX_CPUS 16 /* max. number of SMP CPUs */
#define CPU_CLOCK_MHZ 250 /* emulate a 250 MHz CPU */
diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c
index b679954..deb9ce6 100644
--- a/src/parisc/parisc.c
+++ b/src/parisc/parisc.c
@@ -31,7 +31,7 @@
#include "vgabios.h"
-#define SEABIOS_HPPA_VERSION 5
+#define SEABIOS_HPPA_VERSION 6
/*
* Various variables which are needed by x86 code.
@@ -535,7 +535,7 @@
for (;;) {
if (c == '\n')
parisc_serial_out('\r');
- const portaddr_t addr = PORT_SERIAL1;
+ const portaddr_t addr = PARISC_SERIAL_CONSOLE;
u8 lsr = inb(addr+SEROFF_LSR);
if ((lsr & 0x60) == 0x60) {
// Success - can write data
@@ -1823,7 +1823,7 @@
{
int scsi_boot_target;
char input[24];
- char *c;
+ char *c, reply;
// snprintf(input, sizeof(input), "BOOT FWSCSI.%d.0", boot_drive->target);
again:
@@ -1877,9 +1877,11 @@
input[0] = '\0';
enter_text(input, 1);
parisc_putchar('\n');
- if (input[0] == 'C' || input[0] == 'c')
+ reply = input[0];
+ if (reply == 'C' || reply == 'c')
goto again2;
- if (input[0] == 'Y' || input[0] == 'y')
+ // allow Z as Y. It's the key used on german keyboards.
+ if (reply == 'Y' || reply == 'y' || reply == 'Z' || reply == 'z')
interact_ipl = 1;
}