diff options
author | grehan <grehan@FreeBSD.org> | 2005-09-10 21:03:10 +0000 |
---|---|---|
committer | grehan <grehan@FreeBSD.org> | 2005-09-10 21:03:10 +0000 |
commit | 1a84fecd121e0b9bd482ad40deef908beac5c2a7 (patch) | |
tree | 03080393cdb1af127efea5abfef5aec208566f2e /sys/powerpc/aim | |
parent | afef46c1a090db514f1fd459056471d92c96d7ae (diff) | |
download | FreeBSD-src-1a84fecd121e0b9bd482ad40deef908beac5c2a7.zip FreeBSD-src-1a84fecd121e0b9bd482ad40deef908beac5c2a7.tar.gz |
Fix boot-time hang/panic on G3 systems when modifying IBAT0 in
pmap_bootstrap by using the sync;isync big hammer to make sure
all prior operations have completed.
Reported by: Nathan Whitehorn <nathan at uchicago edu>
MFC after: 2 days
Diffstat (limited to 'sys/powerpc/aim')
-rw-r--r-- | sys/powerpc/aim/mmu_oea.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/powerpc/aim/mmu_oea.c b/sys/powerpc/aim/mmu_oea.c index e3515d5..7f4455e 100644 --- a/sys/powerpc/aim/mmu_oea.c +++ b/sys/powerpc/aim/mmu_oea.c @@ -569,7 +569,8 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend) */ batu = BATU(0x00000000, BAT_BL_256M, BAT_Vs); batl = BATL(0x00000000, BAT_M, BAT_PP_RW); - __asm ("mtibatu 0,%0; mtibatl 0,%1; isync; \n" + __asm ("sync; isync; \n" + "mtibatu 0,%0; mtibatl 0,%1; isync; \n" "mtdbatu 0,%0; mtdbatl 0,%1; isync" :: "r"(batu), "r"(batl)); |