2 * linux/include/asm-arm/arch-rpc/mmap.h
4 * Copyright (C) 1996 Russell King
7 #define HAVE_MAP_VID_MEM
9 unsigned long map_screen_mem(unsigned long log_start
, unsigned long kmem
, int update
)
11 static int updated
= 0;
12 unsigned long address
;
19 address
= SCREEN_START
| PMD_TYPE_SECT
| PMD_DOMAIN(DOMAIN_KERNEL
) | PMD_SECT_AP_WRITE
;
20 pgd
= swapper_pg_dir
+ (SCREEN2_BASE
>> PGDIR_SHIFT
);
21 pgd_val(pgd
[0]) = address
;
22 pgd_val(pgd
[1]) = address
+ (1 << PGDIR_SHIFT
);
25 unsigned long pgtable
= PAGE_ALIGN(kmem
), *p
;
28 memzero ((void *)pgtable
, 4096);
30 pgd_val(pgd
[-2]) = __virt_to_phys(pgtable
) | PMD_TYPE_TABLE
| PMD_DOMAIN(DOMAIN_KERNEL
);
31 pgd_val(pgd
[-1]) = __virt_to_phys(pgtable
+ PTRS_PER_PTE
*4) | PMD_TYPE_TABLE
| PMD_DOMAIN(DOMAIN_KERNEL
);
32 p
= (unsigned long *)pgtable
;
34 i
= PTRS_PER_PTE
* 2 - ((SCREEN1_END
- log_start
) >> PAGE_SHIFT
);
35 address
= SCREEN_START
| PTE_TYPE_SMALL
| PTE_AP_WRITE
;
37 while (i
< PTRS_PER_PTE
* 2) {
42 flush_page_to_ram(pgtable
);
44 kmem
= pgtable
+ PAGE_SIZE
;