Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/alpha/stand add support for 'standalone programs', ...
details: https://anonhg.NetBSD.org/src/rev/3376017baee6
branches: trunk
changeset: 471771:3376017baee6
user: cgd <cgd%NetBSD.org@localhost>
date: Sun Apr 11 03:36:21 1999 +0000
description:
add support for 'standalone programs', like kernels but not the kernel.
diffstat:
sys/arch/alpha/stand/Makefile.bootprogs | 10 +++-
sys/arch/alpha/stand/common/start.S | 78 ++++++++++++++++++++++++++++++--
2 files changed, 82 insertions(+), 6 deletions(-)
diffs (138 lines):
diff -r 35c2c8392718 -r 3376017baee6 sys/arch/alpha/stand/Makefile.bootprogs
--- a/sys/arch/alpha/stand/Makefile.bootprogs Sun Apr 11 02:51:21 1999 +0000
+++ b/sys/arch/alpha/stand/Makefile.bootprogs Sun Apr 11 03:36:21 1999 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.bootprogs,v 1.12 1999/04/05 22:03:48 cgd Exp $
+# $NetBSD: Makefile.bootprogs,v 1.13 1999/04/11 03:36:21 cgd Exp $
S= ${.CURDIR}/../../../..
@@ -81,6 +81,12 @@
#SECONDARY_HEAP_START= right after secondary bss
SECONDARY_HEAP_LIMIT= (${REGION1_START} + ${REGION1_SIZE})
+# standalone programs are like kernels. They load at
+# 0xfffffc0000300000 and can use the rest of memory.
+
+STANDPROG_LOAD_ADDRESS= 0xfffffc0000300000
+
+
FILE_FORMAT_CPPFLAGS= -DALPHA_BOOT_ECOFF -DALPHA_BOOT_ELF
UNIFIED_CPPFLAGS= -DUNIFIED_BOOTBLOCK \
@@ -97,6 +103,8 @@
-DHEAP_LIMIT="${SECONDARY_HEAP_LIMIT}" \
${FILE_FORMAT_CPPFLAGS}
+STANDPROG_CPPFLAGS= -DSTANDALONE_PROGRAM
+
.include <bsd.prog.mk>
### find out what to use for libkern
diff -r 35c2c8392718 -r 3376017baee6 sys/arch/alpha/stand/common/start.S
--- a/sys/arch/alpha/stand/common/start.S Sun Apr 11 02:51:21 1999 +0000
+++ b/sys/arch/alpha/stand/common/start.S Sun Apr 11 03:36:21 1999 +0000
@@ -1,4 +1,34 @@
-/* $NetBSD: start.S,v 1.11 1999/04/02 03:11:57 cgd Exp $ */
+/* $NetBSD: start.S,v 1.12 1999/04/11 03:36:21 cgd Exp $ */
+
+/*
+ * Copyright (c) 1999 Christopher G. Demetriou. 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. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Christopher G. Demetriou
+ * for the NetBSD Project.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
/*
* Mach Operating System
@@ -32,11 +62,27 @@
* start --
* Entry point for boot/standalone programs.
*
- * Arguments:
- * a0 long (first free physical page)
+ * Unified and Primary Bootstrap arguments:
+ * None.
+ *
+ * Secondary Bootstrap arguments:
+ * a0 first free physical page
+ *
+ * Standalone program arguments:
*
- * This is where the prom comes to. Leaves all exception and interrupts
- * to prom, runs off prom's stack too. No return values.
+ * a0 first free physical page
+ * a1 page table base register (PTBR)
+ * a2 bootinfo magic number
+ * a3 pointer to the bootinfo structure
+ * a4 bootinfo version number
+ *
+ * All bootstrap and standalone programs leave exception and interrupt
+ * handling to the firmware, and run from the firmware-provided stack.
+ * To return to the firmware, these programs simply invoke the 'halt'
+ * PALcode operation.
+ *
+ * Bootstrap programs have to clear their own BSS. Standalone programs
+ * have their BSS cleared by the bootstraps.
*/
.text
.set noreorder /* don't reorder instructions */
@@ -48,6 +94,26 @@
Lstartgp:
LDGP(pv)
+#if defined(STANDALONE_PROGRAM)
+
+ /*
+ * save the arguments, invoke init_prom_calls() to set up console
+ * callbacks and output, then restore the arguments.
+ */
+ mov a0, s0
+ mov a1, s1
+ mov a2, s2
+ mov a3, s3
+ mov a4, s4
+ CALL(init_prom_calls)
+ mov s0, a0
+ mov s1, a1
+ mov s2, a2
+ mov s3, a3
+ mov s4, a4
+
+#else /* defined(STANDALONE_PROGRAM) */
+
#if !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK)
lda sp,start /* start stack below text */
lda sp,-ENTRY_FRAME(sp)
@@ -62,6 +128,8 @@
or s0,zero,a0
#endif /* !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK) */
+#endif /* defined(STANDALONE_PROGRAM) */
+
CALL(main) /* transfer to C */
XLEAF(_rtt, 0)
Home |
Main Index |
Thread Index |
Old Index