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