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/arm32/riscpc pullup 1.28->1.29 (Mark Brinicomb...
details: https://anonhg.NetBSD.org/src/rev/9a227a2ab95f
branches: netbsd-1-4
changeset: 468824:9a227a2ab95f
user: perry <perry%NetBSD.org@localhost>
date: Mon Jun 21 16:45:25 1999 +0000
description:
pullup 1.28->1.29 (Mark Brinicombe): fix bootstrap problems for ARM610, ARM710
diffstat:
sys/arch/arm32/riscpc/rpc_machdep.c | 41 ++++++++++++++++++++++++++++--------
1 files changed, 32 insertions(+), 9 deletions(-)
diffs (95 lines):
diff -r c6798bebe470 -r 9a227a2ab95f sys/arch/arm32/riscpc/rpc_machdep.c
--- a/sys/arch/arm32/riscpc/rpc_machdep.c Mon Jun 21 16:41:48 1999 +0000
+++ b/sys/arch/arm32/riscpc/rpc_machdep.c Mon Jun 21 16:45:25 1999 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: rpc_machdep.c,v 1.26.2.1 1999/04/06 21:10:19 mark Exp $ */
+/* $NetBSD: rpc_machdep.c,v 1.26.2.2 1999/06/21 16:45:25 perry Exp $ */
/*
* Copyright (c) 1994-1998 Mark Brinicombe.
@@ -584,14 +584,24 @@
bootconfig.scratchphysicalbase + 0x1000);
/* Print some debugging info */
-
-/*
- printf("page tables look like this ...\n");
+/* printf("page tables look like this ...\n");
printf("V0x00000000 - %08x\n", ReadWord(l1pagetable + 0x0000));
+ printf("V0x00100000 - %08x\n", ReadWord(l1pagetable + 0x0004));
+ printf("V0x00200000 - %08x\n", ReadWord(l1pagetable + 0x0008));
+ printf("V0x00300000 - %08x\n", ReadWord(l1pagetable + 0x000C));
printf("V0x03500000 - %08x\n", ReadWord(l1pagetable + 0x00d4));
printf("V0x00200000 - %08x\n", ReadWord(l1pagetable + 0x0080));
+ printf("V0xf0000000 - %08x\n", ReadWord(l1pagetable + 0x3c00));
+ printf("V0xf0100000 - %08x\n", ReadWord(l1pagetable + 0x3c04));
+ printf("V0xf0200000 - %08x\n", ReadWord(l1pagetable + 0x3c08));
+ printf("V0xf0300000 - %08x\n", ReadWord(l1pagetable + 0x3c0C));
+ printf("V0xf1000000 - %08x\n", ReadWord(l1pagetable + 0x3c40));
+ printf("V0xf2000000 - %08x\n", ReadWord(l1pagetable + 0x3c80));
+ printf("V0xf3000000 - %08x\n", ReadWord(l1pagetable + 0x3cc0));
printf("V0xf4000000 - %08x\n", ReadWord(l1pagetable + 0x3d00));
- printf("V0xf0000000 - %08x\n", ReadWord(l1pagetable + 0x3c00));
+ printf("V0xf5000000 - %08x\n", ReadWord(l1pagetable + 0x3d40));
+ printf("V0xf6000000 - %08x\n", ReadWord(l1pagetable + 0x3d80));
+ printf("V0xf7000000 - %08x\n", ReadWord(l1pagetable + 0x3dc0));
printf("page dir = P%08x\n", bootconfig.scratchphysicalbase + 0x4000);
printf("l1= V%08x\n", l1pagetable);
*/
@@ -867,9 +877,20 @@
l2pagetable = kernel_pt_table[KERNEL_PT_KERNEL] - physical_start;
if (N_GETMAGIC(kernexec[0]) == ZMAGIC) {
+ /*
+ * This is a work around for a recent problem that occurred
+ * with ARM 610 processors and some ARM 710 processors
+ * Other ARM 710 and StrongARM processors don't have a problem.
+ */
+#if defined(CPU_ARM6) || defined(CPU_ARM7)
+ logical = map_chunk(0, l2pagetable, KERNEL_TEXT_BASE,
+ physical_start, kernexec->a_text,
+ AP_KRW, PT_CACHEABLE);
+#else /* CPU_ARM6 || CPU_ARM7 */
logical = map_chunk(0, l2pagetable, KERNEL_TEXT_BASE,
physical_start, kernexec->a_text,
AP_KR, PT_CACHEABLE);
+#endif /* CPU_ARM6 || CPU_ARM7 */
logical += map_chunk(0, l2pagetable, KERNEL_TEXT_BASE + logical,
physical_start + logical, kerneldatasize - kernexec->a_text,
AP_KRW, PT_CACHEABLE);
@@ -954,21 +975,23 @@
map_section(l1pagetable, IO_BASE, IO_HW_BASE, 0);
/* Bit more debugging info */
-
/* printf("page tables look like this ...\n");
printf("V0x00000000 - %08x\n", ReadWord(l1pagetable + 0x0000));
printf("V0x03200000 - %08x\n", ReadWord(l1pagetable + 0x00c8));
printf("V0x03500000 - %08x\n", ReadWord(l1pagetable + 0x00d4));
printf("V0xf0000000 - %08x\n", ReadWord(l1pagetable + 0x3c00));
+ printf("V0xf0100000 - %08x\n", ReadWord(l1pagetable + 0x3c04));
printf("V0xf1000000 - %08x\n", ReadWord(l1pagetable + 0x3c40));
printf("V0xf2000000 - %08x\n", ReadWord(l1pagetable + 0x3c80));
printf("V0xf3000000 - %08x\n", ReadWord(l1pagetable + 0x3cc0));
printf("V0xf3300000 - %08x\n", ReadWord(l1pagetable + 0x3ccc));
printf("V0xf4000000 - %08x\n", ReadWord(l1pagetable + 0x3d00));
+ printf("V0xf5000000 - %08x\n", ReadWord(l1pagetable + 0x3d40));
printf("V0xf6000000 - %08x\n", ReadWord(l1pagetable + 0x3d80));
+ printf("V0xf7000000 - %08x\n", ReadWord(l1pagetable + 0x3dc0));
+ printf("V0xefc00000 - %08x\n", ReadWord(l1pagetable + 0x3bf8));
+ printf("V0xef800000 - %08x\n", ReadWord(l1pagetable + 0x3bfc));
*/
-/* printf("V0xefc00000 - %08x\n", ReadWord(l1pagetable + 0x3bf8));
- printf("V0xef800000 - %08x\n", ReadWord(l1pagetable + 0x3bfc));*/
/*
* Now we have the real page tables in place so we can switch to them.
@@ -1001,7 +1024,7 @@
* may have just been remapped and thus the cache could be out
* of sync. A re-clean after the switch will cure this.
* After booting there are no gross reloations of the kernel thus
- * this problem wil not occur after initarm().
+ * this problem will not occur after initarm().
*/
cpu_cache_cleanID();
Home |
Main Index |
Thread Index |
Old Index