mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-06 13:09:50 +00:00
Use the direct mapping, if available, for pmap_zero_page_xscale() as well.
This commit is contained in:
parent
58590eb06b
commit
f60a7dc355
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=172713
@ -4114,9 +4114,23 @@ pmap_zero_page_generic(vm_paddr_t phys, int off, int size)
|
|||||||
void
|
void
|
||||||
pmap_zero_page_xscale(vm_paddr_t phys, int off, int size)
|
pmap_zero_page_xscale(vm_paddr_t phys, int off, int size)
|
||||||
{
|
{
|
||||||
|
#ifdef ARM_USE_SMALL_ALLOC
|
||||||
|
char *dstpg;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (_arm_bzero && size >= _min_bzero_size &&
|
if (_arm_bzero && size >= _min_bzero_size &&
|
||||||
_arm_bzero((void *)(phys + off), size, IS_PHYSICAL) == 0)
|
_arm_bzero((void *)(phys + off), size, IS_PHYSICAL) == 0)
|
||||||
return;
|
return;
|
||||||
|
#ifdef ARM_USE_SMALL_ALLOC
|
||||||
|
dstpg = (char *)arm_ptovirt(phys);
|
||||||
|
if (off || size != PAGE_SIZE) {
|
||||||
|
bzero(dstpg + off, size);
|
||||||
|
cpu_dcache_wbinv_range((vm_offset_t)(dstpg + off), size);
|
||||||
|
} else {
|
||||||
|
bzero_page((vm_offset_t)dstpg);
|
||||||
|
cpu_dcache_wbinv_range((vm_offset_t)dstpg, PAGE_SIZE);
|
||||||
|
}
|
||||||
|
#else
|
||||||
mtx_lock(&cmtx);
|
mtx_lock(&cmtx);
|
||||||
/*
|
/*
|
||||||
* Hook in the page, zero it, and purge the cache for that
|
* Hook in the page, zero it, and purge the cache for that
|
||||||
@ -4134,6 +4148,7 @@ pmap_zero_page_xscale(vm_paddr_t phys, int off, int size)
|
|||||||
bzero_page(cdstp);
|
bzero_page(cdstp);
|
||||||
mtx_unlock(&cmtx);
|
mtx_unlock(&cmtx);
|
||||||
xscale_cache_clean_minidata();
|
xscale_cache_clean_minidata();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user