Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Apr 2009 17:04:01 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r191362 - head/sys/powerpc/booke
Message-ID:  <200904211704.n3LH41DN016572@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Tue Apr 21 17:04:01 2009
New Revision: 191362
URL: http://svn.freebsd.org/changeset/base/191362

Log:
  o  Properly set ksym_start & ksym_end when options DDB is set.
     Include opt_ddb.h for that. Now you can actually boot with
     -d and set breakpoints using function names.
  o  Make sure to include opt_msgbuf.h.
  o  Carve out the first 1MB of physical memory. The MPC85xx has
     DMA problems with addresses below 1MB. Ideally busdma knows
     how to avoid allocating below 1MB for MPC85xx, but that
     requires a bit more work. For now, ignore the 1MB of DRAM.

Modified:
  head/sys/powerpc/booke/machdep.c

Modified: head/sys/powerpc/booke/machdep.c
==============================================================================
--- head/sys/powerpc/booke/machdep.c	Tue Apr 21 16:58:46 2009	(r191361)
+++ head/sys/powerpc/booke/machdep.c	Tue Apr 21 17:04:01 2009	(r191362)
@@ -82,7 +82,9 @@
 __FBSDID("$FreeBSD$");
 
 #include "opt_compat.h"
+#include "opt_ddb.h"
 #include "opt_kstack_pages.h"
+#include "opt_msgbuf.h"
 
 #include <sys/cdefs.h>
 #include <sys/types.h>
@@ -137,6 +139,10 @@ __FBSDID("$FreeBSD$");
 #include <powerpc/mpc85xx/ocpbus.h>
 #include <powerpc/mpc85xx/mpc85xx.h>
 
+#ifdef DDB
+extern vm_offset_t ksym_start, ksym_end;
+#endif
+
 #ifdef  DEBUG
 #define debugf(fmt, args...) printf(fmt, ##args)
 #else
@@ -355,6 +361,10 @@ e500_init(u_int32_t startkernel, u_int32
 			boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int);
 			kern_envp = MD_FETCH(kmdp, MODINFOMD_ENVP, char *);
 			end = MD_FETCH(kmdp, MODINFOMD_KERNEND, vm_offset_t);
+#ifdef DDB
+			ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, uintptr_t);
+			ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, uintptr_t);
+#endif
 		}
 	} else {
 		/*
@@ -376,8 +386,14 @@ e500_init(u_int32_t startkernel, u_int32
 	for (i = 0; i < bootinfo->bi_mem_reg_no; i++, mr++) {
 		if (i == MEM_REGIONS)
 			break;
-		availmem_regions[i].mr_start = mr->mem_base;
-		availmem_regions[i].mr_size = mr->mem_size;
+		if (mr->mem_base < 1048576) {
+			availmem_regions[i].mr_start = 1048576;
+			availmem_regions[i].mr_size = mr->mem_size -
+			    (1048576 - mr->mem_base);
+		} else {
+			availmem_regions[i].mr_start = mr->mem_base;
+			availmem_regions[i].mr_size = mr->mem_size;
+		}
 	}
 	availmem_regions_sz = i;
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200904211704.n3LH41DN016572>