Use global static prom vectors within the module instead of

creating them on the fly. Simplify arcemu_ip12_putc() since the
printf vector behaves as expected.
This commit is contained in:
rumble 2004-06-08 22:51:21 +00:00
parent 41c82be3dd
commit df731a5f0f
2 changed files with 13 additions and 19 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: arcemu.c,v 1.5 2004/04/14 10:29:26 pooka Exp $ */
/* $NetBSD: arcemu.c,v 1.6 2004/06/08 22:51:21 rumble Exp $ */
/*
* Copyright (c) 2004 Steve Rumble
@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: arcemu.c,v 1.5 2004/04/14 10:29:26 pooka Exp $");
__KERNEL_RCSID(0, "$NetBSD: arcemu.c,v 1.6 2004/06/08 22:51:21 rumble Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -140,6 +140,12 @@ arcemu_identify()
* IP12 specific
*/
/* Prom Vectors */
static void (*ip12_prom_reset)(void) = (void *)MIPS_PHYS_TO_KSEG1(0x1fc00000);
static void (*ip12_prom_reinit)(void) =(void *)MIPS_PHYS_TO_KSEG1(0x1fc00018);
static int (*ip12_prom_printf)(const char *, ...) =
(void *)MIPS_PHYS_TO_KSEG1(0x1fc00080);
/*
* The following matches IP12 NVRAM memory layout
*/
@ -224,9 +230,9 @@ arcemu_ip12_init()
arcemu_v.GetChild = arcemu_ip12_GetChild;
arcemu_v.GetEnvironmentVariable = arcemu_ip12_GetEnvironmentVariable;
arcemu_v.GetMemoryDescriptor = arcemu_ip12_GetMemoryDescriptor;
arcemu_v.Reboot = IP12_PROM_REBOOT;
arcemu_v.PowerDown = IP12_PROM_POWER_DOWN;
arcemu_v.EnterInteractiveMode = IP12_PROM_INTERACTIVE_MODE;
arcemu_v.Reboot = (void *)ip12_prom_reset;
arcemu_v.PowerDown = (void *)ip12_prom_reinit;
arcemu_v.EnterInteractiveMode = (void *)ip12_prom_reinit;
cn_tab = &arcemu_ip12_cn;
arcemu_ip12_eeprom_read();
@ -386,13 +392,7 @@ arcemu_ip12_GetMemoryDescriptor(void *mem)
static void
arcemu_ip12_putc(dev_t dummy, int c)
{
static void (*ip12write)(char *, int, int, int) = IP12_PROM_PRINT;
char t[2];
t[0] = c;
t[1] = '\0';
ip12write(t, 0, 0, 0);
ip12_prom_printf("%c", c);
}
/*

View File

@ -1,4 +1,4 @@
/* $NetBSD: arcemu.h,v 1.1 2004/04/10 19:53:48 pooka Exp $ */
/* $NetBSD: arcemu.h,v 1.2 2004/06/08 22:51:21 rumble Exp $ */
/*
* Copyright (c) 2004 Steve Rumble
@ -56,12 +56,6 @@ static void * arcemu_ip12_GetMemoryDescriptor(void *mem);
static void arcemu_ip12_eeprom_read(void);
static void arcemu_ip12_putc(dev_t, int);
/* Prom Vectors */
#define IP12_PROM_REBOOT (void *)MIPS_PHYS_TO_KSEG1(0x1fc00000)
#define IP12_PROM_POWER_DOWN (void *)MIPS_PHYS_TO_KSEG1(0x1fc00018)
#define IP12_PROM_INTERACTIVE_MODE (void *)MIPS_PHYS_TO_KSEG1(0x1fc00018)
#define IP12_PROM_PRINT (void *)MIPS_PHYS_TO_KSEG1(0x1fc00080)
/* ARCBIOS Component Tree. Represented in linear fashion. */
static struct arcbios_component ip12_tree[] = {
{ COMPONENT_CLASS_ProcessorClass, COMPONENT_TYPE_CPU,