2005-04-17 02:20:36 +04:00
/*
* linux / include / asm - arm / cpu - multi32 . 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 .
*/
# include <asm/page.h>
struct mm_struct ;
/*
* Don ' t change this structure - ASM code
* relies on it .
*/
extern struct processor {
/* MISC
* get data abort address / flags
*/
void ( * _data_abort ) ( unsigned long pc ) ;
2008-04-19 01:43:07 +04:00
/*
* Retrieve prefetch fault address
*/
unsigned long ( * _prefetch_abort ) ( unsigned long lr ) ;
2005-04-17 02:20:36 +04:00
/*
* Set up any processor specifics
*/
void ( * _proc_init ) ( void ) ;
/*
* Disable any processor specifics
*/
void ( * _proc_fin ) ( void ) ;
/*
* Special stuff for a reset
*/
2005-08-24 01:47:52 +04:00
void ( * reset ) ( unsigned long addr ) __attribute__ ( ( noreturn ) ) ;
2005-04-17 02:20:36 +04:00
/*
* Idle the processor
*/
int ( * _do_idle ) ( void ) ;
/*
* Processor architecture specific
*/
/*
* clean a virtual address range from the
* D - cache without flushing the cache .
*/
void ( * dcache_clean_area ) ( void * addr , int size ) ;
/*
* Set the page table
*/
void ( * switch_mm ) ( unsigned long pgd_phys , struct mm_struct * mm ) ;
/*
2006-12-13 17:34:43 +03:00
* Set a possibly extended PTE . Non - extended PTEs should
* ignore ' ext ' .
2005-04-17 02:20:36 +04:00
*/
2006-12-13 17:34:43 +03:00
void ( * set_pte_ext ) ( pte_t * ptep , pte_t pte , unsigned int ext ) ;
2005-04-17 02:20:36 +04:00
} processor ;
# define cpu_proc_init() processor._proc_init()
# define cpu_proc_fin() processor._proc_fin()
# define cpu_reset(addr) processor.reset(addr)
# define cpu_do_idle() processor._do_idle()
# define cpu_dcache_clean_area(addr,sz) processor.dcache_clean_area(addr,sz)
2006-12-13 17:34:43 +03:00
# define cpu_set_pte_ext(ptep,pte,ext) processor.set_pte_ext(ptep,pte,ext)
2005-04-17 02:20:36 +04:00
# define cpu_do_switch_mm(pgd,mm) processor.switch_mm(pgd,mm)