|
@@ -337,12 +337,15 @@ pte_t * __init populate_extra_pte(unsigned long vaddr)
|
|
* Create large page table mappings for a range of physical addresses.
|
|
* Create large page table mappings for a range of physical addresses.
|
|
*/
|
|
*/
|
|
static void __init __init_extra_mapping(unsigned long phys, unsigned long size,
|
|
static void __init __init_extra_mapping(unsigned long phys, unsigned long size,
|
|
- pgprot_t prot)
|
|
|
|
|
|
+ enum page_cache_mode cache)
|
|
{
|
|
{
|
|
pgd_t *pgd;
|
|
pgd_t *pgd;
|
|
pud_t *pud;
|
|
pud_t *pud;
|
|
pmd_t *pmd;
|
|
pmd_t *pmd;
|
|
|
|
+ pgprot_t prot;
|
|
|
|
|
|
|
|
+ pgprot_val(prot) = pgprot_val(PAGE_KERNEL_LARGE) |
|
|
|
|
+ pgprot_val(pgprot_4k_2_large(cachemode2pgprot(cache)));
|
|
BUG_ON((phys & ~PMD_MASK) || (size & ~PMD_MASK));
|
|
BUG_ON((phys & ~PMD_MASK) || (size & ~PMD_MASK));
|
|
for (; size; phys += PMD_SIZE, size -= PMD_SIZE) {
|
|
for (; size; phys += PMD_SIZE, size -= PMD_SIZE) {
|
|
pgd = pgd_offset_k((unsigned long)__va(phys));
|
|
pgd = pgd_offset_k((unsigned long)__va(phys));
|
|
@@ -365,12 +368,12 @@ static void __init __init_extra_mapping(unsigned long phys, unsigned long size,
|
|
|
|
|
|
void __init init_extra_mapping_wb(unsigned long phys, unsigned long size)
|
|
void __init init_extra_mapping_wb(unsigned long phys, unsigned long size)
|
|
{
|
|
{
|
|
- __init_extra_mapping(phys, size, PAGE_KERNEL_LARGE);
|
|
|
|
|
|
+ __init_extra_mapping(phys, size, _PAGE_CACHE_MODE_WB);
|
|
}
|
|
}
|
|
|
|
|
|
void __init init_extra_mapping_uc(unsigned long phys, unsigned long size)
|
|
void __init init_extra_mapping_uc(unsigned long phys, unsigned long size)
|
|
{
|
|
{
|
|
- __init_extra_mapping(phys, size, PAGE_KERNEL_LARGE_NOCACHE);
|
|
|
|
|
|
+ __init_extra_mapping(phys, size, _PAGE_CACHE_MODE_UC);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|