diff options
author | Kenji Aoyama <aoyama@cvs.openbsd.org> | 2021-07-25 07:12:52 +0000 |
---|---|---|
committer | Kenji Aoyama <aoyama@cvs.openbsd.org> | 2021-07-25 07:12:52 +0000 |
commit | e7d27d51e4801bd4c130ae25b01fe0aea730d57f (patch) | |
tree | 11e2e1377fbcd759d7c03dce48732216617fd9ea /sys/arch | |
parent | 09b210c6e608fe9b769d4e278d0e57eb5e6036ac (diff) |
Force to use serial console when no graphic board is found.
If no graphic board is found, LUNA's ROM monitor forces to use serial
console even though DIP switch setting is 'use graphic console'.
For the consistency, change the the kernel behavior the same as ROM
monitor does.
Tested on my LUNA-88K2.
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/luna88k/luna88k/locore0.S | 26 | ||||
-rw-r--r-- | sys/arch/luna88k/luna88k/machdep.c | 4 |
2 files changed, 18 insertions, 12 deletions
diff --git a/sys/arch/luna88k/luna88k/locore0.S b/sys/arch/luna88k/luna88k/locore0.S index 1866071803d..d41d172bc97 100644 --- a/sys/arch/luna88k/luna88k/locore0.S +++ b/sys/arch/luna88k/luna88k/locore0.S @@ -1,4 +1,4 @@ -/* $OpenBSD: locore0.S,v 1.2 2018/06/06 12:58:05 aoyama Exp $ */ +/* $OpenBSD: locore0.S,v 1.3 2021/07/25 07:12:51 aoyama Exp $ */ /* * Copyright (c) 1998 Steve Murphree, Jr. * Copyright (c) 1996 Nivas Madhur @@ -228,24 +228,30 @@ ASLOCAL(main_init) /* read dispswitch setting */ ld.bu %r10, %r11, %lo16(OBIO_PIO0A) /* dipsw-1 (from portA) */ - mak %r10, %r10, 0<8> /* shift left 8 bit */ + mak %r10, %r10, 0<8> /* shift left 8 bit */ ld.bu %r12, %r11, %lo16(OBIO_PIO0B) /* dipsw-2 (from portB) */ or %r10, %r10, %r12 - or.u %r11, %r0, %hi16(_C_LABEL(dipswitch)) st.h %r10, %r11, %lo16(_C_LABEL(dipswitch)) - bb1 14, %r10, 1f /* XXX: if dipsw-1:2 is on, */ - or %r10, %r0, %r0 /* XXX: console is ttya */ + /* read frame buffer depth from ROM work area */ + ld %r12, %r0, %lo16(0x00001114) /* frame buffer depth */ + or.u %r13, %r0, %hi16(_C_LABEL(hwplanebits)) + st %r12, %r13, %lo16(_C_LABEL(hwplanebits)) + + /* + * By default, sysconsole is set to 0 (means using ttya). If + * a) Not forced to use serial console (by DIP SW setting), and + * b) Some graphic board are installed (hwplanebits != 0), + * we can use graphic console, so change sysconsole to 1. + */ + bb0 14, %r10, 1f /* if dipsw-1:2 is on, skip */ + bcnd eq0, %r12, 1f /* if hwplanebits == 0, skip */ + or %r10, %r0, 1 /* set sysconsole = 1 */ or.u %r11, %r0, %hi16(_C_LABEL(sysconsole)) st %r10, %r11, %lo16(_C_LABEL(sysconsole)) 1: - /* read frame buffer depth from ROM work area */ - ld %r10, %r0, %lo16(0x00001114) /* frame buffer depth */ - or.u %r11, %r0, %hi16(_C_LABEL(hwplanebits)) - st %r10, %r11, %lo16(_C_LABEL(hwplanebits)) - or %r10, %r0, 0x84 /* initialize pio1 */ or.u %r11, %r0, %hi16(OBIO_PIO1) st.b %r10, %r11, %lo16(OBIO_PIO1) diff --git a/sys/arch/luna88k/luna88k/machdep.c b/sys/arch/luna88k/luna88k/machdep.c index a2f0949eef7..4feb436afb1 100644 --- a/sys/arch/luna88k/luna88k/machdep.c +++ b/sys/arch/luna88k/luna88k/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.135 2021/02/23 11:48:21 aoyama Exp $ */ +/* $OpenBSD: machdep.c,v 1.136 2021/07/25 07:12:51 aoyama Exp $ */ /* * Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr. * Copyright (c) 1996 Nivas Madhur @@ -189,7 +189,7 @@ int machtype = LUNA_88K; /* may be overwritten in cpu_startup() */ int cputyp = CPU_88100; int bootdev; /* XXX: should be set in boot loader and locore.S */ int cpuspeed = 33; /* safe guess */ -int sysconsole = 1; /* 0 = ttya, 1 = keyboard/mouse, used in dev/sio.c */ +int sysconsole = 0; /* 0 = ttya, may be overwritten in locore0.S */ u_int16_t dipswitch = 0; /* set in locore.S */ int hwplanebits; /* set in locore.S */ |