Module Name:    src
Committed By:   phx
Date:           Fri Mar  5 17:56:46 UTC 2010

Modified Files:
        src/sys/arch/amigappc/amigappc: machdep.c

Log Message:
A1200 (BPPC) BAT init.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/amigappc/amigappc/machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/amigappc/amigappc/machdep.c
diff -u src/sys/arch/amigappc/amigappc/machdep.c:1.41 src/sys/arch/amigappc/amigappc/machdep.c:1.42
--- src/sys/arch/amigappc/amigappc/machdep.c:1.41	Fri Feb  5 12:05:25 2010
+++ src/sys/arch/amigappc/amigappc/machdep.c	Fri Mar  5 17:56:46 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.41 2010/02/05 12:05:25 phx Exp $ */
+/* $NetBSD: machdep.c,v 1.42 2010/03/05 17:56:46 phx Exp $ */
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.41 2010/02/05 12:05:25 phx Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.42 2010/03/05 17:56:46 phx Exp $");
 
 #include "opt_ddb.h"
 #include "opt_ipkdb.h"
@@ -547,18 +547,30 @@
 
 	/*
 	 * Initialize BAT tables.
+	 * The CSPPC RAM (A3000/A4000) always starts at 0x08000000 and is
+	 * up to 128MB big.
+	 * The BPPC RAM (A1200) can be up to 256MB and may start at nearly
+	 * any address between 0x40000000 and 0x80000000 depending on which
+	 * RAM module of which size was inserted into which bank:
+	 * The RAM module in bank 1 is located from 0x?8000000 downwards.
+	 * The RAM module in bank 2 is located from 0x?8000000 upwards.
+	 * Whether '?' is 4, 5, 6 or 7 probably depends on the size.
+	 * So we have to use the 'startkernel' symbol for BAT-mapping
+	 * our RAM.
 	 */
-	if (!is_a1200()) {
+	if (is_a1200()) {
+		amigappc_batinit(0x00000000, BAT_BL_16M, BAT_I|BAT_G,
+		    (startkernel & 0xf0000000), BAT_BL_256M, 0,
+		    0xfff00000, BAT_BL_512K, 0,
+		    ~0);
+	} else {
 		/* A3000 or A4000 */
 		amigappc_batinit(0x00000000, BAT_BL_16M, BAT_I|BAT_G,
-		    0x08000000, BAT_BL_128M, 0,
+		    (startkernel & 0xf8000000), BAT_BL_128M, 0,
 		    0xfff00000, BAT_BL_512K, 0,
 		    0x40000000, BAT_BL_256M, BAT_I|BAT_G,
 		    ~0);
 	}
-	else {
-		panic("A1200 BPPC batinit?");
-	}
 
 	/*
 	 * Set up trap vectors and interrupt handler

Reply via email to