• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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