Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-1-4]: src/sys/arch/alpha/stand/common unrevert the changes made l...
details: https://anonhg.NetBSD.org/src/rev/1c1d29e6c5a4
branches: netbsd-1-4
changeset: 468020:1c1d29e6c5a4
user: cgd <cgd%NetBSD.org@localhost>
date: Fri Apr 02 03:11:58 1999 +0000
description:
unrevert the changes made last night, now that 'installboot' has
had a few bugs fixed that let the problem slip in, and since bootxx's
Makefile now goes out of its way to satisfy installboot's undocumented
and totally unreasonable assumptions about the bootxx file it's operating
on. No point in fixing the assumptions, because sooner rather than later
this incarnation of installboot is going to die.
diffstat:
sys/arch/alpha/stand/common/prom.c | 136 ++++++++++++++++++++++++++++++++++++
sys/arch/alpha/stand/common/start.S | 70 ++++++++++++++++++
2 files changed, 206 insertions(+), 0 deletions(-)
diffs (214 lines):
diff -r 6159369a8905 -r 1c1d29e6c5a4 sys/arch/alpha/stand/common/prom.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/alpha/stand/common/prom.c Fri Apr 02 03:11:58 1999 +0000
@@ -0,0 +1,136 @@
+/* $NetBSD: prom.c,v 1.10.2.2 1999/04/02 03:11:58 cgd Exp $ */
+
+/*
+ * Mach Operating System
+ * Copyright (c) 1992 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution%CS.CMU.EDU@localhost
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+
+#include <sys/types.h>
+
+#include <machine/prom.h>
+#include <machine/rpb.h>
+
+#include "common.h"
+
+int console;
+
+#if !defined(NO_GETCHAR) || !defined(NO_PUTCHAR_HALT)
+static int test_getchar(int *);
+#endif
+static void putonechar(int c);
+
+void
+init_prom_calls()
+{
+ extern struct prom_vec prom_dispatch_v;
+ struct rpb *r;
+ struct crb *c;
+ char buf[4];
+
+ r = (struct rpb *)HWRPB_ADDR;
+ c = (struct crb *)((u_int8_t *)r + r->rpb_crb_off);
+
+ prom_dispatch_v.routine_arg = c->crb_v_dispatch;
+ prom_dispatch_v.routine = c->crb_v_dispatch->entry_va;
+
+ /* Look for console tty. */
+ prom_getenv(PROM_E_TTY_DEV, buf, 4);
+ console = buf[0] - '0';
+}
+
+#if !defined(NO_GETCHAR) || !defined(NO_PUTCHAR_HALT)
+static int
+test_getchar(xc)
+ int *xc;
+{
+ prom_return_t ret;
+
+ ret.bits = prom_dispatch(PROM_R_GETC, console);
+ *xc = ret.u.retval;
+ return ret.u.status == 0 || ret.u.status == 1;
+}
+#endif
+
+#if !defined(NO_GETCHAR)
+int
+getchar()
+{
+ int c;
+
+ for (;;) {
+ if (test_getchar(&c)) {
+ if (c == 3)
+ halt();
+ return c;
+ }
+ }
+}
+#endif
+
+static void
+putonechar(c)
+ int c;
+{
+ prom_return_t ret;
+ char cbuf = c;
+
+ do {
+ ret.bits = prom_dispatch(PROM_R_PUTS, console, &cbuf, 1);
+ } while ((ret.u.retval & 1) == 0);
+}
+
+void
+putchar(c)
+ int c;
+{
+#if !defined(NO_PUTCHAR_HALT)
+ int typed_c;
+#endif
+
+ if (c == '\r' || c == '\n') {
+ putonechar('\r');
+ c = '\n';
+ }
+ putonechar(c);
+#if !defined(NO_PUTCHAR_HALT)
+ if (test_getchar(&typed_c))
+ if (typed_c == 3)
+ halt();
+#endif
+}
+
+int
+prom_getenv(id, buf, len)
+ int id, len;
+ char *buf;
+{
+ prom_return_t ret;
+
+ ret.bits = prom_dispatch(PROM_R_GETENV, id, buf, len-1);
+ if (ret.u.status & 0x4)
+ ret.u.retval = 0;
+ buf[ret.u.retval] = '\0';
+
+ return (ret.u.retval);
+}
diff -r 6159369a8905 -r 1c1d29e6c5a4 sys/arch/alpha/stand/common/start.S
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/alpha/stand/common/start.S Fri Apr 02 03:11:58 1999 +0000
@@ -0,0 +1,70 @@
+/* $NetBSD: start.S,v 1.11.2.2 1999/04/02 03:11:58 cgd Exp $ */
+
+/*
+ * Mach Operating System
+ * Copyright (c) 1992 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution%CS.CMU.EDU@localhost
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+
+#include "include/asm.h"
+
+/*
+ * start --
+ * Entry point for boot/standalone programs.
+ *
+ * Arguments:
+ * a0 long (first free physical page)
+ *
+ * This is where the prom comes to. Leaves all exception and interrupts
+ * to prom, runs off prom's stack too. No return values.
+ */
+ .text
+ .set noreorder /* don't reorder instructions */
+
+#define ENTRY_FRAME 32
+
+NESTED(start, 1, ENTRY_FRAME, ra, 0, 0)
+ br pv,Lstartgp
+Lstartgp:
+ LDGP(pv)
+
+#if !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK)
+ lda sp,start /* start stack below text */
+ lda sp,-ENTRY_FRAME(sp)
+
+ or a0,zero,s0
+#endif /* !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK) */
+ lda a0,_edata
+ lda a1,_end
+ subq a1,a0,a1
+ CALL(bzero)
+#if !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK)
+ or s0,zero,a0
+#endif /* !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK) */
+
+ CALL(main) /* transfer to C */
+
+XLEAF(_rtt, 0)
+XLEAF(halt, 0)
+ call_pal PAL_halt /* halt if we ever return */
+END(start)
Home |
Main Index |
Thread Index |
Old Index