|
@@ -750,78 +750,6 @@ static void __init gateway_init(void)
|
|
|
PAGE_SIZE, PAGE_GATEWAY, 1);
|
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_HPUX
|
|
|
-void
|
|
|
-map_hpux_gateway_page(struct task_struct *tsk, struct mm_struct *mm)
|
|
|
-{
|
|
|
- pgd_t *pg_dir;
|
|
|
- pmd_t *pmd;
|
|
|
- pte_t *pg_table;
|
|
|
- unsigned long start_pmd;
|
|
|
- unsigned long start_pte;
|
|
|
- unsigned long address;
|
|
|
- unsigned long hpux_gw_page_addr;
|
|
|
- /* FIXME: This is 'const' in order to trick the compiler
|
|
|
- into not treating it as DP-relative data. */
|
|
|
- extern void * const hpux_gateway_page;
|
|
|
-
|
|
|
- hpux_gw_page_addr = HPUX_GATEWAY_ADDR & PAGE_MASK;
|
|
|
-
|
|
|
- /*
|
|
|
- * Setup HP-UX Gateway page.
|
|
|
- *
|
|
|
- * The HP-UX gateway page resides in the user address space,
|
|
|
- * so it needs to be aliased into each process.
|
|
|
- */
|
|
|
-
|
|
|
- pg_dir = pgd_offset(mm,hpux_gw_page_addr);
|
|
|
-
|
|
|
-#if PTRS_PER_PMD == 1
|
|
|
- start_pmd = 0;
|
|
|
-#else
|
|
|
- start_pmd = ((hpux_gw_page_addr >> PMD_SHIFT) & (PTRS_PER_PMD - 1));
|
|
|
-#endif
|
|
|
- start_pte = ((hpux_gw_page_addr >> PAGE_SHIFT) & (PTRS_PER_PTE - 1));
|
|
|
-
|
|
|
- address = __pa(&hpux_gateway_page);
|
|
|
-#if PTRS_PER_PMD == 1
|
|
|
- pmd = (pmd_t *)__pa(pg_dir);
|
|
|
-#else
|
|
|
- pmd = (pmd_t *) pgd_address(*pg_dir);
|
|
|
-
|
|
|
- /*
|
|
|
- * pmd is physical at this point
|
|
|
- */
|
|
|
-
|
|
|
- if (!pmd) {
|
|
|
- pmd = (pmd_t *) get_zeroed_page(GFP_KERNEL);
|
|
|
- pmd = (pmd_t *) __pa(pmd);
|
|
|
- }
|
|
|
-
|
|
|
- __pgd_val_set(*pg_dir, PxD_FLAG_PRESENT | PxD_FLAG_VALID | (unsigned long) pmd);
|
|
|
-#endif
|
|
|
- /* now change pmd to kernel virtual addresses */
|
|
|
-
|
|
|
- pmd = (pmd_t *)__va(pmd) + start_pmd;
|
|
|
-
|
|
|
- /*
|
|
|
- * pg_table is physical at this point
|
|
|
- */
|
|
|
-
|
|
|
- pg_table = (pte_t *) pmd_address(*pmd);
|
|
|
- if (!pg_table)
|
|
|
- pg_table = (pte_t *) __pa(get_zeroed_page(GFP_KERNEL));
|
|
|
-
|
|
|
- __pmd_val_set(*pmd, PxD_FLAG_PRESENT | PxD_FLAG_VALID | (unsigned long) pg_table);
|
|
|
-
|
|
|
- /* now change pg_table to kernel virtual addresses */
|
|
|
-
|
|
|
- pg_table = (pte_t *) __va(pg_table) + start_pte;
|
|
|
- set_pte(pg_table, __mk_pte(address, PAGE_GATEWAY));
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(map_hpux_gateway_page);
|
|
|
-#endif
|
|
|
-
|
|
|
void __init paging_init(void)
|
|
|
{
|
|
|
int i;
|