Fixed the `slow printing' bug that occured with debugged kernels on RiscPC's.

When the IOMD isnt mapped and all is mapped 1:1 a read gives garbage and thus
the obscure feature that slows down printing (or halts it!) when the mouse
button is pressed during output to the vidcconsole gets allways activated.

Included a simple flag that signals if the IOMD is mapped; the delay routine
won't check the mouse if this flag is still clear.
This commit is contained in:
reinoud 2001-02-24 21:29:38 +00:00
parent 65f0e79e4f
commit 7535275b7c
2 changed files with 27 additions and 3 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: qms_iomd.c,v 1.1 1997/10/14 11:16:39 mark Exp $ */
/* $NetBSD: qms_iomd.c,v 1.2 2001/02/24 21:29:38 reinoud Exp $ */
/*
* Copyright (c) Scott Stevens 1995 All rights reserved
@ -49,6 +49,14 @@
#include <arm32/dev/qmsvar.h>
#include <arm32/iomd/iomdvar.h>
/*
* needs iomd_mapped flag to detect if the IOMD is allready connected
* otherwise the vidcconsole qms_console_freeze will go wrong for it
* can't read the IOMD when it isnt initialised (!)
*/
extern int iomd_mapped;
#define TIMER1_COUNT 40000 /* 50Hz */
static int qms_iomd_probe __P((struct device *, struct cfdata *, void *));
@ -121,6 +129,8 @@ qms_iomd_intenable(sc, enable)
void
qms_console_freeze()
{
if (!iomd_mapped) return;
/* Middle mouse button freezes the display while active */
while ((ReadByte(IO_MOUSE_BUTTONS) & MOUSE_BUTTON_MIDDLE) == 0);

View File

@ -1,4 +1,4 @@
/* $NetBSD: rpc_machdep.c,v 1.37 2001/02/21 00:51:27 reinoud Exp $ */
/* $NetBSD: rpc_machdep.c,v 1.38 2001/02/24 21:29:39 reinoud Exp $ */
/*
* Copyright (c) 2000-2001 Reinoud Zandijk.
@ -110,6 +110,7 @@ videomemory_t videomemory; /* Video memory descriptor */
/* static char bootargs[MAX_BOOT_STRING + 1]; */
char *boot_args = NULL;
char *boot_file = NULL;
int iomd_mapped = NULL;
vm_offset_t physical_start;
vm_offset_t physical_freestart;
@ -198,7 +199,7 @@ void rpc_sa110_cc_setup __P((void));
extern void parse_mi_bootargs __P((char *args));
void parse_rpc_bootargs __P((char *args));
extern void dumpsys __P((void));
extern void dumpsys __P((void));
/*
@ -828,6 +829,13 @@ initarm_new_bootloader(bootconf)
physcon_display_base(VMEM_VBASE);
vidcrender_reinit();
/*
* flag that the IOMD is mapped ... this allows to use qms slow scrolling
* support wich needs a mapped MEMC
*/
iomd_mapped = 1;
#ifdef VERBOSE_INIT_ARM
printf("running on the new L1 page table!\n");
#endif
@ -1870,6 +1878,12 @@ initarm_old_bootloader(bootconf)
printf("done.\n");
/*
* flag that the IOMD is mapped ... this allows to use qms slow scrolling
* support wich needs a mapped MEMC
*/
iomd_mapped = 1;
/* Right set up the vectors at the bottom of page 0 */
memcpy((char *)0x00000000, page0, page0_end - page0);