diff options
author | grehan <grehan@FreeBSD.org> | 2004-07-08 12:47:36 +0000 |
---|---|---|
committer | grehan <grehan@FreeBSD.org> | 2004-07-08 12:47:36 +0000 |
commit | ac03732d3c47b033a49baaa10ce05314bae1e4f8 (patch) | |
tree | 0df8424dcdc0e92ca331f70c4c4cc9436f73ebc3 /sys/powerpc | |
parent | 9285db0e84758d0d992ba9333abf6a5bcda6da73 (diff) | |
download | FreeBSD-src-ac03732d3c47b033a49baaa10ce05314bae1e4f8.zip FreeBSD-src-ac03732d3c47b033a49baaa10ce05314bae1e4f8.tar.gz |
G4 requires isync after 256Mb ibat/dbat update, G3 requires
isync after each bat update. Otherwise, pmap_bootstrap causes
an ISI exception. A fall-out of loader BAT removal.
Diffstat (limited to 'sys/powerpc')
-rw-r--r-- | sys/powerpc/aim/mmu_oea.c | 7 | ||||
-rw-r--r-- | sys/powerpc/powerpc/mmu_oea.c | 7 | ||||
-rw-r--r-- | sys/powerpc/powerpc/pmap.c | 7 |
3 files changed, 12 insertions, 9 deletions
diff --git a/sys/powerpc/aim/mmu_oea.c b/sys/powerpc/aim/mmu_oea.c index 342c3dc..db5b510 100644 --- a/sys/powerpc/aim/mmu_oea.c +++ b/sys/powerpc/aim/mmu_oea.c @@ -565,14 +565,15 @@ 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; mtdbatu 0,%0; mtdbatl 0,%1" + __asm ("mtibatu 0,%0; mtibatl 0,%1; isync; \n" + "mtdbatu 0,%0; mtdbatl 0,%1; isync" :: "r"(batu), "r"(batl)); #if 0 /* map frame buffer */ batu = BATU(0x90000000, BAT_BL_256M, BAT_Vs); batl = BATL(0x90000000, BAT_I|BAT_G, BAT_PP_RW); - __asm ("mtdbatu 1,%0; mtdbatl 1,%1" + __asm ("mtdbatu 1,%0; mtdbatl 1,%1; isync" :: "r"(batu), "r"(batl)); #endif @@ -580,7 +581,7 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend) /* map pci space */ batu = BATU(0x80000000, BAT_BL_256M, BAT_Vs); batl = BATL(0x80000000, BAT_I|BAT_G, BAT_PP_RW); - __asm ("mtdbatu 1,%0; mtdbatl 1,%1" + __asm ("mtdbatu 1,%0; mtdbatl 1,%1; isync" :: "r"(batu), "r"(batl)); #endif diff --git a/sys/powerpc/powerpc/mmu_oea.c b/sys/powerpc/powerpc/mmu_oea.c index 342c3dc..db5b510 100644 --- a/sys/powerpc/powerpc/mmu_oea.c +++ b/sys/powerpc/powerpc/mmu_oea.c @@ -565,14 +565,15 @@ 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; mtdbatu 0,%0; mtdbatl 0,%1" + __asm ("mtibatu 0,%0; mtibatl 0,%1; isync; \n" + "mtdbatu 0,%0; mtdbatl 0,%1; isync" :: "r"(batu), "r"(batl)); #if 0 /* map frame buffer */ batu = BATU(0x90000000, BAT_BL_256M, BAT_Vs); batl = BATL(0x90000000, BAT_I|BAT_G, BAT_PP_RW); - __asm ("mtdbatu 1,%0; mtdbatl 1,%1" + __asm ("mtdbatu 1,%0; mtdbatl 1,%1; isync" :: "r"(batu), "r"(batl)); #endif @@ -580,7 +581,7 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend) /* map pci space */ batu = BATU(0x80000000, BAT_BL_256M, BAT_Vs); batl = BATL(0x80000000, BAT_I|BAT_G, BAT_PP_RW); - __asm ("mtdbatu 1,%0; mtdbatl 1,%1" + __asm ("mtdbatu 1,%0; mtdbatl 1,%1; isync" :: "r"(batu), "r"(batl)); #endif diff --git a/sys/powerpc/powerpc/pmap.c b/sys/powerpc/powerpc/pmap.c index 342c3dc..db5b510 100644 --- a/sys/powerpc/powerpc/pmap.c +++ b/sys/powerpc/powerpc/pmap.c @@ -565,14 +565,15 @@ 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; mtdbatu 0,%0; mtdbatl 0,%1" + __asm ("mtibatu 0,%0; mtibatl 0,%1; isync; \n" + "mtdbatu 0,%0; mtdbatl 0,%1; isync" :: "r"(batu), "r"(batl)); #if 0 /* map frame buffer */ batu = BATU(0x90000000, BAT_BL_256M, BAT_Vs); batl = BATL(0x90000000, BAT_I|BAT_G, BAT_PP_RW); - __asm ("mtdbatu 1,%0; mtdbatl 1,%1" + __asm ("mtdbatu 1,%0; mtdbatl 1,%1; isync" :: "r"(batu), "r"(batl)); #endif @@ -580,7 +581,7 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend) /* map pci space */ batu = BATU(0x80000000, BAT_BL_256M, BAT_Vs); batl = BATL(0x80000000, BAT_I|BAT_G, BAT_PP_RW); - __asm ("mtdbatu 1,%0; mtdbatl 1,%1" + __asm ("mtdbatu 1,%0; mtdbatl 1,%1; isync" :: "r"(batu), "r"(batl)); #endif |