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