Add the basic framework for the DEC KN7AA ("Ruby") systems -- DEC 7000

and DEC 10000.

This is a work-in-progress, but this should be sufficient for the system
to boot, using the PROM console routines (and then proceed to not find any
devices because we don't yet support the "Laser System Bus").
This commit is contained in:
thorpej 2024-03-02 20:15:33 +00:00
parent e6333d4801
commit 01e56b5ebb
6 changed files with 106 additions and 10 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: cpuconf.c,v 1.37 2019/04/08 00:47:21 thorpej Exp $ */
/* $NetBSD: cpuconf.c,v 1.38 2024/03/02 20:15:33 thorpej Exp $ */
/*-
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: cpuconf.c,v 1.37 2019/04/08 00:47:21 thorpej Exp $");
__KERNEL_RCSID(0, "$NetBSD: cpuconf.c,v 1.38 2024/03/02 20:15:33 thorpej Exp $");
#include <sys/param.h>
#include <sys/device.h>
@ -68,6 +68,13 @@ __KERNEL_RCSID(0, "$NetBSD: cpuconf.c,v 1.37 2019/04/08 00:47:21 thorpej Exp $")
#include <machine/cpuconf.h>
#include <machine/rpb.h>
#include "opt_dec_kn7aa.h"
#ifdef DEC_KN7AA
extern void dec_kn7aa_init(void);
#else
#define dec_kn7aa_init platform_not_configured
#endif
#include "opt_dec_3000_500.h"
#ifdef DEC_3000_500
extern void dec_3000_500_init(void);
@ -208,7 +215,7 @@ extern void dec_2000_300_init(void);
static const struct cpuinit cpuinit[] = {
cpu_notsupp(ST_ADU, "Alpha Demo Unit"),
cpu_notsupp(ST_DEC_4000, "DEC 4000 (``Cobra'')"),
cpu_notsupp(ST_DEC_7000, "DEC 7000 (``Ruby'')"),
cpu_init(ST_DEC_7000, dec_kn7aa_init, "DEC_KN7AA"),
cpu_init(ST_DEC_3000_500, dec_3000_500_init, "DEC_3000_500"),
cpu_init(ST_DEC_2000_300, dec_2000_300_init, "DEC_2000_300"),
cpu_init(ST_DEC_3000_300, dec_3000_300_init, "DEC_3000_300"),

View File

@ -0,0 +1,84 @@
/* $NetBSD: dec_kn7aa.c,v 1.1 2024/03/02 20:15:33 thorpej Exp $ */
/*-
* Copyright (c) 2024 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.
*
* 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/cdefs.h> /* RCS ID & Copyright macro defns */
__KERNEL_RCSID(0, "$NetBSD: dec_kn7aa.c,v 1.1 2024/03/02 20:15:33 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/device.h>
#include <sys/conf.h>
#include <dev/cons.h>
#include <machine/rpb.h>
#include <machine/autoconf.h>
#include <machine/cpuconf.h>
void dec_kn7aa_init(void);
void dec_kn7aa_cons_init(void);
static void dec_kn7aa_device_register(device_t, void *);
const struct alpha_variation_table dec_kn7aa_variations[] = {
{ 0, "DEC 7000" },
{ 1, "DEC 10000" },
{ 0, NULL },
};
void
dec_kn7aa_init(void)
{
uint64_t variation;
platform.family = "KN7AA (\"Ruby\")";
if ((platform.model = alpha_dsr_sysname()) == NULL) {
variation = hwrpb->rpb_variation & SV_ST_MASK;
if ((platform.model = alpha_variation_name(variation,
dec_kn7aa_variations)) == NULL)
platform.model = alpha_unknown_sysname();
}
platform.iobus = "lsb";
platform.cons_init = dec_kn7aa_cons_init;
platform.device_register = dec_kn7aa_device_register;
}
void
dec_kn7aa_cons_init(void)
{
}
static void
dec_kn7aa_device_register(device_t dev, void *aux)
{
}

View File

@ -1,4 +1,4 @@
# $NetBSD: GENERIC,v 1.419 2023/12/17 18:48:53 andvar Exp $
# $NetBSD: GENERIC,v 1.420 2024/03/02 20:15:33 thorpej Exp $
#
# This machine description file is used to generate the default NetBSD
# kernel.
@ -19,7 +19,7 @@ include "arch/alpha/conf/std.alpha"
options INCLUDE_CONFIG_FILE # embed config file in kernel binary
ident "GENERIC-$Revision: 1.419 $"
ident "GENERIC-$Revision: 1.420 $"
maxusers 32
@ -34,6 +34,7 @@ options DEC_AXPPCI_33 # NoName: AXPpci33, Multia, etc.
options DEC_EB164 # EB164: AlphaPC 164
options DEC_EB64PLUS # EB64+: AlphaPC 64, etc.
options DEC_KN20AA # KN20AA: AlphaStation 500 and 600
options DEC_KN7AA # KN7AA: DEC 7000 and 10000
options DEC_KN8AE # KN8AE: AlphaServer 8200 and 8400
options DEC_KN300 # KN300: AlphaServer 4100 and 1200
options DEC_550 # Miata: Digital Personal Workstation

View File

@ -1,4 +1,4 @@
# $NetBSD: INSTALL,v 1.118 2021/07/23 14:38:58 thorpej Exp $
# $NetBSD: INSTALL,v 1.119 2024/03/02 20:15:33 thorpej Exp $
#
# Alpha INSTALL kernel.
@ -29,6 +29,7 @@ options DEC_AXPPCI_33 # NoName: AXPpci33, Multia, etc.
options DEC_EB164 # EB164: AlphaPC 164
options DEC_EB64PLUS # EB64+: AlphaPC 64, etc.
options DEC_KN20AA # KN20AA: AlphaStation 500 and 600
options DEC_KN7AA # KN7AA: DEC 7000 and 10000
options DEC_KN8AE # KN8AE: AlphaServer 8200 and 8400
options DEC_KN300 # KN300: AlphaServer 4100 and 1200
options DEC_550 # Miata: Digital Personal Workstation

View File

@ -1,4 +1,4 @@
# $NetBSD: files.alpha,v 1.195 2024/03/02 19:57:57 thorpej Exp $
# $NetBSD: files.alpha,v 1.196 2024/03/02 20:15:33 thorpej Exp $
#
# alpha-specific configuration info
@ -19,6 +19,7 @@ defflag DEC_AXPPCI_33 # NoName: AXPpci33, etc.
defflag DEC_EB164 # EB164: AlphaPC 164
defflag DEC_EB64PLUS # EB64+: AlphaPC 64, etc.
defflag DEC_KN20AA # KN20AA: AlphaStation 500 and 600
defflag DEC_KN7AA # KN7AA: DEC 7000 and 10000
defflag DEC_KN8AE # KN8AE: AlphaServer 8200 and 8400
defflag DEC_KN300 # KN300: AlphaServer 4X00
defflag DEC_1000 # Mikasa etc: AlphaServer 1000
@ -416,6 +417,7 @@ file arch/alpha/alpha/dec_eb164.c dec_eb164
file arch/alpha/alpha/dec_eb64plus.c dec_eb64plus
file arch/alpha/alpha/dec_eb66.c dec_eb66
file arch/alpha/alpha/dec_kn20aa.c dec_kn20aa
file arch/alpha/alpha/dec_kn7aa.c dec_kn7aa
file arch/alpha/alpha/dec_kn8ae.c dec_kn8ae
file arch/alpha/alpha/dec_kn300.c dec_kn300
file arch/alpha/alpha/api_up1000.c api_up1000

View File

@ -1,4 +1,4 @@
/* $NetBSD: prom.h,v 1.16 2020/10/03 17:31:46 thorpej Exp $ */
/* $NetBSD: prom.h,v 1.17 2024/03/02 20:15:33 thorpej Exp $ */
/*
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@ -121,10 +121,11 @@ void hwrpb_restart_setup(void);
#ifdef _KERNEL
#ifdef _KERNEL_OPT
#include "opt_dec_kn7aa.h"
#include "opt_dec_kn8ae.h"
#if defined(DEC_KN8AE)
#define _PROM_MAY_USE_PROM_CONSOLE
#if defined(DEC_KN7AA) || defined(DEC_KN8AE)
#define _PROM_MAY_USE_PROM_CONSOLE /* XXX */
#endif /* DEC_KN8AE */
#endif /* _KERNEL_OPT */