Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/nathanw_sa]: src/sys/arch/arc introduce "struct platform", and remove "c...
details: https://anonhg.NetBSD.org/src/rev/ded171412e88
branches: nathanw_sa
changeset: 504751:ded171412e88
user: soda <soda%NetBSD.org@localhost>
date: Wed Jun 13 15:08:06 2001 +0000
description:
introduce "struct platform", and remove "cputype" variable.
this change also includes a patch to obtain secondary cache size
from ARC firmware by Bob Meader, which was posted on port-arc on 18 Aug 2000.
this should make NEC Express RISCserver work.
this change obtains ID of display controller from ARC firmware, too.
diffstat:
sys/arch/arc/arc/arcbios.h | 373 ++++++++++++++++++++++++++++++++++++++++++++
sys/arch/arc/arc/platform.c | 114 +++++++++++++
sys/arch/arc/include/intr.h | 139 ++++++++++++++++
3 files changed, 626 insertions(+), 0 deletions(-)
diffs (truncated from 638 to 300 lines):
diff -r d63acf1da59b -r ded171412e88 sys/arch/arc/arc/arcbios.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/arc/arc/arcbios.h Wed Jun 13 15:08:06 2001 +0000
@@ -0,0 +1,373 @@
+/* $NetBSD: arcbios.h,v 1.4.8.2 2001/06/13 15:08:06 soda Exp $ */
+/* $OpenBSD: arcbios.h,v 1.1 1998/01/29 15:06:22 pefo Exp $ */
+
+/*-
+ * Copyright (c) 1996 M. Warner Losh. All rights reserved.
+ *
+ * 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. Neither the name of the University 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 REGENTS 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 REGENTS 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/types.h>
+
+typedef struct arc_sid
+{
+ char vendor[8];
+ char prodid[8];
+} arc_sid_t;
+
+typedef enum arc_config_class
+{
+ arc_SystemClass,
+ arc_ProcessorClass,
+ arc_CacheClass,
+ arc_AdapterClass,
+ arc_ControllerClass,
+ arc_PeripheralClass,
+ arc_MemoryClass
+} arc_config_class_t;
+
+typedef enum arc_config_type
+{
+ arc_System,
+
+ arc_CentralProcessor,
+ arc_FloatingPointProcessor,
+
+ arc_PrimaryIcache,
+ arc_PrimaryDcache,
+ arc_SecondaryIcache,
+ arc_SecondaryDcache,
+ arc_SecondaryCache,
+
+ arc_EisaAdapter, /* Eisa adapter */
+ arc_TcAdapter, /* Turbochannel adapter */
+ arc_ScsiAdapter, /* SCSI adapter */
+ arc_DtiAdapter, /* AccessBus adapter */
+ arc_MultiFunctionAdapter,
+
+ arc_DiskController,
+ arc_TapeController,
+ arc_CdromController,
+ arc_WormController,
+ arc_SerialController,
+ arc_NetworkController,
+ arc_DisplayController,
+ arc_ParallelController,
+ arc_PointerController,
+ arc_KeyboardController,
+ arc_AudioController,
+ arc_OtherController, /* denotes a controller not otherwise defined */
+
+ arc_DiskPeripheral,
+ arc_FloppyDiskPeripheral,
+ arc_TapePeripheral,
+ arc_ModemPeripheral,
+ arc_MonitorPeripheral,
+ arc_PrinterPeripheral,
+ arc_PointerPeripheral,
+ arc_KeyboardPeripheral,
+ arc_TerminalPeripheral,
+ arc_OtherPeripheral, /* denotes a peripheral not otherwise defined */
+ arc_LinePeripheral,
+ arc_NetworkPeripheral,
+
+ arc_SystemMemory
+} arc_config_type_t;
+
+typedef u_char arc_dev_flags_t;
+
+/* Wonder how this is aligned... */
+typedef struct arc_config
+{
+ arc_config_class_t class; /* Likely these three all */
+ arc_config_type_t type; /* need to be uchar to make */
+ arc_dev_flags_t flags; /* the alignment right */
+ u_int16_t version;
+ u_int16_t revision;
+ u_int32_t key;
+ u_int32_t affinity_mask;
+ u_int32_t config_data_len;
+ u_int32_t id_len;
+ char *id;
+} arc_config_t;
+
+typedef enum arc_status
+{
+ arc_ESUCCESS, /* Success */
+ arc_E2BIG, /* Arg list too long */
+ arc_EACCES, /* No such file or directory */
+ arc_EAGAIN, /* Try again */
+ arc_EBADF, /* Bad file number */
+ arc_EBUSY, /* Device or resource busy */
+ arc_EFAULT, /* Bad address */
+ arc_EINVAL, /* Invalid argument */
+ arc_EIO, /* I/O error */
+ arc_EISDIR, /* Is a directory */
+ arc_EMFILE, /* Too many open files */
+ arc_EMLINK, /* Too many links */
+ arc_ENAMETOOLONG, /* File name too long */
+ arc_ENODEV, /* No such device */
+ arc_ENOENT, /* No such file or directory */
+ arc_ENOEXEC, /* Exec format error */
+ arc_ENOMEM, /* Out of memory */
+ arc_ENOSPC, /* No space left on device */
+ arc_ENOTDIR, /* Not a directory */
+ arc_ENOTTY, /* Not a typewriter */
+ arc_ENXIO, /* No such device or address */
+ arc_EROFS, /* Read-only file system */
+} arc_status_t;
+
+#ifdef arc
+typedef enum {
+ ExeceptionBlock,
+ SystemParameterBlock,
+ FreeMemory,
+ BadMemory,
+ LoadedProgram,
+ FirmwareTemporary,
+ FirmwarePermanent,
+ FreeContigous
+} MEMORYTYPE;
+#endif
+#ifdef sgi /* note: SGI's systems have different order of types. */
+ typedef enum {
+ ExeceptionBlock,
+ SystemParameterBlock,
+ FreeContigous,
+ FreeMemory,
+ BadMemory,
+ LoadedProgram,
+ FirmwareTemporary,
+ FirmwarePermanent,
+ } MEMORYTYPE;
+#endif
+
+typedef struct arc_mem {
+ MEMORYTYPE Type; /* Memory chunk type */
+ u_int32_t BasePage; /* Page no, first page */
+ u_int32_t PageCount; /* Number of pages */
+} arc_mem_t;
+
+typedef caddr_t arc_time_t; /* XXX */
+
+typedef struct arc_dsp_stat {
+ u_int16_t CursorXPosition;
+ u_int16_t CursorYPosition;
+ u_int16_t CursorMaxXPosition;
+ u_int16_t CursorMaxYPosition;
+ u_char ForegroundColor;
+ u_char BackgroundColor;
+ u_char HighIntensity;
+ u_char Underscored;
+ u_char ReverseVideo;
+} arc_dsp_stat_t;
+
+typedef caddr_t arc_dirent_t; /* XXX */
+typedef u_int32_t arc_open_mode_t; /* XXX */
+typedef u_int32_t arc_seek_mode_t; /* XXX */
+typedef u_int32_t arc_mount_t; /* XXX */
+
+typedef struct arc_calls
+{
+ arc_status_t (*load)( /* Load 1 */
+ char *, /* Image to load */
+ u_int32_t, /* top address */
+ u_int32_t *, /* Entry address */
+ u_int32_t *); /* Low address */
+
+ arc_status_t (*invoke)( /* Invoke 2 */
+ u_int32_t, /* Entry Address */
+ u_int32_t, /* Stack Address */
+ u_int32_t, /* Argc */
+ char **, /* argv */
+ char **); /* envp */
+
+ arc_status_t (*execute)( /* Execute 3 */
+ char *, /* Image path */
+ u_int32_t, /* Argc */
+ char **, /* argv */
+ char **); /* envp */
+
+ volatile void (*halt)(void); /* Halt 4 */
+
+ volatile void (*power_down)(void); /* PowerDown 5 */
+
+ volatile void (*restart)(void); /* Restart 6 */
+
+ volatile void (*reboot)(void); /* Reboot 7 */
+
+ volatile void (*enter_interactive_mode)(void); /* EnterInteractiveMode 8 */
+
+ volatile void (*return_from_main)(void); /* ReturnFromMain 9 */
+
+ arc_config_t *(*get_peer)( /* GetPeer 10 */
+ arc_config_t *); /* Component */
+
+ arc_config_t *(*get_child)( /* GetChild 11 */
+ arc_config_t *); /* Component */
+
+ arc_config_t *(*get_parent)( /* GetParent 12 */
+ arc_config_t *); /* Component */
+
+ arc_status_t (*get_config_data)( /* GetConfigurationData 13 */
+ caddr_t, /* Configuration Data */
+ arc_config_t *); /* Component */
+
+ arc_config_t *(*add_child)( /* AddChild 14 */
+ arc_config_t *, /* Component */
+ arc_config_t *); /* New Component */
+
+ arc_status_t (*delete_component)( /* DeleteComponent 15 */
+ arc_config_t *); /* Component */
+
+ arc_config_t *(*get_component)( /* GetComponent 16 */
+ char *); /* Path */
+
+ arc_status_t (*save_config)(void); /* SaveConfiguration 17 */
+
+ arc_sid_t *(*get_system_id)(void); /* GetSystemId 18 */
+
+ arc_mem_t *(*get_memory_descriptor)( /* GetMemoryDescriptor 19 */
+ arc_mem_t *); /* MemoryDescriptor */
+
+#ifdef arc
+ void (*signal)( /* Signal 20 */
+ u_int32_t, /* Signal number */
+/**/ caddr_t); /* Handler */
+#endif
+#ifdef sgi
+ void *unused;
+#endif
+
+ arc_time_t *(*get_time)(void); /* GetTime 21 */
+
+ u_int32_t (*get_relative_time)(void); /* GetRelativeTime 22 */
+
+ arc_status_t (*get_dir_entry)( /* GetDirectoryEntry 23 */
+ u_int32_t, /* FileId */
+ arc_dirent_t *, /* Directory entry */
+ u_int32_t, /* Length */
+ u_int32_t *); /* Count */
+
+ arc_status_t (*open)( /* Open 24 */
+ char *, /* Path */
+ arc_open_mode_t, /* Open mode */
+ u_int32_t *); /* FileId */
+
+ arc_status_t (*close)( /* Close 25 */
+ u_int32_t); /* FileId */
+
+ arc_status_t (*read)( /* Read 26 */
+ u_int32_t, /* FileId */
+ caddr_t, /* Buffer */
+ u_int32_t, /* Length */
+ u_int32_t *); /* Count */
+
+ arc_status_t (*get_read_status)( /* GetReadStatus 27 */
+ u_int32_t); /* FileId */
+
+ arc_status_t (*write)( /* Write 28 */
+ u_int32_t, /* FileId */
+ caddr_t, /* Buffer */
+ u_int32_t, /* Length */
+ u_int32_t *); /* Count */
+
Home |
Main Index |
Thread Index |
Old Index