lkml.org 
[lkml]   [2009]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 11/27] asm-generic: add generic page.h
    Architectures that have no mmu should not have to
    describe their page tables. This adds a new page.h
    file based on the existing nommu architectures
    that adds a lot of dummy definitions to let you
    correctly compile a nommu kernel.

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    ---
    include/asm-generic/page.h | 99 ++++++++++++++++++++++++++++++++++++++++++++
    1 files changed, 99 insertions(+), 0 deletions(-)
    create mode 100644 include/asm-generic/page.h

    diff --git a/include/asm-generic/page.h b/include/asm-generic/page.h
    new file mode 100644
    index 0000000..75fec18
    --- /dev/null
    +++ b/include/asm-generic/page.h
    @@ -0,0 +1,99 @@
    +#ifndef __ASM_GENERIC_PAGE_H
    +#define __ASM_GENERIC_PAGE_H
    +/*
    + * Generic page.h implementation, for NOMMU architectures.
    + * This provides the dummy definitions for the memory management.
    + */
    +
    +#ifdef CONFIG_MMU
    +#error need to prove a real asm/page.h
    +#endif
    +
    +
    +/* PAGE_SHIFT determines the page size */
    +
    +#define PAGE_SHIFT 12
    +#ifdef __ASSEMBLY__
    +#define PAGE_SIZE (1 << PAGE_SHIFT)
    +#else
    +#define PAGE_SIZE (1UL << PAGE_SHIFT)
    +#endif
    +#define PAGE_MASK (~(PAGE_SIZE-1))
    +
    +#include <asm/setup.h>
    +
    +#ifndef __ASSEMBLY__
    +
    +#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
    +#define free_user_page(page, addr) free_page(addr)
    +
    +#define clear_page(page) memset((page), 0, PAGE_SIZE)
    +#define copy_page(to,from) memcpy((to), (from), PAGE_SIZE)
    +
    +#define clear_user_page(page, vaddr, pg) clear_page(page)
    +#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
    +
    +/*
    + * These are used to make use of C type-checking..
    + */
    +typedef struct {
    + unsigned long pte;
    +} pte_t;
    +typedef struct {
    + unsigned long pmd[16];
    +} pmd_t;
    +typedef struct {
    + unsigned long pgd;
    +} pgd_t;
    +typedef struct {
    + unsigned long pgprot;
    +} pgprot_t;
    +typedef struct page *pgtable_t;
    +
    +#define pte_val(x) ((x).pte)
    +#define pmd_val(x) ((&x)->pmd[0])
    +#define pgd_val(x) ((x).pgd)
    +#define pgprot_val(x) ((x).pgprot)
    +
    +#define __pte(x) ((pte_t) { (x) } )
    +#define __pmd(x) ((pmd_t) { (x) } )
    +#define __pgd(x) ((pgd_t) { (x) } )
    +#define __pgprot(x) ((pgprot_t) { (x) } )
    +
    +extern unsigned long memory_start;
    +extern unsigned long memory_end;
    +
    +#endif /* !__ASSEMBLY__ */
    +
    +#ifdef CONFIG_KERNEL_RAM_BASE_ADDRESS
    +#define PAGE_OFFSET (CONFIG_KERNEL_RAM_BASE_ADDRESS)
    +#else
    +#define PAGE_OFFSET (0)
    +#endif
    +
    +#ifndef __ASSEMBLY__
    +
    +#define __va(x) ((void *)((unsigned long)(x) + PAGE_OFFSET))
    +#define __pa(x) ((unsigned long) (x) - PAGE_OFFSET)
    +
    +#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
    +#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
    +
    +#define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT))
    +#define page_to_virt(page) ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)
    +
    +#ifndef page_to_phys
    +#define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
    +#endif
    +
    +#define pfn_valid(pfn) ((pfn) < max_mapnr)
    +
    +#define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
    + ((void *)(kaddr) < (void *)memory_end))
    +
    +#endif /* __ASSEMBLY__ */
    +
    +#include <asm-generic/memory_model.h>
    +#include <asm-generic/getorder.h>
    +
    +#endif /* __ASM_GENERIC_PAGE_H */
    --
    1.5.6.3



    \
     
     \ /
      Last update: 2009-04-30 17:57    [W:0.023 / U:91.220 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site