Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/hpcmips hpcmips support of kloader.



details:   https://anonhg.NetBSD.org/src/rev/be20e3896b91
branches:  trunk
changeset: 521386:be20e3896b91
user:      uch <uch%NetBSD.org@localhost>
date:      Tue Jan 29 18:47:25 2002 +0000

description:
hpcmips support of kloader.

diffstat:

 sys/arch/hpcmips/conf/files.hpcmips        |   26 +++-
 sys/arch/hpcmips/hpcmips/kloader_machdep.c |   70 +++++++++++++++
 sys/arch/hpcmips/hpcmips/kloader_tx39.S    |  131 +++++++++++++++++++++++++++++
 sys/arch/hpcmips/hpcmips/kloader_vr41.S    |  122 +++++++++++++++++++++++++++
 sys/arch/hpcmips/hpcmips/machdep.c         |   40 ++++++--
 sys/arch/hpcmips/include/kloader.h         |   40 ++++++++
 6 files changed, 410 insertions(+), 19 deletions(-)

diffs (truncated from 541 to 300 lines):

diff -r 7a9a4b6df4d4 -r be20e3896b91 sys/arch/hpcmips/conf/files.hpcmips
--- a/sys/arch/hpcmips/conf/files.hpcmips       Tue Jan 29 18:46:11 2002 +0000
+++ b/sys/arch/hpcmips/conf/files.hpcmips       Tue Jan 29 18:47:25 2002 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.hpcmips,v 1.68 2002/01/27 14:18:11 takemura Exp $
+#      $NetBSD: files.hpcmips,v 1.69 2002/01/29 18:47:29 uch Exp $
 
 # maxpartitions must be first item in files.${ARCH}.
 maxpartitions 8
@@ -59,9 +59,15 @@
 file   arch/hpcmips/hpcmips/interrupt.c
 file   arch/hpcmips/hpcmips/machdep.c
 file   arch/hpcmips/hpcmips/mainbus.c
-file   arch/hpcmips/hpcmips/bitdisp.c
 file   arch/hpcmips/hpcmips/procfs_machdep.c   procfs
 
+file   arch/hpc/hpc/kloader.c
+file   arch/hpcmips/hpcmips/kloader_machdep.c
+file   arch/hpcmips/hpcmips/kloader_vr41.S     vr41xx
+file   arch/hpcmips/hpcmips/kloader_tx39.S     tx39xx
+defflag        debug_kloader.h                 KLOADER_DEBUG
+defparam opt_kloader_kernel_path.h     KLOADER_KERNEL_PATH
+
 #
 # H/PC Platform common files.
 #
@@ -72,6 +78,11 @@
 include "dev/hpc/files.hpckbd"
 include "dev/hpc/files.hpctp"
 
+#
+# Debug utility
+#
+file   arch/hpc/hpc/debug_subr.c
+
 # Console autoconfiguration code: selects between a framebuffers
 file   dev/cons.c
 
@@ -202,13 +213,12 @@
 #
 #      TOSHIBA TX3912/3922
 #
-defflag                        TX39_DEBUG
 defflag                        TX39_WATCHDOGTIMER
-defflag                        TX39ICUDEBUG
-defflag                        TX39CLKDEBUG
-defflag                        TX39BIUDEBUG
-defflag                        TX39POWERDEBUG
-defflag                        TX39UARTDEBUG
+defflag                        TX39ICU_DEBUG
+defflag                        TX39CLOCK_DEBUG
+defflag                        TX39BIU_DEBUG
+defflag                        TX39POWER_DEBUG
+defflag                        TX39UART_DEBUG
 defflag                        USE_POLL
 
 device txsim { }
