summaryrefslogtreecommitdiffstats
path: root/sys/powerpc
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2010-09-14 03:18:11 +0000
committergrehan <grehan@FreeBSD.org>2010-09-14 03:18:11 +0000
commit93d994894364bdecb9f9cbc4539050f173e14072 (patch)
treef70479d649233dee830c01085b911232682b44cf /sys/powerpc
parent2b6d501a6e7646a0be53d48eb59bf60cbe378738 (diff)
downloadFreeBSD-src-93d994894364bdecb9f9cbc4539050f173e14072.zip
FreeBSD-src-93d994894364bdecb9f9cbc4539050f173e14072.tar.gz
Resurrect PSIM support by moving the cacheline size-detection warning
printf outside of the MMU-disabled region. A call into OpenFirmware with the MMU off resulted in an internal PSIM assert.
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/aim/machdep.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/powerpc/aim/machdep.c b/sys/powerpc/aim/machdep.c
index ba06531..a197681 100644
--- a/sys/powerpc/aim/machdep.c
+++ b/sys/powerpc/aim/machdep.c
@@ -258,6 +258,7 @@ powerpc_init(vm_offset_t startkernel, vm_offset_t endkernel,
char *env;
register_t msr, scratch;
uint8_t *cache_check;
+ int cacheline_warn;
#ifndef __powerpc64__
int ppc64;
#endif
@@ -265,6 +266,7 @@ powerpc_init(vm_offset_t startkernel, vm_offset_t endkernel,
end = 0;
kmdp = NULL;
trap_offset = 0;
+ cacheline_warn = 0;
/*
* Parse metadata if present and fetch parameters. Must be done
@@ -360,7 +362,8 @@ powerpc_init(vm_offset_t startkernel, vm_offset_t endkernel,
/*
* Disable translation in case the vector area hasn't been
- * mapped (G5).
+ * mapped (G5). Note that no OFW calls can be made until
+ * translation is re-enabled.
*/
msr = mfmsr();
@@ -387,7 +390,7 @@ powerpc_init(vm_offset_t startkernel, vm_offset_t endkernel,
/* Work around psim bug */
if (cacheline_size == 0) {
- printf("WARNING: cacheline size undetermined, setting to 32\n");
+ cacheline_warn = 1;
cacheline_size = 32;
}
@@ -496,6 +499,11 @@ powerpc_init(vm_offset_t startkernel, vm_offset_t endkernel,
mtmsr(msr);
isync();
+ /* Warn if cachline size was not determined */
+ if (cacheline_warn == 1) {
+ printf("WARNING: cacheline size undetermined, setting to 32\n");
+ }
+
/*
* Choose a platform module so we can get the physical memory map.
*/
OpenPOWER on IntegriCloud