Home | History | Annotate | Download | only in asm-arm
      1 /*
      2  *  linux/include/asm-arm/glue.h
      3  *
      4  *  Copyright (C) 1997-1999 Russell King
      5  *  Copyright (C) 2000-2002 Deep Blue Solutions Ltd.
      6  *
      7  * This program is free software; you can redistribute it and/or modify
      8  * it under the terms of the GNU General Public License version 2 as
      9  * published by the Free Software Foundation.
     10  *
     11  *  This file provides the glue to stick the processor-specific bits
     12  *  into the kernel in an efficient manner.  The idea is to use branches
     13  *  when we're only targetting one class of TLB, or indirect calls
     14  *  when we're targetting multiple classes of TLBs.
     15  */
     16 #ifdef __KERNEL__
     17 
     18 
     19 #ifdef __STDC__
     20 #define ____glue(name,fn)	name##fn
     21 #else
     22 #define ____glue(name,fn)	name/**/fn
     23 #endif
     24 #define __glue(name,fn)		____glue(name,fn)
     25 
     26 
     27 
     28 /*
     29  *	Data Abort Model
     30  *	================
     31  *
     32  *	We have the following to choose from:
     33  *	  arm6          - ARM6 style
     34  *	  arm7		- ARM7 style
     35  *	  v4_early	- ARMv4 without Thumb early abort handler
     36  *	  v4t_late	- ARMv4 with Thumb late abort handler
     37  *	  v4t_early	- ARMv4 with Thumb early abort handler
     38  *	  v5tej_early	- ARMv5 with Thumb and Java early abort handler
     39  *	  xscale	- ARMv5 with Thumb with Xscale extensions
     40  *	  v6_early	- ARMv6 generic early abort handler
     41  */
     42 #undef CPU_ABORT_HANDLER
     43 #undef MULTI_ABORT
     44 
     45 #if defined(CONFIG_CPU_ARM610)
     46 # ifdef CPU_ABORT_HANDLER
     47 #  define MULTI_ABORT 1
     48 # else
     49 #  define CPU_ABORT_HANDLER cpu_arm6_data_abort
     50 # endif
     51 #endif
     52 
     53 #if defined(CONFIG_CPU_ARM710)
     54 # ifdef CPU_ABORT_HANDLER
     55 #  define MULTI_ABORT 1
     56 # else
     57 #  define CPU_ABORT_HANDLER cpu_arm7_data_abort
     58 # endif
     59 #endif
     60 
     61 #ifdef CONFIG_CPU_ABRT_LV4T
     62 # ifdef CPU_ABORT_HANDLER
     63 #  define MULTI_ABORT 1
     64 # else
     65 #  define CPU_ABORT_HANDLER v4t_late_abort
     66 # endif
     67 #endif
     68 
     69 #ifdef CONFIG_CPU_ABRT_EV4
     70 # ifdef CPU_ABORT_HANDLER
     71 #  define MULTI_ABORT 1
     72 # else
     73 #  define CPU_ABORT_HANDLER v4_early_abort
     74 # endif
     75 #endif
     76 
     77 #ifdef CONFIG_CPU_ABRT_EV4T
     78 # ifdef CPU_ABORT_HANDLER
     79 #  define MULTI_ABORT 1
     80 # else
     81 #  define CPU_ABORT_HANDLER v4t_early_abort
     82 # endif
     83 #endif
     84 
     85 #ifdef CONFIG_CPU_ABRT_EV5TJ
     86 # ifdef CPU_ABORT_HANDLER
     87 #  define MULTI_ABORT 1
     88 # else
     89 #  define CPU_ABORT_HANDLER v5tj_early_abort
     90 # endif
     91 #endif
     92 
     93 #ifdef CONFIG_CPU_ABRT_EV5T
     94 # ifdef CPU_ABORT_HANDLER
     95 #  define MULTI_ABORT 1
     96 # else
     97 #  define CPU_ABORT_HANDLER v5t_early_abort
     98 # endif
     99 #endif
    100 
    101 #ifdef CONFIG_CPU_ABRT_EV6
    102 # ifdef CPU_ABORT_HANDLER
    103 #  define MULTI_ABORT 1
    104 # else
    105 #  define CPU_ABORT_HANDLER v6_early_abort
    106 # endif
    107 #endif
    108 
    109 #ifndef CPU_ABORT_HANDLER
    110 #error Unknown data abort handler type
    111 #endif
    112 
    113 #endif
    114