diff -r 7a9a4b6df4d4 -r be20e3896b91 sys/arch/hpcmips/hpcmips/kloader_machdep.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/hpcmips/hpcmips/kloader_machdep.c        Tue Jan 29 18:47:25 2002 +0000
@@ -0,0 +1,70 @@
+/*     $NetBSD: kloader_machdep.c,v 1.1 2002/01/29 18:47:26 uch Exp $  */
+
+/*-
+ * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
+ * 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 the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation 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 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/param.h>
+#include <sys/systm.h>
+
+#include <mips/cache.h>
+#include <machine/kloader.h>
+
+void kloader_mips_jump(kloader_bootfunc_t *, vaddr_t,
+    struct kloader_bootinfo *, struct kloader_page_tag *);
+extern kloader_bootfunc_t kloader_vr_boot;
+extern kloader_bootfunc_t kloader_tx_boot;
+
+struct kloader_ops kloader_mips_ops = {
+       .jump = kloader_mips_jump,
+       .boot = 0
+};
+
+void
+kloader_reboot_setup(const char *filename)
+{
+
+       kloader_mips_ops.boot = CPUISMIPS3 ? kloader_vr_boot : kloader_tx_boot;
+
+       __kloader_reboot_setup(&kloader_mips_ops, filename);
+}
+
+void
+kloader_mips_jump(kloader_bootfunc_t func, vaddr_t sp,
+    struct kloader_bootinfo *info, struct kloader_page_tag *tag)
+{
+
+       mips_icache_sync_all();
+
+       (*func)(info, tag);     /* 2nd-bootloader don't use stack */
+       /* NOTREACHED */
+}
diff -r 7a9a4b6df4d4 -r be20e3896b91 sys/arch/hpcmips/hpcmips/kloader_tx39.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/hpcmips/hpcmips/kloader_tx39.S   Tue Jan 29 18:47:25 2002 +0000
@@ -0,0 +1,131 @@
+/*     $NetBSD: kloader_tx39.S,v 1.1 2002/01/29 18:47:26 uch Exp $     */
+
+/*-
+ * Copyright (c) 2002 The NetBSD Foundation, Inc.
+ * 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 the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation 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 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 <mips/asm.h>
+#include <mips/cpuregs.h>
+
+       .set    noreorder
+       .text
+/*
+ * void kloader_tx_boot(struct kloader_bootinfo *kbi, kloader_page_tag *p)
+ *     must be PIC.
+ */
+EXPORT(kloader_tx_boot)
+LEAF_NOPROFILE(kloader_tx_boot)
+       /*
+        * 1. load kernel image.
+        */
+       move    t6, a1          # p
+1:
+       beqz    t6, 3f
+        move   t7, t6
+       lw      t6, 0(t7)       # p = next
+       lw      t0, 4(t7)       # src
+       lw      t4, 8(t7)       # dst
+       lw      t2, 12(t7)      # sz
+       addu    t5, t4, t2      # dst + sz
+2:
+       lw      t3, 0(t0)       # copy
+       sw      t3, 0(t4)
+       addiu   t4, t4, 4
+       addiu   t0, t0, 4
+       bltu    t4, t5, 2b
+        nop
+       b       1b
+        nop
+3:
+       nop
+
+       /* 
+        * 2. Cache flush
+        */
+       li      t1, 16384
+       li      t2, 8192
+
+       /* Disable I-cache */
+       li      t5, ~0x00000020
+       mfc0    t6, $3
+       and     t5, t5, t6
+       nop
+       mtc0    t5, $3
+
+       /* Stop streaming */
+       beq     zero, zero, 1f
+        nop
+1:
+       /* Flush I-cache */
+       li      t0, 0x80000000
+       addu    t1, t0, t1
+       subu    t1, t1, 128
+2:
+       .set push
+       .set mips3
+       cache   0x0, 0($0)
+       cache   0x0, 16(t0)
+       cache   0x0, 32(t0)
+       cache   0x0, 48(t0)
+       cache   0x0, 64(t0)
+       cache   0x0, 80(t0)
+       cache   0x0, 96(t0)
+       cache   0x0, 112(t0)
+       .set pop
+       bne     t0, t1, 2b
+        addu   t0, t0, 128
+
+       /* Flush D-cache */
+       li      t0, 0x80000000
+       addu    t1, t0, t2
+
+3:
+       lw      t2, 0(t0)
+       bne     t1, t0, 3b
+        addiu  t0, t0, 4
+
+       /* Enable I-cache */
+       nop
+       mtc0    t6, $3
+       nop
+
+       /* 
+        * 3. jump to kernel entry 
+        */
+       move    t0, a0          
+       lw      t1, 0(a0)       # kbi->entry
+       lw      a0, 4(t0)       # kbi->argc
+       lw      a1, 8(t0)       # kbi->argv
+       j       t1
+        addiu  a2, t0, 12      # &kbi->bootinfo
+       /* NOTREACHED */
+END(kloader_tx_boot)
diff -r 7a9a4b6df4d4 -r be20e3896b91 sys/arch/hpcmips/hpcmips/kloader_vr41.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/hpcmips/hpcmips/kloader_vr41.S   Tue Jan 29 18:47:25 2002 +0000
@@ -0,0 +1,122 @@
+/*     $NetBSD: kloader_vr41.S,v 1.1 2002/01/29 18:47:25 uch Exp $     */
+
+/*-
+ * Copyright (c) 2002 The NetBSD Foundation, Inc.
+ * 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 the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation 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 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



Home | Main Index | Thread Index | Old Index