patch-2.3.16 linux/include/asm-arm/proc-fns.h
Next file: linux/include/asm-arm/processor.h
Previous file: linux/include/asm-arm/proc-armv/system.h
Back to the patch index
Back to the overall index
- Lines: 174
- Date:
Mon Aug 30 18:15:21 1999
- Orig file:
v2.3.15/linux/include/asm-arm/proc-fns.h
- Orig date:
Mon Aug 2 10:19:52 1999
diff -u --recursive --new-file v2.3.15/linux/include/asm-arm/proc-fns.h linux/include/asm-arm/proc-fns.h
@@ -1,126 +1,61 @@
/*
* linux/include/asm-arm/proc-fns.h
*
- * Copyright (C) 1997 Russell King
+ * Copyright (C) 1997-1999 Russell King
*/
#ifndef __ASM_PROCFNS_H
#define __ASM_PROCFNS_H
-#include <asm/page.h>
-
#ifdef __KERNEL__
-/* forward-declare task_struct */
-struct task_struct;
+#include <linux/config.h>
/*
- * Don't change this structure
+ * Work out if we need multiple CPU support
*/
-extern struct processor {
- const char *name;
- /* MISC
- * get data abort address/flags
- */
- void (*_data_abort)(unsigned long pc);
- /*
- * check for any bugs
- */
- void (*_check_bugs)(void);
- /*
- * Set up any processor specifics
- */
- void (*_proc_init)(void);
- /*
- * Disable any processor specifics
- */
- void (*_proc_fin)(void);
- /*
- * Processor architecture specific
- */
- union {
- struct {
- /* CACHE
- *
- * flush all caches
- */
- void (*_flush_cache_all)(void);
- /*
- * flush a specific page or pages
- */
- void (*_flush_cache_area)(unsigned long address, unsigned long end, int flags);
- /*
- * flush cache entry for an address
- */
- void (*_flush_cache_entry)(unsigned long address);
- /*
- * clean a virtual address range from the
- * D-cache without flushing the cache.
- */
- void (*_clean_cache_area)(unsigned long start, unsigned long size);
- /*
- * flush a page to RAM
- */
- void (*_flush_ram_page)(unsigned long page);
- /* TLB
- *
- * flush all TLBs
- */
- void (*_flush_tlb_all)(void);
- /*
- * flush a specific TLB
- */
- void (*_flush_tlb_area)(unsigned long address, unsigned long end, int flags);
- /*
- * Set the page table
- */
- void (*_set_pgd)(unsigned long pgd_phys);
- /*
- * Set a PMD (handling IMP bit 4)
- */
- void (*_set_pmd)(pmd_t *pmdp, pmd_t pmd);
- /*
- * Set a PTE
- */
- void (*_set_pte)(pte_t *ptep, pte_t pte);
- /*
- * Special stuff for a reset
- */
- unsigned long (*reset)(void);
- /*
- * flush an icached page
- */
- void (*_flush_icache_area)(unsigned long start, unsigned long size);
- /*
- * write back dirty cached data
- */
- void (*_cache_wback_area)(unsigned long start, unsigned long end);
- /*
- * purge cached data without (necessarily) writing it back
- */
- void (*_cache_purge_area)(unsigned long start, unsigned long end);
- } armv3v4;
- struct {
- /* MEMC
- *
- * remap memc tables
- */
- void (*_remap_memc)(void *tsk);
- /*
- * update task's idea of mmap
- */
- void (*_update_map)(void *tsk);
- /*
- * update task's idea after abort
- */
- void (*_update_mmu_cache)(void *vma, unsigned long addr, pte_t pte);
- /* XCHG
- */
- unsigned long (*_xchg_1)(unsigned long x, volatile void *ptr);
- unsigned long (*_xchg_2)(unsigned long x, volatile void *ptr);
- unsigned long (*_xchg_4)(unsigned long x, volatile void *ptr);
- } armv2;
- } u;
-} processor;
-#endif
+#undef MULTI_CPU
+#undef CPU_NAME
+
+#ifdef CONFIG_CPU_26
+# define CPU_INCLUDE_NAME "asm/cpu-multi26.h"
+# define MULTI_CPU
+#endif
+
+#ifdef CONFIG_CPU_32
+# define CPU_INCLUDE_NAME "asm/cpu-multi32.h"
+# ifdef CONFIG_CPU_ARM6
+# ifdef CPU_NAME
+# undef MULTI_CPU
+# define MULTI_CPU
+# else
+# define CPU_NAME arm6
+# endif
+# endif
+# ifdef CONFIG_CPU_ARM7
+# ifdef CPU_NAME
+# undef MULTI_CPU
+# define MULTI_CPU
+# else
+# define CPU_NAME arm7
+# endif
+# endif
+# ifdef CONFIG_CPU_SA110
+# ifdef CPU_NAME
+# undef MULTI_CPU
+# define MULTI_CPU
+# else
+# define CPU_NAME sa110
+# endif
+# endif
#endif
+#ifndef MULTI_CPU
+#undef CPU_INCLUDE_NAME
+#define CPU_INCLUDE_NAME "asm/cpu-single.h"
+#endif
+
+#include CPU_INCLUDE_NAME
+
+#endif /* __KERNEL__ */
+
+#endif /* __ASM_PROCFNS_H */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)