Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/arcbios Initial pass a ARC BIOS code that can be sha...
details: https://anonhg.NetBSD.org/src/rev/5d181d63b72f
branches: trunk
changeset: 512277:5d181d63b72f
user: thorpej <thorpej%NetBSD.org@localhost>
date: Sun Jul 08 19:58:02 2001 +0000
description:
Initial pass a ARC BIOS code that can be shared between the sgimips
and arc ports.
diffstat:
sys/dev/arcbios/arcbios.c | 105 +++++++++++
sys/dev/arcbios/arcbios.h | 398 ++++++++++++++++++++++++++++++++++++++++++
sys/dev/arcbios/arcbios_tty.c | 251 ++++++++++++++++++++++++++
sys/dev/arcbios/arcbiosvar.h | 46 ++++
4 files changed, 800 insertions(+), 0 deletions(-)
diffs (truncated from 816 to 300 lines):
diff -r 178090a82390 -r 5d181d63b72f sys/dev/arcbios/arcbios.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/dev/arcbios/arcbios.c Sun Jul 08 19:58:02 2001 +0000
@@ -0,0 +1,105 @@
+/* $NetBSD: arcbios.c,v 1.1 2001/07/08 19:58:02 thorpej Exp $ */
+
+/*-
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/param.h>
+
+#include <dev/cons.h>
+
+#include <dev/arcbios/arcbios.h>
+#include <dev/arcbios/arcbiosvar.h>
+
+const struct arcbios_spb *ARCBIOS_SPB;
+const struct arcbios_fv *ARCBIOS;
+
+int arcbios_cngetc(dev_t);
+void arcbios_cnputc(dev_t, int);
+
+struct consdev arcbios_cn = {
+ NULL, NULL, arcbios_cngetc, arcbios_cnputc, nullcnpollc, NULL,
+ NODEV, CN_NORMAL,
+};
+
+/*
+ * arcbios_init:
+ *
+ * Initialize the ARC BIOS.
+ */
+int
+arcbios_init(vaddr_t pblkva)
+{
+
+ ARCBIOS_SPB = (struct arcbios_spb *) pblkva;
+
+ switch (ARCBIOS_SPB->SPBSignature) {
+ case ARCBIOS_SPB_SIGNATURE:
+ case ARCBIOS_SPB_SIGNATURE_1:
+ /* Okay. */
+ break;
+
+ default:
+ /* Don't know what this is. */
+ return (1);
+ }
+
+ /* Initialize our pointer to the firmware vector. */
+ ARCBIOS = ARCBIOS_SPB->FirmwareVector;
+
+ /* Initialize the bootstrap console. */
+ cn_tab = &arcbios_cn;
+
+ return (0);
+}
+
+int
+arcbios_cngetc(dev_t dev)
+{
+ uint32_t count;
+ char c;
+
+ (*ARCBIOS->Read)(ARCBIOS_STDIN, &c, 1, &count);
+ return (c);
+}
+
+void
+arcbios_cnputc(dev_t dev, int c)
+{
+ uint32_t count;
+ char ch = c;
+
+ (*ARCBIOS->Write)(ARCBIOS_STDOUT, &ch, 1, &count);
+}
diff -r 178090a82390 -r 5d181d63b72f sys/dev/arcbios/arcbios.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/dev/arcbios/arcbios.h Sun Jul 08 19:58:02 2001 +0000
@@ -0,0 +1,398 @@
+/* $NetBSD: arcbios.h,v 1.1 2001/07/08 19:58:02 thorpej Exp $ */
+
+/*-
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * The ARC BIOS (which is similar, but not 100% compatible with SGI ARCS)
+ * specification can be found at:
+ *
+ * http://www.microsoft.com/hwdev/download/respec/riscspec.zip
+ */
+
+#define ARCBIOS_STDIN 0
+#define ARCBIOS_STDOUT 1
+
+#define ARCBIOS_PAGESIZE 4096
+
+/* ARC BIOS status codes. */
+#define ARCBIOS_ESUCCESS 0 /* Success */
+#define ARCBIOS_E2BIG 1 /* argument list too long */
+#define ARCBIOS_EACCES 2 /* permission denied */
+#define ARCBIOS_EAGAIN 3 /* resource temporarily unavailable */
+#define ARCBIOS_EBADF 4 /* bad file number */
+#define ARCBIOS_EBUSY 5 /* device or resource busy */
+#define ARCBIOS_EFAULT 6 /* bad address */
+#define ARCBIOS_EINVAL 7 /* invalid argument */
+#define ARCBIOS_EIO 8 /* I/O error */
+#define ARCBIOS_EISDIR 9 /* is a directory */
+#define ARCBIOS_EMFILE 10 /* too many open files */
+#define ARCBIOS_EMLINK 11 /* too many links */
+#define ARCBIOS_ENAMETOOLONG 12 /* file name too long */
+#define ARCBIOS_ENODEV 13 /* no such device */
+#define ARCBIOS_ENOENT 14 /* no such file or directory */
+#define ARCBIOS_ENOEXEC 15 /* exec format error */
+#define ARCBIOS_ENOMEM 16 /* out of memory */
+#define ARCBIOS_ENOSPC 17 /* no space left on device */
+#define ARCBIOS_ENOTDIR 18 /* not a directory */
+#define ARCBIOS_ENOTTY 19 /* not a typewriter */
+#define ARCBIOS_ENXIO 20 /* media not loaded */
+#define ARCBIOS_EROFS 21 /* read-only file system */
+#if defined(sgimips)
+#define ARCBIOS_EADDRNOTAVAIL 31 /* address not available */
+#define ARCBIOS_ETIMEDOUT 32 /* operation timed out */
+#define ARCBIOS_ECONNABORTED 33 /* connection aborted */
+#define ARCBIOS_ENOCONNECT 34 /* not connected */
+#endif /* sgimips */
+
+/*
+ * 4.2.2: System Parameter Block
+ */
+struct arcbios_spb {
+ uint32_t SPBSignature;
+ uint32_t SPBLength;
+ uint16_t Version;
+ uint16_t Revision;
+ void *RestartBlock;
+ void *DebugBlock;
+ void *GEVector;
+ void *UTLBMissVector;
+ uint32_t FirmwareVectorLength;
+ void *FirmwareVector;
+ uint32_t PrivateVectorLength;
+ void *PrivateVector;
+ uint32_t AdapterCount;
+ uint32_t AdapterType;
+ uint32_t AdapterVectorLength;
+ void *AdapterVector;
+};
+
+#define ARCBIOS_SPB_SIGNATURE 0x53435241 /* A R C S */
+#define ARCBIOS_SPB_SIGNATURE_1 0x41524353 /* S C R A */
+
+/*
+ * 4.2.5: System Configuration Data
+ */
+struct arcbios_component {
+ uint32_t Class;
+ uint32_t Type;
+ uint32_t Flags;
+ uint16_t Version;
+ uint16_t Revision;
+ uint32_t Key;
+ uint32_t AffinityMask;
+ uint32_t ConfigurationDataSize;
+ uint32_t IdentifierLength;
+ char *Identifier;
+};
+
+/* Component Class */
+#define COMPONENT_CLASS_SystemClass 0
+#define COMPONENT_CLASS_ProcessorClass 1
+#define COMPONENT_CLASS_CacheClass 2
+#define COMPONENT_CLASS_AdapterClass 3
+#define COMPONENT_CLASS_ControllerClass 4
+#define COMPONENT_CLASS_PeripheralClass 5
+#define COMPONENT_CLASS_MemoryClass 6
+
+/* System Class */
+#define COMPONENT_TYPE_ARC 0
+
+/* Processor Class */
+#define COMPONENT_TYPE_CPU 1
+#define COMPONENT_TYPE_FPU 2
+
+/* Cache Class */
+#define COMPONENT_TYPE_PrimaryICache 3
+#define COMPONENT_TYPE_PrimaryDCache 4
+#define COMPONENT_TYPE_SecondaryICache 5
+#define COMPONENT_TYPE_SecondaryDCache 6
+#define COMPONENT_TYPE_SecondaryCache 7
+
+/* Adapter Class */
+#define COMPONENT_TYPE_EISAAdapter 8
+#define COMPONENT_TYPE_TCAdapter 9
+#define COMPONENT_TYPE_SCSIAdapter 10
+#define COMPONENT_TYPE_DTIAdapter 11
+#define COMPONENT_TYPE_MultiFunctionAdapter 12
+
+/* Controller Class */
+#define COMPONENT_TYPE_DiskController 13
+#define COMPONENT_TYPE_TapeController 14
+#define COMPONENT_TYPE_CDROMController 15
+#define COMPONENT_TYPE_WORMController 16
+#define COMPONENT_TYPE_SerialController 17
+#define COMPONENT_TYPE_NetworkController 18
+#define COMPONENT_TYPE_DisplayController 19
+#define COMPONENT_TYPE_ParallelController 20
+#define COMPONENT_TYPE_PointerController 21
+#define COMPONENT_TYPE_KeyboardController 22
+#define COMPONENT_TYPE_AudioController 23
+#define COMPONENT_TYPE_OtherController 24
+
+/* Peripheral Class */
+#define COMPONENT_TYPE_DiskPeripheral 25
+#define COMPONENT_TYPE_FloppyDiskPeripheral 26
+#define COMPONENT_TYPE_TapePeripheral 27
+#define COMPONENT_TYPE_ModemPeripheral 28
+#define COMPONENT_TYPE_MonitorPeripheral 29
+#define COMPONENT_TYPE_PrinterPeripheral 30
+#define COMPONENT_TYPE_PointerPeripheral 31
+#define COMPONENT_TYPE_KeyboardPeripheral 32
+#define COMPONENT_TYPE_TerminalPeripheral 33
+#define COMPONENT_TYPE_OtherPeripheral 34
+#define COMPONENT_TYPE_LinePeripheral 35
+#define COMPONENT_TYPE_NetworkPeripheral 36
+
+/* Memory Class */
+#define COMPONENT_TYPE_MemoryUnit 37
+
+/* Component flags */
+#define COMPONENT_FLAG_Failed 1
+#define COMPONENT_FLAG_ReadOnly 2
+#define COMPONENT_FLAG_Removable 4
+#define COMPONENT_FLAG_ConsoleIn 8
Home |
Main Index |
Thread Index |
Old Index