Hexagon: Add page table header files & etc.
PATCH v5 29/36 Hexagon: Add page table header files & etc.
Signed-off-by Richard Kuo <[email protected]>
Signed-off-by Linas Vepstas <[email protected]>
Acked-by Arnd Bergmann <[email protected]>
--- arch/hexagon/include/asm/fixmap.h | 73 +++++ arch/hexagon/include/asm/mmu.h | 37 +++ arch/hexagon/include/asm/mmu_context.h | 100 ++++++ arch/hexagon/include/asm/page.h | 157 ++++++++++ arch/hexagon/include/asm/pgalloc.h | 146 +++++++++ arch/hexagon/include/asm/pgtable.h | 518 ++++++++++++++++++++++++++++++++ arch/hexagon/mm/pgalloc.c | 25 ++ 7 files changed, 1056 insertions(+), 0 deletions(-) create mode 100644 arch/hexagon/include/asm/fixmap.h create mode 100644 arch/hexagon/include/asm/mmu.h create mode 100644 arch/hexagon/include/asm/mmu_context.h create mode 100644 arch/hexagon/include/asm/page.h create mode 100644 arch/hexagon/include/asm/pgalloc.h create mode 100644 arch/hexagon/include/asm/pgtable.h create mode 100644 arch/hexagon/mm/pgalloc.c
arch/hexagon/include/asm/fixmap.h new file +73 -0
@@ -0,0 +1,73 @@ +/* +* Fixmap support for Hexagon - enough to support highmem features +* +* Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 2 and +* only version 2 as published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +* 02110-1301, USA. +*/ + +#ifndef _ASM_FIXMAP_H +#define _ASM_FIXMAP_H + +/* +* A lot of the fixmap info is already in mem-layout.h +*/ +#include <asm/mem-layout.h> + +/* +* Full fixmap support involves set_fixmap() functions, but +* these may not be needed if all we're after is an area for +* highmem kernel mappings. +*/ +#define __fix_to_virt (x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) +#define __virt_to_fix (x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT) + +extern void __this_fixmap_does_not_exist (void ); + +/** +* fix_to_virt -- "index to address" translation. +* +* If anyone tries to use the idx directly without translation, +* we catch the bug with a NULL-deference kernel oops. Illegal +* ranges of incoming indices are caught too. +*/ +static inline unsigned long fix_to_virt (const unsigned int idx) +{ +/* +* This branch gets completely eliminated after inlining, +* except when someone tries to use fixaddr indices in an +* illegal way. (such as mixing up address types or using +* out-of-range indices). +* +* If it doesn't get removed, the linker will complain +* loudly with a reasonably clear error message.. +*/ +if (idx >= __end_of_fixed_addresses) +__this_fixmap_does_not_exist (); + +return __fix_to_virt (idx); +} + +static inline unsigned long virt_to_fix (const unsigned long vaddr) +{ +BUG_ON (vaddr >=FIXADDR_TOP || vaddr <FIXADDR_START ); +return __virt_to_fix (vaddr); +} + +#define kmap_get_fixmap_pte (vaddr) \ + pte_offset_kernel(pmd_offset(pud_offset(pgd_offset_k(vaddr), \ + (vaddr)), (vaddr)), (vaddr)) + +#endif
arch/hexagon/include/asm/mmu.h new file +37 -0
@@ -0,0 +1,37 @@ +/* +* Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 2 and +* only version 2 as published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +* 02110-1301, USA. +*/ + +#ifndef _ASM_MMU_H +#define _ASM_MMU_H + +#include <asm/vdso.h> + +/* +* Architecture-specific state for a mm_struct. +* For the Hexagon Virtual Machine, it can be a copy +* of the pointer to the page table base. +*/ +struct mm_context { +unsigned long long generation; +unsigned long ptbase; +struct hexagon_vdso *vdso; +}; + +typedef struct mm_context mm_context_t ; + +#endif
arch/hexagon/include/asm/mmu_context.h new file +100 -0
100 lines not on this page · raw message
arch/hexagon/include/asm/page.h new file +157 -0
157 lines not on this page · raw message
arch/hexagon/include/asm/pgalloc.h new file +146 -0
146 lines not on this page · raw message
arch/hexagon/include/asm/pgtable.h new file +518 -0
518 lines not on this page · raw message
arch/hexagon/mm/pgalloc.c new file +25 -0
@@ -0,0 +1,25 @@ +/* +* Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 2 and +* only version 2 as published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +* 02110-1301, USA. +*/ + +#include <linux/init.h> + +void __init pgtable_cache_init (void ) +{ +} + +
Signature · 7 lines
1.7.1 -- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.