more non-ABI asm-generic headers
Subsystems (18)
Arnd Bergmann
maintainerv2 cover more non-ABI asm-generic headers
I reviewed my patches again after input from David Miller and others, hopefully I have found a way to send out patches again. This series is much smaller now, I consolidated some patches according to logic grouping, and left out the microblaze stuff, which is probably just boring everyone except Michal.
This should fix the broken From: and Date: headers in the mail, which caused problems, while the contents are unchanged from my earlier submission.
Arnd <><
Arnd Bergmann
maintainerPATCH v2 1/9 asm-generic: rename atomic.h to atomic-long.h
The existing asm-generic/atomic.h only defines the atomic_long type. This renames it to atomic-long.h so we have a place to add a truly generic atomic.h that can be used on all non-SMP systems.
---
arch/alpha/include/asm/atomic.h | 2 +-
arch/arm/include/asm/atomic.h | 2 +-
arch/avr32/include/asm/atomic.h | 2 +-
arch/blackfin/include/asm/atomic.h | 2 +-
arch/cris/include/asm/atomic.h | 2 +-
arch/frv/include/asm/atomic.h | 2 +-
arch/h8300/include/asm/atomic.h | 2 +-
arch/ia64/include/asm/atomic.h | 2 +-
arch/m32r/include/asm/atomic.h | 2 +-
arch/m68k/include/asm/atomic_mm.h | 2 +-
arch/m68k/include/asm/atomic_no.h | 2 +-
arch/microblaze/include/asm/atomic.h | 2 +-
arch/mips/include/asm/atomic.h | 2 +-
arch/mn10300/include/asm/atomic.h | 2 +-
arch/parisc/include/asm/atomic.h | 2 +-
arch/powerpc/include/asm/atomic.h | 2 +-
arch/s390/include/asm/atomic.h | 2 +-
arch/sh/include/asm/atomic.h | 2 +-
arch/sparc/include/asm/atomic_32.h | 2 +-
arch/sparc/include/asm/atomic_64.h | 2 +-
arch/x86/include/asm/atomic_32.h | 2 +-
arch/x86/include/asm/atomic_64.h | 2 +-
arch/xtensa/include/asm/atomic.h | 2 +-
include/asm-generic/{atomic.h => atomic-long.h} | 6 +++---
include/asm-generic/bitops/atomic.h | 1 +
25 files changed, 27 insertions(+), 26 deletions(-)
rename include/asm-generic/{atomic.h => atomic-long.h} (97%)arch/alpha/include/asm/atomic.h +1 -1
@@ -256,5 +256,5 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)#define smp_mb__before_atomic_inc () smp_mb()#define smp_mb__after_atomic_inc () smp_mb() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* _ALPHA_ATOMIC_H */
arch/arm/include/asm/atomic.h +1 -1
@@ -206,6 +206,6 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif #endif
arch/avr32/include/asm/atomic.h +1 -1
@@ -196,6 +196,6 @@ static inline int atomic_sub_if_positive(int i, atomic_t *v)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __ASM_AVR32_ATOMIC_H */
arch/blackfin/include/asm/atomic.h +1 -1
@@ -208,6 +208,6 @@ static inline void atomic_set_mask(unsigned int mask, atomic_t *v)#define atomic_sub_and_test (i,v) (atomic_sub_return((i), (v)) == 0)#define atomic_dec_and_test (v) (atomic_sub_return(1, (v)) == 0) -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __ARCH_BLACKFIN_ATOMIC __ */
arch/cris/include/asm/atomic.h +1 -1
@@ -158,5 +158,5 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif
arch/frv/include/asm/atomic.h +1 -1
@@ -194,5 +194,5 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)#define atomic_inc_not_zero (v) atomic_add_unless((v), 1, 0) -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* _ASM_ATOMIC_H */
arch/h8300/include/asm/atomic.h +1 -1
@@ -141,5 +141,5 @@ static __inline__ void atomic_set_mask(unsigned long mask, unsigned long *v)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __ARCH_H8300_ATOMIC __ */
arch/ia64/include/asm/atomic.h +1 -1
@@ -216,5 +216,5 @@ atomic64_add_negative (__s64 i, atomic64_t *v)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* _ASM_IA64_ATOMIC_H */
arch/m32r/include/asm/atomic.h +1 -1
@@ -314,5 +314,5 @@ static __inline__ void atomic_set_mask(unsigned long mask, atomic_t *addr)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* _ASM_M32R_ATOMIC_H */
arch/m68k/include/asm/atomic_mm.h +1 -1
@@ -192,5 +192,5 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __ARCH_M68K_ATOMIC __ */
arch/m68k/include/asm/atomic_no.h +1 -1
@@ -151,5 +151,5 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)#define atomic_dec_return (v) atomic_sub_return(1,(v))#define atomic_inc_return (v) atomic_add_return(1,(v)) -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __ARCH_M68KNOMMU_ATOMIC __ */
arch/microblaze/include/asm/atomic.h +1 -1
@@ -118,6 +118,6 @@ static inline int atomic_dec_if_positive(atomic_t *v)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* _ASM_MICROBLAZE_ATOMIC_H */
arch/mips/include/asm/atomic.h +1 -1
@@ -793,6 +793,6 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)#define smp_mb__before_atomic_inc () smp_llsc_mb()#define smp_mb__after_atomic_inc () smp_llsc_mb() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* _ASM_ATOMIC_H */
arch/mn10300/include/asm/atomic.h +1 -1
@@ -151,7 +151,7 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __KERNEL__ */ #endif /* _ASM_ATOMIC_H */
arch/parisc/include/asm/atomic.h +1 -1
@@ -338,6 +338,6 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)#endif /* CONFIG_64BIT */ -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* _ASM_PARISC_ATOMIC_H_ */
arch/powerpc/include/asm/atomic.h +1 -1
@@ -472,6 +472,6 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)#endif /* __powerpc64__ */ -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_ATOMIC_H_ */
arch/s390/include/asm/atomic.h +1 -1
@@ -275,6 +275,6 @@ static __inline__ int atomic64_add_unless(atomic64_t *v,#define smp_mb__before_atomic_inc () smp_mb()#define smp_mb__after_atomic_inc () smp_mb() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __KERNEL__ */ #endif /* __ARCH_S390_ATOMIC__ */
arch/sh/include/asm/atomic.h +1 -1
@@ -84,5 +84,5 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __ASM_SH_ATOMIC_H */
arch/sparc/include/asm/atomic_32.h +1 -1
@@ -161,5 +161,5 @@ static inline int __atomic24_sub(int i, atomic24_t *v)#endif /* !(__KERNEL__) */ -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* !(__ARCH_SPARC_ATOMIC__) */
arch/sparc/include/asm/atomic_64.h +1 -1
@@ -114,5 +114,5 @@ static inline int atomic64_add_unless(atomic64_t *v, long a, long u)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* !(__ARCH_SPARC64_ATOMIC__) */
arch/x86/include/asm/atomic_32.h +1 -1
@@ -247,5 +247,5 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* _ASM_X86_ATOMIC_32_H */
arch/x86/include/asm/atomic_64.h +1 -1
@@ -455,5 +455,5 @@ static inline void atomic_or_long(unsigned long *v1, unsigned long v2)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* _ASM_X86_ATOMIC_64_H */
arch/xtensa/include/asm/atomic.h +1 -1
@@ -292,7 +292,7 @@ static inline void atomic_set_mask(unsigned int mask, atomic_t *v)#define smp_mb__before_atomic_inc () barrier()#define smp_mb__after_atomic_inc () barrier() -#include <asm-generic/atomic.h> +#include <asm-generic/atomic-long.h> #endif /* __KERNEL__ */ #endif /* _XTENSA_ATOMIC_H */
include/asm-generic/atomic-long.h renamed from include/asm-generic/atomic.h +3 -3
@@ -1,5 +1,5 @@ -#ifndef _ASM_GENERIC_ATOMIC_H -#define _ASM_GENERIC_ATOMIC_H +#ifndef _ASM_GENERIC_ATOMIC_LONG_H +#define _ASM_GENERIC_ATOMIC_LONG_H/* * Copyright (C) 2005 Silicon Graphics, Inc. * Christoph Lameter
@@ -255,4 +255,4 @@ static inline long atomic_long_add_unless(atomic_long_t *l, long a, long u)#endif /* BITS_PER_LONG == 64 */ -#endif /* _ASM_GENERIC_ATOMIC_H */ +#endif /* _ASM_GENERIC_ATOMIC_LONG_H */
include/asm-generic/bitops/atomic.h +1 -0
@@ -2,6 +2,7 @@#define _ASM_GENERIC_BITOPS_ATOMIC_H_#include <asm/types.h> +#include <asm/system.h> #ifdef CONFIG_SMP #include <asm/spinlock.h>
Signature · 3 lines
1.5.6.3 --
Arnd Bergmann
maintainerPATCH v2 2/9 asm-generic: rename page.h to getorder.h
In reply to Arnd BergmannThe current asm-generic/page.h only contains the get_order function. This renames the file to getorder.h to make room for a new page.h file that will be usable by all nommu architectures.
---
arch/alpha/include/asm/page.h | 2 +-
arch/arm/include/asm/page.h | 2 +-
arch/blackfin/include/asm/page.h | 2 +-
arch/cris/include/asm/page.h | 2 +-
arch/frv/include/asm/page.h | 2 +-
arch/h8300/include/asm/page.h | 2 +-
arch/m32r/include/asm/page.h | 2 +-
arch/m68k/include/asm/page_mm.h | 2 +-
arch/m68k/include/asm/page_no.h | 2 +-
arch/microblaze/include/asm/page.h | 2 +-
arch/mips/include/asm/page.h | 2 +-
arch/parisc/include/asm/page.h | 2 +-
arch/powerpc/include/asm/page_32.h | 2 +-
arch/powerpc/include/asm/page_64.h | 2 +-
arch/s390/include/asm/page.h | 2 +-
arch/sh/include/asm/page.h | 2 +-
arch/sparc/include/asm/page_32.h | 2 +-
arch/sparc/include/asm/page_64.h | 2 +-
arch/um/include/asm/page.h | 2 +-
arch/x86/include/asm/page.h | 2 +-
arch/xtensa/include/asm/page.h | 2 +-
include/asm-generic/{page.h => getorder.h} | 8 ++++----
22 files changed, 25 insertions(+), 25 deletions(-)
rename include/asm-generic/{page.h => getorder.h} (59%)arch/alpha/include/asm/page.h +1 -1
@@ -93,6 +93,6 @@ typedef struct page *pgtable_t; VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)#include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _ALPHA_PAGE_H */
arch/arm/include/asm/page.h +1 -1
@@ -209,6 +209,6 @@ typedef struct page *pgtable_t;#define ARCH_SLAB_MINALIGN 8#endif -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif
arch/blackfin/include/asm/page.h +1 -1
@@ -81,7 +81,7 @@ extern unsigned long memory_end;#define virt_addr_valid (kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \ ((void *)(kaddr) < (void *)memory_end)) -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* __ASSEMBLY__ */
arch/cris/include/asm/page.h +1 -1
@@ -68,7 +68,7 @@ typedef struct page *pgtable_t; VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)#include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _CRIS_PAGE_H */
arch/frv/include/asm/page.h +1 -1
@@ -73,6 +73,6 @@ extern unsigned long max_pfn;#endif /* __ASSEMBLY__ */ #include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _ASM_PAGE_H */
arch/h8300/include/asm/page.h +1 -1
@@ -73,6 +73,6 @@ extern unsigned long memory_end;#endif /* __ASSEMBLY__ */ #include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _H8300_PAGE_H */
arch/m32r/include/asm/page.h +1 -1
@@ -82,6 +82,6 @@ typedef struct page *pgtable_t;#define devmem_is_allowed (x) 1#include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _ASM_M32R_PAGE_H */
arch/m68k/include/asm/page_mm.h +1 -1
@@ -223,6 +223,6 @@ static inline __attribute_const__ int __virt_to_node_shift(void)#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _M68K_PAGE_H */
arch/m68k/include/asm/page_no.h +1 -1
@@ -72,6 +72,6 @@ extern unsigned long memory_end;#endif /* __ASSEMBLY__ */ -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _M68KNOMMU_PAGE_H */
arch/microblaze/include/asm/page.h +1 -1
@@ -135,6 +135,6 @@ extern unsigned int memory_size;#endif /* __KERNEL__ */ #include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _ASM_MICROBLAZE_PAGE_H */
arch/mips/include/asm/page.h +1 -1
@@ -186,6 +186,6 @@ typedef struct { unsigned long pgprot; } pgprot_t;#define CAC_ADDR (addr) ((addr) - UNCAC_BASE + PAGE_OFFSET)#include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _ASM_PAGE_H */
arch/parisc/include/asm/page.h +1 -1
@@ -159,6 +159,6 @@ extern int npmem_ranges; VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)#include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _PARISC_PAGE_H */
arch/powerpc/include/asm/page_32.h +1 -1
@@ -41,7 +41,7 @@ extern void clear_pages(void *page, int order);static inline void clear_page (void *page) {clear_pages (page,0 ); }extern void copy_page (void *to,void *from); -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #define PGD_T_LOG2 (__builtin_ffs(sizeof(pgd_t)) - 1)#define PTE_T_LOG2 (__builtin_ffs(sizeof(pte_t)) - 1)
arch/powerpc/include/asm/page_64.h +1 -1
@@ -180,6 +180,6 @@ do { \ (test_thread_flag (TIF_32BIT ) ? \ VM_STACK_DEFAULT_FLAGS32 : VM_STACK_DEFAULT_FLAGS64) -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _ASM_POWERPC_PAGE_64_H */
arch/s390/include/asm/page.h +1 -1
@@ -150,7 +150,7 @@ void arch_alloc_page(struct page *page, int order); VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)#include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #define __HAVE_ARCH_GATE_AREA 1
arch/sh/include/asm/page.h +1 -1
@@ -163,7 +163,7 @@ typedef struct page *pgtable_t; VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)#include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> /* vDSO support */ #ifdef CONFIG_VSYSCALL
arch/sparc/include/asm/page_32.h +1 -1
@@ -152,6 +152,6 @@ extern unsigned long pfn_base; VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)#include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _SPARC_PAGE_H */
arch/sparc/include/asm/page_64.h +1 -1
@@ -132,6 +132,6 @@ typedef struct page *pgtable_t;#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* _SPARC64_PAGE_H */
arch/um/include/asm/page.h +1 -1
@@ -116,7 +116,7 @@ extern unsigned long uml_physmem;#define virt_addr_valid (v) pfn_valid(phys_to_pfn(__pa(v)))#include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #endif /* __ASSEMBLY__ */ #endif /* __UM_PAGE_H */
arch/x86/include/asm/page.h +1 -1
@@ -56,7 +56,7 @@ extern bool __virt_addr_valid(unsigned long kaddr);#endif /* __ASSEMBLY__ */ #include <asm-generic/memory_model.h> -#include <asm-generic/page.h> +#include <asm-generic/getorder.h> #define __HAVE_ARCH_GATE_AREA 1
arch/xtensa/include/asm/page.h +1 -1
@@ -129,7 +129,7 @@ static inline __attribute_const__ int get_order(unsigned long size)#else -# include <asm-generic/page.h> +# include <asm-generic/getorder.h> #endif
include/asm-generic/getorder.h renamed from include/asm-generic/page.h +4 -4
@@ -1,12 +1,12 @@ -#ifndef _ASM_GENERIC_PAGE_H -#define _ASM_GENERIC_PAGE_H +#ifndef __ASM_GENERIC_GETORDER_H +#define __ASM_GENERIC_GETORDER_H #ifndef __ASSEMBLY__ #include <linux/compiler.h> /* Pure 2^n version of get_order */ -static __inline__ __attribute_const__ int get_order(unsigned long size) +static inline __attribute_const__ int get_order(unsigned long size) { int order;
@@ -21,4 +21,4 @@ static __inline__ __attribute_const__ int get_order(unsigned long size)#endif /* __ASSEMBLY__ */ -#endif /* _ASM_GENERIC_PAGE_H */ +#endif /* __ASM_GENERIC_GETORDER_H */
Signature · 3 lines
1.5.6.3 --
Arnd Bergmann
maintainerPATCH v2 3/9 asm-generic: rename uaccess.h to uaccess-unaligned.h
In reply to Arnd BergmannThe asm-generic/uaccess.h file is only implementing unaligned accesses. Rename it to uaccess-unaligned.h so we can replace it with a generic uaccess.h for all NOMMU architectures.
---
arch/parisc/include/asm/uaccess.h | 2 +-
arch/sparc/include/asm/uaccess_64.h | 2 +-
.../asm-generic/{uaccess.h => uaccess-unaligned.h} | 6 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
rename include/asm-generic/{uaccess.h => uaccess-unaligned.h} (82%)arch/parisc/include/asm/uaccess.h +1 -1
@@ -7,7 +7,7 @@#include <asm/page.h> #include <asm/system.h> #include <asm/cache.h> -#include <asm-generic/uaccess.h> +#include <asm-generic/uaccess-unaligned.h> #define VERIFY_READ 0#define VERIFY_WRITE 1
arch/sparc/include/asm/uaccess_64.h +1 -1
@@ -12,7 +12,7 @@#include <asm/asi.h> #include <asm/system.h> #include <asm/spitfire.h> -#include <asm-generic/uaccess.h> +#include <asm-generic/uaccess-unaligned.h> #endif #ifndef __ASSEMBLY__
include/asm-generic/uaccess-unaligned.h renamed from include/asm-generic/uaccess.h +3 -3
@@ -1,5 +1,5 @@ -#ifndef _ASM_GENERIC_UACCESS_H_ -#define _ASM_GENERIC_UACCESS_H_ +#ifndef __ASM_GENERIC_UACCESS_UNALIGNED_H +#define __ASM_GENERIC_UACCESS_UNALIGNED_H/* * This macro should be used instead of __get_user() when accessing
@@ -23,4 +23,4 @@__copy_to_user ((ptr), &__x,sizeof (*(ptr))) ? -EFAULT :0 ; \ }) -#endif /* _ASM_GENERIC_UACCESS_H */ +#endif /* __ASM_GENERIC_UACCESS_UNALIGNED_H */
Signature · 3 lines
1.5.6.3 --
Arnd Bergmann
maintainerPATCH v2 4/9 asm-generic: make pci.h usable directly
In reply to Arnd BergmannSome generic code is using the horribly misnamed PCI_DMA_BUS_IS_PHYS from asm/pci.h. This makes sure that an architecture without PCI support does not have to define this itself but can rely on the asm-generic version.
--- arch/frv/include/asm/pci.h | 13 +++---------- arch/m32r/include/asm/pci.h | 2 -- include/asm-generic/pci.h | 8 ++++++++ 3 files changed, 11 insertions(+), 12 deletions(-)
arch/frv/include/asm/pci.h +3 -10
@@ -10,8 +10,8 @@* 2 of the License, or (at your option) any later version. */ -#ifndef ASM_PCI_H -#define ASM_PCI_H +#ifndef _ASM_FRV_PCI_H +#define _ASM_FRV_PCI_H#include <linux/mm.h> #include <asm/scatterlist.h>
@@ -43,12 +43,6 @@ extern void pci_free_consistent(struct pci_dev *hwdev, size_t size,/* Return the index of the PCI controller for device PDEV. */ #define pci_controller_num (PDEV ) (0) -/* The PCI address space does equal the physical memory -* address space. The networking and block device layers use -* this boolean for bounce buffer decisions. -*/ -#define PCI_DMA_BUS_IS_PHYS (1) -/* pci_unmap_{page,single} is a nop so... */ #define DECLARE_PCI_UNMAP_ADDR (ADDR_NAME )#define DECLARE_PCI_UNMAP_LEN (LEN_NAME )
@@ -114,5 +108,4 @@ static inline void pci_dma_sync_sg(struct pci_dev *hwdev, sg_dma_address(&sg[i])+sg_dma_len(&sg[i])); } - -#endif +#endif /* _ASM_FRV_PCI_H */
arch/m32r/include/asm/pci.h +0 -2
@@ -3,6 +3,4 @@#include <asm-generic/pci.h> -#define PCI_DMA_BUS_IS_PHYS (1) -#endif /* _ASM_M32R_PCI_H */
include/asm-generic/pci.h +8 -0
@@ -52,4 +52,12 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) }#endif /* HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ */ +/* +* By default, assume that no iommu is in use and that the PCI +* space is mapped to address physical 0. +*/ +#ifndef PCI_DMA_BUS_IS_PHYS +#define PCI_DMA_BUS_IS_PHYS (1)#endif + +#endif /* _ASM_GENERIC_PCI_H */
Signature · 3 lines
1.5.6.3 --
Arnd Bergmann
maintainerPATCH v2 5/9 asm-generic: make bitops.h usable
In reply to Arnd Bergmannbitops.h apparently suffered from some level of bitrot, it was missing the smp_mb__{before,after}_clear_bit functions, and included other headers in an invalid order.
This changes the file so that new architectures can use it out of the box.
--- include/asm-generic/bitops.h | 24 ++++++++++++++++++------ 1 files changed, 18 insertions(+), 6 deletions(-)
include/asm-generic/bitops.h +18 -6
@@ -1,19 +1,29 @@ -#ifndef _ASM_GENERIC_BITOPS_H_ -#define _ASM_GENERIC_BITOPS_H_ +#ifndef __ASM_GENERIC_BITOPS_H +#define __ASM_GENERIC_BITOPS_H/* * For the benefit of those who are trying to port Linux to another * architecture, here are some C-language equivalents. You should * recode these in the native assembly language, if at all possible. -* +* * C language equivalents written by Theodore Ts'o, 9/26/92 */ -#include <asm-generic/bitops/atomic.h> -#include <asm-generic/bitops/non-atomic.h> +#include <linux/irqflags.h> +#include <linux/compiler.h> + +/* +* clear_bit may not imply a memory barrier +*/ +#ifndef smp_mb__before_clear_bit +#define smp_mb__before_clear_bit () smp_mb() +#define smp_mb__after_clear_bit () smp_mb() +#endif +#include <asm-generic/bitops/__ffs.h> #include <asm-generic/bitops/ffz.h> #include <asm-generic/bitops/fls.h> +#include <asm-generic/bitops/__fls.h> #include <asm-generic/bitops/fls64.h> #include <asm-generic/bitops/find.h>
@@ -26,8 +36,10 @@#include <asm-generic/bitops/hweight.h> #include <asm-generic/bitops/lock.h> +#include <asm-generic/bitops/atomic.h> +#include <asm-generic/bitops/non-atomic.h> #include <asm-generic/bitops/ext2-non-atomic.h> #include <asm-generic/bitops/ext2-atomic.h> #include <asm-generic/bitops/minix.h> -#endif /* _ASM_GENERIC_BITOPS_H */ +#endif /* __ASM_GENERIC_BITOPS_H */
Signature · 3 lines
1.5.6.3 --
Arnd Bergmann
maintainerPATCH v2 6/9 asm-generic: add generic versions of common headers
In reply to Arnd BergmannThese are all kernel internal interfaces that get copied around a lot. In most cases, architectures can provide their own optimized versions, but these generic versions can work as well.
I have tried to use the most common contents of each header to allow existing architectures to migrate easily.
Thanks to Remis for suggesting a number of cleanups.
--- include/asm-generic/bugs.h | 10 +++ include/asm-generic/current.h | 9 ++ include/asm-generic/delay.h | 9 ++ include/asm-generic/fb.h | 12 +++ include/asm-generic/hardirq.h | 34 ++++++++ include/asm-generic/irq.h | 18 ++++ include/asm-generic/irqflags.h | 72 ++++++++++++++++ include/asm-generic/kmap_types.h | 29 +++++++ include/asm-generic/linkage.h | 8 ++ include/asm-generic/module.h | 22 +++++ include/asm-generic/mutex.h | 9 ++ include/asm-generic/scatterlist.h | 43 ++++++++++ include/asm-generic/spinlock.h | 11 +++ include/asm-generic/string.h | 10 +++ include/asm-generic/syscalls.h | 60 ++++++++++++++ include/asm-generic/system.h | 161 +++++++++++++++++++++++++++++++++++++ include/asm-generic/user.h | 8 ++ 17 files changed, 525 insertions(+), 0 deletions(-) create mode 100644 include/asm-generic/bugs.h create mode 100644 include/asm-generic/current.h create mode 100644 include/asm-generic/delay.h create mode 100644 include/asm-generic/fb.h create mode 100644 include/asm-generic/hardirq.h create mode 100644 include/asm-generic/irq.h create mode 100644 include/asm-generic/irqflags.h create mode 100644 include/asm-generic/kmap_types.h create mode 100644 include/asm-generic/linkage.h create mode 100644 include/asm-generic/module.h create mode 100644 include/asm-generic/mutex.h create mode 100644 include/asm-generic/scatterlist.h create mode 100644 include/asm-generic/spinlock.h create mode 100644 include/asm-generic/string.h create mode 100644 include/asm-generic/syscalls.h create mode 100644 include/asm-generic/system.h create mode 100644 include/asm-generic/user.h
include/asm-generic/bugs.h new file +10 -0
@@ -0,0 +1,10 @@ +#ifndef __ASM_GENERIC_BUGS_H +#define __ASM_GENERIC_BUGS_H +/* +* This file is included by 'init/main.c' to check for +* architecture-dependent bugs. +*/ + +static inline void check_bugs (void ) { } + +#endif /* __ASM_GENERIC_BUGS_H */
include/asm-generic/current.h new file +9 -0
@@ -0,0 +1,9 @@ +#ifndef __ASM_GENERIC_CURRENT_H +#define __ASM_GENERIC_CURRENT_H + +#include <linux/thread_info.h> + +#define get_current () (current_thread_info()->task) +#define current get_current() + +#endif /* __ASM_GENERIC_CURRENT_H */
include/asm-generic/delay.h new file +9 -0
@@ -0,0 +1,9 @@ +#ifndef __ASM_GENERIC_DELAY_H +#define __ASM_GENERIC_DELAY_H + +extern void __udelay (unsigned long usecs); +extern void __delay (unsigned long loops); + +#define udelay (n) __udelay(n) + +#endif /* __ASM_GENERIC_DELAY_H */
include/asm-generic/fb.h new file +12 -0
@@ -0,0 +1,12 @@ +#ifndef __ASM_GENERIC_FB_H_ +#define __ASM_GENERIC_FB_H_ +#include <linux/fb.h> + +#define fb_pgprotect (...) do {} while (0) + +static inline int fb_is_primary_device (struct fb_info *info) +{ +return 0 ; +} + +#endif /* __ASM_GENERIC_FB_H_ */
include/asm-generic/hardirq.h new file +34 -0
@@ -0,0 +1,34 @@ +#ifndef __ASM_GENERIC_HARDIRQ_H +#define __ASM_GENERIC_HARDIRQ_H + +#include <linux/cache.h> +#include <linux/threads.h> +#include <linux/irq.h> + +typedef struct { +unsigned long __softirq_pending; +}____cacheline_aligned irq_cpustat_t ; + +#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ + +#ifndef HARDIRQ_BITS +#define HARDIRQ_BITS 8 +#endif + +/* +* The hardirq mask has to be large enough to have +* space for potentially all IRQ sources in the system +* nesting on a single CPU: +*/ +#if (1 <<HARDIRQ_BITS ) <NR_IRQS +# error HARDIRQ_BITS is too low! +#endif + +#ifndef ack_bad_irq +static inline void ack_bad_irq (unsigned int irq) +{ +printk (KERN_CRIT "unexpected IRQ trap at vector %02x\n" , irq); +} +#endif + +#endif /* __ASM_GENERIC_HARDIRQ_H */
include/asm-generic/irq.h new file +18 -0
@@ -0,0 +1,18 @@ +#ifndef __ASM_GENERIC_IRQ_H +#define __ASM_GENERIC_IRQ_H + +/* +* NR_IRQS is the upper bound of how many interrupts can be handled +* in the platform. It is used to size the static irq_map array, +* so don't make it too big. +*/ +#ifndef NR_IRQS +#define NR_IRQS 64 +#endif + +static inline int irq_canonicalize (int irq) +{ +return irq; +} + +#endif /* __ASM_GENERIC_IRQ_H */
include/asm-generic/irqflags.h new file +72 -0
72 lines not on this page · raw message
include/asm-generic/kmap_types.h new file +29 -0
@@ -0,0 +1,29 @@ +#ifndef __ASM_GENERIC_KMAP_TYPES_H +#define __ASM_GENERIC_KMAP_TYPES_H + +#ifdef CONFIG_DEBUG_HIGHMEM +# define D (n) __KM_FENCE_##n , +#else +# define D (n) +#endif + +enum km_type { +D(0) KM_BOUNCE_READ, +D(1) KM_SKB_SUNRPC_DATA, +D(2) KM_SKB_DATA_SOFTIRQ, +D(3) KM_USER0, +D(4) KM_USER1, +D(5) KM_BIO_SRC_IRQ, +D(6) KM_BIO_DST_IRQ, +D(7) KM_PTE0, +D(8) KM_PTE1, +D(9) KM_IRQ0, +D(10) KM_IRQ1, +D(11) KM_SOFTIRQ0, +D(12) KM_SOFTIRQ1, +D(13) KM_TYPE_NR +}; + +#undef D + +#endif /* __ASM_GENERIC_KMAP_TYPES_H */
include/asm-generic/linkage.h new file +8 -0
@@ -0,0 +1,8 @@ +#ifndef __ASM_GENERIC_LINKAGE_H +#define __ASM_GENERIC_LINKAGE_H +/* +* linux/linkage.h provides reasonable defaults. +* an architecture can override them by providing its own version. +*/ + +#endif /* __ASM_GENERIC_LINKAGE_H */
include/asm-generic/module.h new file +22 -0
@@ -0,0 +1,22 @@ +#ifndef __ASM_GENERIC_MODULE_H +#define __ASM_GENERIC_MODULE_H + +/* +* Many architectures just need a simple module +* loader without arch specific data. +*/ +struct mod_arch_specific +{ +}; + +#ifdef CONFIG_64BIT +#define Elf_Shdr Elf64_Shdr +#define Elf_Sym Elf64_Sym +#define Elf_Ehdr Elf64_Ehdr +#else +#define Elf_Shdr Elf32_Shdr +#define Elf_Sym Elf32_Sym +#define Elf_Ehdr Elf32_Ehdr +#endif + +#endif /* __ASM_GENERIC_MODULE_H */
include/asm-generic/mutex.h new file +9 -0
@@ -0,0 +1,9 @@ +#ifndef __ASM_GENERIC_MUTEX_H +#define __ASM_GENERIC_MUTEX_H +/* +* Pull in the generic implementation for the mutex fastpath, +* which is a reasonable default on many architectures. +*/ + +#include <asm-generic/mutex-dec.h> +#endif /* __ASM_GENERIC_MUTEX_H */
include/asm-generic/scatterlist.h new file +43 -0
43 lines not on this page · raw message
include/asm-generic/spinlock.h new file +11 -0
@@ -0,0 +1,11 @@ +#ifndef __ASM_GENERIC_SPINLOCK_H +#define __ASM_GENERIC_SPINLOCK_H +/* +* You need to implement asm/spinlock.h for SMP support. The generic +* version does not handle SMP. +*/ +#ifdef CONFIG_SMP +#error need an architecture specific asm/spinlock.h +#endif + +#endif /* __ASM_GENERIC_SPINLOCK_H */
include/asm-generic/string.h new file +10 -0
@@ -0,0 +1,10 @@ +#ifndef __ASM_GENERIC_STRING_H +#define __ASM_GENERIC_STRING_H +/* +* The kernel provides all required functions in lib/string.c +* +* Architectures probably want to provide at least their own optimized +* memcpy and memset functions though. +*/ + +#endif /* __ASM_GENERIC_STRING_H */
include/asm-generic/syscalls.h new file +60 -0
60 lines not on this page · raw message
include/asm-generic/system.h new file +161 -0
161 lines not on this page · raw message
include/asm-generic/user.h new file +8 -0
@@ -0,0 +1,8 @@ +#ifndef __ASM_GENERIC_USER_H +#define __ASM_GENERIC_USER_H +/* +* This file may define a 'struct user' structure. However, it it only +* used for a.out file, which are not supported on new architectures. +*/ + +#endif /* __ASM_GENERIC_USER_H */
Signature · 3 lines
1.5.6.3 --
Arnd Bergmann
maintainerPATCH v2 7/9 asm-generic: add legacy I/O header files
In reply to Arnd BergmannThe dma.h, hw_irq.h, serial.h and timex.h files originally described PC-style i8237, i8259A, i8250 and i8253 chips. Modern architectures live happily without these specific interfaces, but a few definitions from these headers keep getting used in common code.
The new generic headers are what most architectures use anyway nowadays, just implementing the minimal definitions.
--- include/asm-generic/dma.h | 15 +++++++++++++++ include/asm-generic/hw_irq.h | 9 +++++++++ include/asm-generic/serial.h | 13 +++++++++++++ include/asm-generic/timex.h | 29 +++++++++++++++++++++++++++++ 4 files changed, 66 insertions(+), 0 deletions(-) create mode 100644 include/asm-generic/dma.h create mode 100644 include/asm-generic/hw_irq.h create mode 100644 include/asm-generic/serial.h create mode 100644 include/asm-generic/timex.h
include/asm-generic/dma.h new file +15 -0
@@ -0,0 +1,15 @@ +#ifndef __ASM_GENERIC_DMA_H +#define __ASM_GENERIC_DMA_H +/* +* This file traditionally describes the i8237 PC style DMA controller. +* Most architectures don't have these any more and can get the minimal +* implementation from kernel/dma.c by not defining MAX_DMA_CHANNELS. +* +* Some code relies on seeing MAX_DMA_ADDRESS though. +*/ +#define MAX_DMA_ADDRESS PAGE_OFFSET + +extern int request_dma (unsigned int dmanr,const char *device_id); +extern void free_dma (unsigned int dmanr); + +#endif /* __ASM_GENERIC_DMA_H */
include/asm-generic/hw_irq.h new file +9 -0
@@ -0,0 +1,9 @@ +#ifndef __ASM_GENERIC_HW_IRQ_H +#define __ASM_GENERIC_HW_IRQ_H +/* +* hw_irq.h has internal declarations for the low-level interrupt +* controller, like the original i8259A. +* In general, this is not needed for new architectures. +*/ + +#endif /* __ASM_GENERIC_HW_IRQ_H */
include/asm-generic/serial.h new file +13 -0
@@ -0,0 +1,13 @@ +#ifndef __ASM_GENERIC_SERIAL_H +#define __ASM_GENERIC_SERIAL_H + +/* +* This should not be an architecture specific #define, oh well. +* +* Traditionally, it just describes i8250 and related serial ports +* that have this clock rate. +*/ + +#define BASE_BAUD (1843200 / 16) + +#endif /* __ASM_GENERIC_SERIAL_H */
include/asm-generic/timex.h new file +29 -0
@@ -0,0 +1,29 @@ +#ifndef __ASM_GENERIC_TIMEX_H +#define __ASM_GENERIC_TIMEX_H + +/* +* CLOCK_TICK_RATE is highly PC-specific and should not +* be used in portable code. 1193182 is the value for the +* original i8253 PIC. +*/ +#ifndef CLOCK_TICK_RATE +#define CLOCK_TICK_RATE 1193182 +#endif + +/* +* If you have a cycle counter, return the value here. +*/ +typedef unsigned long cycles_t ; +static inline cycles_t get_cycles (void ) +{ +return 0 ; +} + +/* +* Architectures are encouraged to implement read_current_timer +* and define this in order to avoid the expensive delay loop +* calibration during boot. +*/ +#undef ARCH_HAS_READ_CURRENT_TIMER + +#endif /* __ASM_GENERIC_TIMEX_H */
Signature · 3 lines
1.5.6.3 --
Arnd Bergmann
maintainerPATCH v2 8/9 asm-generic: add generic atomic.h and io.h
In reply to Arnd Bergmannatomic.h and io.h are based on the mn10300 architecture, which is already pretty generic and can be used by other architectures that do not have hardware support for atomic operations or out-of-order I/O access.
--- include/asm-generic/atomic.h | 165 +++++++++++++++++++++++ include/asm-generic/io.h | 300 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 465 insertions(+), 0 deletions(-) create mode 100644 include/asm-generic/atomic.h create mode 100644 include/asm-generic/io.h
include/asm-generic/atomic.h new file +165 -0
@@ -0,0 +1,165 @@ +/* +* Generic C implementation of atomic counter operations +* Originally implemented for MN10300. +* +* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. +* Written by David Howells ([email protected]) +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public Licence +* as published by the Free Software Foundation; either version +* 2 of the Licence, or (at your option) any later version. +*/ +#ifndef __ASM_GENERIC_ATOMIC_H +#define __ASM_GENERIC_ATOMIC_H + +#ifdef CONFIG_SMP +#error not SMP safe +#endif + +/* +* Atomic operations that C can't guarantee us. Useful for +* resource counting etc.. +*/ + +#define ATOMIC_INIT (i) { (i) } + +#ifdef __KERNEL__ + +/** +* atomic_read - read atomic variable +* @v: pointer of type atomic_t +* +* Atomically reads the value of @v. Note that the guaranteed +* useful range of an atomic_t is only 24 bits. +*/ +#define atomic_read (v) ((v)->counter) + +/** +* atomic_set - set atomic variable +* @v: pointer of type atomic_t +* @i: required value +* +* Atomically sets the value of @v to @i. Note that the guaranteed +* useful range of an atomic_t is only 24 bits. +*/ +#define atomic_set (v, i) (((v)->counter) = (i)) + +#include <asm/system.h> + +/** +* atomic_add_return - add integer to atomic variable +* @i: integer value to add +* @v: pointer of type atomic_t +* +* Atomically adds @i to @v and returns the result +* Note that the guaranteed useful range of an atomic_t is only 24 bits. +*/ +static inline int atomic_add_return (int i,atomic_t *v) +{ +unsigned long flags; +int temp; + +local_irq_save (flags); + temp = v->counter; + temp += i; + v->counter = temp; +local_irq_restore (flags); + +return temp; +} + +/** +* atomic_sub_return - subtract integer from atomic variable +* @i: integer value to subtract +* @v: pointer of type atomic_t +* +* Atomically subtracts @i from @v and returns the result +* Note that the guaranteed useful range of an atomic_t is only 24 bits. +*/ +static inline int atomic_sub_return (int i,atomic_t *v) +{ +unsigned long flags; +int temp; + +local_irq_save (flags); + temp = v->counter; + temp -= i; + v->counter = temp; +local_irq_restore (flags); + +return temp; +} + +static inline int atomic_add_negative (int i,atomic_t *v) +{ +return atomic_add_return (i, v) <0 ; +} + +static inline void atomic_add (int i,atomic_t *v) +{ +atomic_add_return (i, v); +} + +static inline void atomic_sub (int i,atomic_t *v) +{ +atomic_sub_return (i, v); +} + +static inline void atomic_inc (atomic_t *v) +{ +atomic_add_return (1 , v); +} + +static inline void atomic_dec (atomic_t *v) +{ +atomic_sub_return (1 , v); +} + +#define atomic_dec_return (v) atomic_sub_return(1, (v)) +#define atomic_inc_return (v) atomic_add_return(1, (v)) + +#define atomic_sub_and_test (i, v) (atomic_sub_return((i), (v)) == 0) +#define atomic_dec_and_test (v) (atomic_sub_return(1, (v)) == 0) +#define atomic_inc_and_test (v) (atomic_add_return(1, (v)) == 0) + +#define atomic_add_unless (v, a, u) \ +({ \ + int c, old; \ + c = atomic_read(v); \ + while (c != (u) && (old = atomic_cmpxchg((v), c, c + (a))) != c) \ + c = old; \ + c != (u); \ +}) + +#define atomic_inc_not_zero (v) atomic_add_unless((v), 1, 0) + +static inline void atomic_clear_mask (unsigned long mask,unsigned long *addr) +{ +unsigned long flags; + + mask = ~mask; +local_irq_save (flags); + *addr &= mask; +local_irq_restore (flags); +} + +#define atomic_xchg (ptr, v) (xchg(&(ptr)->counter, (v))) +#define atomic_cmpxchg (v, old, new) (cmpxchg(&((v)->counter), (old), (new))) + +#define cmpxchg_local (ptr, o, n) \ + ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ + (unsigned long)(n), sizeof(*(ptr)))) + +#define cmpxchg64_local (ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) + +/* Atomic operations are already serializing on MN10300??? */ +#define smp_mb__before_atomic_dec () barrier() +#define smp_mb__after_atomic_dec () barrier() +#define smp_mb__before_atomic_inc () barrier() +#define smp_mb__after_atomic_inc () barrier() + +#include <asm-generic/atomic-long.h> + +#endif /* __KERNEL__ */ +#endif /* __ASM_GENERIC_ATOMIC_H */
include/asm-generic/io.h new file +300 -0
300 lines not on this page · raw message
Signature · 3 lines
1.5.6.3 --
Arnd Bergmann
maintainerPATCH v2 9/9 asm-generic: add generic NOMMU versions of some headers
In reply to Arnd BergmannMemory management in generic is highly architecture specific, but on NOMMU architectures, it is mostly trivial, so just add a default implementation in asm-generic that applies to all NOMMU architectures.
The two files cache.h and cacheflush.h can possibly also be used by architectures that have an MMU but never require flushing the cache or have cache lines larger than 32 bytes.
--- include/asm-generic/cache.h | 12 ++ include/asm-generic/cacheflush.h | 30 +++++ include/asm-generic/mmu.h | 14 +++ include/asm-generic/mmu_context.h | 45 +++++++ include/asm-generic/page.h | 99 ++++++++++++++++ include/asm-generic/pgalloc.h | 12 ++ include/asm-generic/segment.h | 9 ++ include/asm-generic/tlbflush.h | 18 +++ include/asm-generic/uaccess.h | 235 +++++++++++++++++++++++++++++++++++++ 9 files changed, 474 insertions(+), 0 deletions(-) create mode 100644 include/asm-generic/cache.h create mode 100644 include/asm-generic/cacheflush.h create mode 100644 include/asm-generic/mmu.h create mode 100644 include/asm-generic/mmu_context.h create mode 100644 include/asm-generic/page.h create mode 100644 include/asm-generic/pgalloc.h create mode 100644 include/asm-generic/segment.h create mode 100644 include/asm-generic/tlbflush.h create mode 100644 include/asm-generic/uaccess.h
include/asm-generic/cache.h new file +12 -0
@@ -0,0 +1,12 @@ +#ifndef __ASM_GENERIC_CACHE_H +#define __ASM_GENERIC_CACHE_H +/* +* 32 bytes appears to be the most common cache line size, +* so make that the default here. Architectures with larger +* cache lines need to provide their own cache.h. +*/ + +#define L1_CACHE_SHIFT 5 +#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) + +#endif /* __ASM_GENERIC_CACHE_H */
include/asm-generic/cacheflush.h new file +30 -0
@@ -0,0 +1,30 @@ +#ifndef __ASM_CACHEFLUSH_H +#define __ASM_CACHEFLUSH_H + +/* Keep includes the same across arches. */ +#include <linux/mm.h> + +/* +* The cache doesn't need to be flushed when TLB entries change when +* the cache is mapped to physical memory, not virtual memory +*/ +#define flush_cache_all () do { } while (0) +#define flush_cache_mm (mm) do { } while (0) +#define flush_cache_dup_mm (mm) do { } while (0) +#define flush_cache_range (vma, start, end) do { } while (0) +#define flush_cache_page (vma, vmaddr, pfn) do { } while (0) +#define flush_dcache_page (page) do { } while (0) +#define flush_dcache_mmap_lock (mapping) do { } while (0) +#define flush_dcache_mmap_unlock (mapping) do { } while (0) +#define flush_icache_range (start, end) do { } while (0) +#define flush_icache_page (vma,pg) do { } while (0) +#define flush_icache_user_range (vma,pg,adr,len) do { } while (0) +#define flush_cache_vmap (start, end) do { } while (0) +#define flush_cache_vunmap (start, end) do { } while (0) + +#define copy_to_user_page (vma, page, vaddr, dst, src, len) \ + memcpy(dst, src, len) +#define copy_from_user_page (vma, page, vaddr, dst, src, len) \ + memcpy(dst, src, len) + +#endif /* __ASM_CACHEFLUSH_H */
include/asm-generic/mmu.h new file +14 -0
@@ -0,0 +1,14 @@ +#ifndef __ASM_GENERIC_MMU_H +#define __ASM_GENERIC_MMU_H + +/* +* This is the mmu.h header for nommu implementations. +* Architectures with an MMU need something more complex. +*/ + +typedef struct { +struct vm_list_struct *vmlist; +unsigned long end_brk; +}mm_context_t ; + +#endif /* __ASM_GENERIC_MMU_H */
include/asm-generic/mmu_context.h new file +45 -0
45 lines not on this page · raw message
include/asm-generic/page.h new file +99 -0
99 lines not on this page · raw message
include/asm-generic/pgalloc.h new file +12 -0
@@ -0,0 +1,12 @@ +#ifndef __ASM_GENERIC_PGALLOC_H +#define __ASM_GENERIC_PGALLOC_H +/* +* an empty file is enough for a nommu architecture +*/ +#ifdef CONFIG_MMU +#error need to implement an architecture specific asm/pgalloc.h +#endif + +#define check_pgt_cache () do { } while (0) + +#endif /* __ASM_GENERIC_PGALLOC_H */
include/asm-generic/segment.h new file +9 -0
@@ -0,0 +1,9 @@ +#ifndef __ASM_GENERIC_SEGMENT_H +#define __ASM_GENERIC_SEGMENT_H +/* +* Only here because we have some old header files that expect it... +* +* New architectures probably don't want to have their own version. +*/ + +#endif /* __ASM_GENERIC_SEGMENT_H */
include/asm-generic/tlbflush.h new file +18 -0
@@ -0,0 +1,18 @@ +#ifndef __ASM_GENERIC_TLBFLUSH_H +#define __ASM_GENERIC_TLBFLUSH_H +/* +* This is a dummy tlbflush implementation that can be used on all +* nommu architectures. +* If you have an MMU, you need to write your own functions. +*/ +#ifdef CONFIG_MMU +#error need to implement an architecture specific asm/tlbflush.h +#endif + +static inline void flush_tlb_mm (struct mm_struct *mm) +{ +BUG (); +} + + +#endif /* __ASM_GENERIC_TLBFLUSH_H */
include/asm-generic/uaccess.h new file +235 -0
235 lines not on this page · raw message
Signature · 3 lines
1.5.6.3 --