text: /*
   *  linux/include/asm-arm26/proc-fns.h
   *
   *  Copyright (C) 2000 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
   * published by the Free Software Foundation.
   */
  #ifndef __ASSEMBLY__
  
  #include <asm/page.h>
  
  /*
   * Don't change this structure - ASM code
   * relies on it.
   */
  extern struct processor {
  	/* 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);
  	/* set the MEMC hardware mappings */
  	void (*_set_pgd)(pgd_t *pgd);
  	/* XCHG */
  	unsigned long (*_xchg_1)(unsigned long x, volatile void *ptr);
  	unsigned long (*_xchg_4)(unsigned long x, volatile void *ptr);
  } processor;
  
  extern const struct processor arm2_processor_functions;
  extern const struct processor arm250_processor_functions;
  extern const struct processor arm3_processor_functions;
  
  #define cpu_check_bugs()			processor._check_bugs()
  #define cpu_proc_init()				processor._proc_init()
  #define cpu_proc_fin()				processor._proc_fin()
  #define cpu_do_idle()				do { } while (0)
  #define cpu_switch_mm(pgd,mm)			processor._set_pgd(pgd)
  #define cpu_xchg_1(x,ptr)			processor._xchg_1(x,ptr)
  #define cpu_xchg_4(x,ptr)			processor._xchg_4(x,ptr)
  
  
  //FIXME - these shouldnt be in proc-fn.h
  extern void cpu_memc_update_all(pgd_t *pgd);
  extern void cpu_memc_update_entry(pgd_t *pgd, unsigned long phys_pte, unsigned long log_addr);
  
  #endif
  