From: Andy P. <at...@us...> - 2002-04-09 12:34:03
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-arm/proc-armo In directory usw-pr-cvs1:/tmp/cvs-serv9454/asm-arm/proc-armo Modified Files: cache.h pgtable.h ptrace.h system.h uaccess.h Added Files: pgalloc.h Log Message: Synch to 2.4.15 commit 1 --- NEW FILE --- /* * linux/include/asm-arm/proc-armo/pgalloc.h * * Copyright (C) 2001 Russell King * * Page table allocation/freeing primitives for 26-bit ARM processors. */ /* unfortunately, this includes linux/mm.h and the rest of the universe. */ #include <linux/slab.h> extern kmem_cache_t *pte_cache; /* * Allocate one PTE table. * * Note that we keep the processor copy of the PTE entries separate * from the Linux copy. The processor copies are offset by -PTRS_PER_PTE * words from the Linux copy. */ static inline pte_t *pte_alloc_one(struct mm_struct *mm, unsigned long address) { return kmem_cache_alloc(pte_cache, GFP_KERNEL); } /* * Free one PTE table. */ static inline void pte_free_slow(pte_t *pte) { if (pte) kmem_cache_free(pte_cache, pte); } /* * Populate the pmdp entry with a pointer to the pte. This pmd is part * of the mm address space. * * If 'mm' is the init tasks mm, then we are doing a vmalloc, and we * need to set stuff up correctly for it. */ #define pmd_populate(mm,pmdp,pte) \ do { \ set_pmd(pmdp, __mk_pmd(pte, _PAGE_TABLE)); \ } while (0) Index: cache.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-arm/proc-armo/cache.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- cache.h 14 Jan 2001 16:58:42 -0000 1.1.1.1 +++ cache.h 9 Apr 2002 12:33:10 -0000 1.2 @@ -1,7 +1,7 @@ /* * linux/include/asm-arm/proc-armo/cache.h * - * Copyright (C) 1999-2000 Russell King + * Copyright (C) 1999-2001 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -37,14 +37,15 @@ * - flush_tlb_range(mm, start, end) flushes a range of pages */ #define flush_tlb_all() memc_update_all() -#define flush_tlb_mm(mm) do { } while (0) -#define flush_tlb_range(mm, start, end) do { (void)(start); (void)(end); } while (0) +#define flush_tlb_mm(mm) memc_update_mm(mm) +#define flush_tlb_range(mm,start,end) \ + do { memc_update_mm(mm); (void)(start); (void)(end); } while (0) #define flush_tlb_page(vma, vmaddr) do { } while (0) /* * The following handle the weird MEMC chip */ -extern __inline__ void memc_update_all(void) +static inline void memc_update_all(void) { struct task_struct *p; @@ -57,7 +58,7 @@ processor._set_pgd(current->active_mm->pgd); } -extern __inline__ void memc_update_mm(struct mm_struct *mm) +static inline void memc_update_mm(struct mm_struct *mm) { cpu_memc_update_all(mm->pgd); @@ -65,20 +66,27 @@ processor._set_pgd(mm->pgd); } -extern __inline__ void -memc_update_addr(struct mm_struct *mm, pte_t pte, unsigned long vaddr) +static inline void +memc_clear(struct mm_struct *mm, struct page *page) { - cpu_memc_update_entry(mm->pgd, pte_val(pte), vaddr); + cpu_memc_update_entry(mm->pgd, (unsigned long) page_address(page), 0); if (mm == current->active_mm) processor._set_pgd(mm->pgd); } -extern __inline__ void -memc_clear(struct mm_struct *mm, struct page *page) +static inline void +memc_update_addr(struct mm_struct *mm, pte_t pte, unsigned long vaddr) { - cpu_memc_update_entry(mm->pgd, (unsigned long) page_address(page), 0); + cpu_memc_update_entry(mm->pgd, pte_val(pte), vaddr); if (mm == current->active_mm) processor._set_pgd(mm->pgd); +} + +static inline void +update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t pte) +{ + struct mm_struct *mm = vma->vm_mm; + memc_update_addr(mm, pte, addr); } Index: pgtable.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-arm/proc-armo/pgtable.h,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- pgtable.h 25 Feb 2001 23:14:53 -0000 1.1.1.2 +++ pgtable.h 9 Apr 2002 12:33:10 -0000 1.2 @@ -1,7 +1,7 @@ /* * linux/include/asm-arm/proc-armo/pgtable.h * - * Copyright (C) 1995-1999 Russell King + * Copyright (C) 1995-2001 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -33,7 +33,7 @@ #define pmd_bad(pmd) ((pmd_val(pmd) & 0xfc000002)) #define set_pmd(pmdp,pmd) ((*(pmdp)) = (pmd)) -extern __inline__ pmd_t __mk_pmd(pte_t *ptep, unsigned long prot) +static inline pmd_t __mk_pmd(pte_t *ptep, unsigned long prot) { unsigned long pte_ptr = (unsigned long)ptep; pmd_t pmd; @@ -43,11 +43,7 @@ return pmd; } -/* these are aliases for the above function */ -#define mk_user_pmd(ptep) __mk_pmd(ptep, _PAGE_TABLE) -#define mk_kernel_pmd(ptep) __mk_pmd(ptep, _PAGE_TABLE) - -extern __inline__ unsigned long pmd_page(pmd_t pmd) +static inline unsigned long pmd_page(pmd_t pmd) { return __phys_to_virt(pmd_val(pmd) & ~_PAGE_TABLE); } @@ -81,18 +77,17 @@ #define pte_dirty(pte) (!(pte_val(pte) & _PAGE_CLEAN)) #define pte_young(pte) (!(pte_val(pte) & _PAGE_OLD)) -extern inline pte_t pte_nocache(pte_t pte) { return pte; } -extern inline pte_t pte_wrprotect(pte_t pte) { pte_val(pte) |= _PAGE_READONLY; return pte; } -extern inline pte_t pte_rdprotect(pte_t pte) { pte_val(pte) |= _PAGE_NOT_USER; return pte; } -extern inline pte_t pte_exprotect(pte_t pte) { pte_val(pte) |= _PAGE_NOT_USER; return pte; } -extern inline pte_t pte_mkclean(pte_t pte) { pte_val(pte) |= _PAGE_CLEAN; return pte; } -extern inline pte_t pte_mkold(pte_t pte) { pte_val(pte) |= _PAGE_OLD; return pte; } - -extern inline pte_t pte_mkwrite(pte_t pte) { pte_val(pte) &= ~_PAGE_READONLY; return pte; } -extern inline pte_t pte_mkread(pte_t pte) { pte_val(pte) &= ~_PAGE_NOT_USER; return pte; } -extern inline pte_t pte_mkexec(pte_t pte) { pte_val(pte) &= ~_PAGE_NOT_USER; return pte; } -extern inline pte_t pte_mkdirty(pte_t pte) { pte_val(pte) &= ~_PAGE_CLEAN; return pte; } -extern inline pte_t pte_mkyoung(pte_t pte) { pte_val(pte) &= ~_PAGE_OLD; return pte; } +static inline pte_t pte_wrprotect(pte_t pte) { pte_val(pte) |= _PAGE_READONLY; return pte; } +static inline pte_t pte_rdprotect(pte_t pte) { pte_val(pte) |= _PAGE_NOT_USER; return pte; } +static inline pte_t pte_exprotect(pte_t pte) { pte_val(pte) |= _PAGE_NOT_USER; return pte; } +static inline pte_t pte_mkclean(pte_t pte) { pte_val(pte) |= _PAGE_CLEAN; return pte; } +static inline pte_t pte_mkold(pte_t pte) { pte_val(pte) |= _PAGE_OLD; return pte; } + +static inline pte_t pte_mkwrite(pte_t pte) { pte_val(pte) &= ~_PAGE_READONLY; return pte; } +static inline pte_t pte_mkread(pte_t pte) { pte_val(pte) &= ~_PAGE_NOT_USER; return pte; } +static inline pte_t pte_mkexec(pte_t pte) { pte_val(pte) &= ~_PAGE_NOT_USER; return pte; } +static inline pte_t pte_mkdirty(pte_t pte) { pte_val(pte) &= ~_PAGE_CLEAN; return pte; } +static inline pte_t pte_mkyoung(pte_t pte) { pte_val(pte) &= ~_PAGE_OLD; return pte; } #define pte_alloc_kernel pte_alloc Index: ptrace.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-arm/proc-armo/ptrace.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- ptrace.h 14 Jan 2001 16:58:42 -0000 1.1.1.1 +++ ptrace.h 9 Apr 2002 12:33:10 -0000 1.2 @@ -1,7 +1,7 @@ /* * linux/include/asm-arm/proc-armo/ptrace.h * - * Copyright (C) 1996-1999 Russell King + * Copyright (C) 1996-2001 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -14,6 +14,10 @@ #define FIQ26_MODE 0x01 #define IRQ26_MODE 0x02 #define SVC26_MODE 0x03 +#define USR_MODE USR26_MODE +#define FIQ_MODE FIQ26_MODE +#define IRQ_MODE IRQ26_MODE +#define SVC_MODE SVC26_MODE #define MODE_MASK 0x03 #define F_BIT (1 << 26) #define I_BIT (1 << 27) Index: system.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-arm/proc-armo/system.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- system.h 14 Jan 2001 16:58:42 -0000 1.1.1.1 +++ system.h 9 Apr 2002 12:33:10 -0000 1.2 @@ -12,7 +12,9 @@ #include <asm/proc-fns.h> -extern __inline__ unsigned long __xchg(unsigned long x, volatile void *ptr, int size) +#define vectors_base() (0) + +static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size) { extern void __bad_xchg(volatile void *, int); Index: uaccess.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-arm/proc-armo/uaccess.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- uaccess.h 14 Jan 2001 16:58:43 -0000 1.1.1.1 +++ uaccess.h 9 Apr 2002 12:33:10 -0000 1.2 @@ -25,7 +25,7 @@ extern uaccess_t uaccess_user, uaccess_kernel; -extern __inline__ void set_fs (mm_segment_t fs) +static inline void set_fs (mm_segment_t fs) { current->addr_limit = fs; current->thread.uaccess = fs == USER_DS ? &uaccess_user : &uaccess_kernel; |