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 *	  v7_early	- ARMv7 generic early abort handler
42 */
43#undef CPU_ABORT_HANDLER
44#undef MULTI_ABORT
45
46#if defined(CONFIG_CPU_ARM610)
47# ifdef CPU_ABORT_HANDLER
48#  define MULTI_ABORT 1
49# else
50#  define CPU_ABORT_HANDLER cpu_arm6_data_abort
51# endif
52#endif
53
54#if defined(CONFIG_CPU_ARM710)
55# ifdef CPU_ABORT_HANDLER
56#  define MULTI_ABORT 1
57# else
58#  define CPU_ABORT_HANDLER cpu_arm7_data_abort
59# endif
60#endif
61
62#ifdef CONFIG_CPU_ABRT_LV4T
63# ifdef CPU_ABORT_HANDLER
64#  define MULTI_ABORT 1
65# else
66#  define CPU_ABORT_HANDLER v4t_late_abort
67# endif
68#endif
69
70#ifdef CONFIG_CPU_ABRT_EV4
71# ifdef CPU_ABORT_HANDLER
72#  define MULTI_ABORT 1
73# else
74#  define CPU_ABORT_HANDLER v4_early_abort
75# endif
76#endif
77
78#ifdef CONFIG_CPU_ABRT_EV4T
79# ifdef CPU_ABORT_HANDLER
80#  define MULTI_ABORT 1
81# else
82#  define CPU_ABORT_HANDLER v4t_early_abort
83# endif
84#endif
85
86#ifdef CONFIG_CPU_ABRT_EV5TJ
87# ifdef CPU_ABORT_HANDLER
88#  define MULTI_ABORT 1
89# else
90#  define CPU_ABORT_HANDLER v5tj_early_abort
91# endif
92#endif
93
94#ifdef CONFIG_CPU_ABRT_EV5T
95# ifdef CPU_ABORT_HANDLER
96#  define MULTI_ABORT 1
97# else
98#  define CPU_ABORT_HANDLER v5t_early_abort
99# endif
100#endif
101
102#ifdef CONFIG_CPU_ABRT_EV6
103# ifdef CPU_ABORT_HANDLER
104#  define MULTI_ABORT 1
105# else
106#  define CPU_ABORT_HANDLER v6_early_abort
107# endif
108#endif
109
110#ifdef CONFIG_CPU_ABRT_EV7
111# ifdef CPU_ABORT_HANDLER
112#  define MULTI_ABORT 1
113# else
114#  define CPU_ABORT_HANDLER v7_early_abort
115# endif
116#endif
117
118#ifndef CPU_ABORT_HANDLER
119#error Unknown data abort handler type
120#endif
121
122#endif
123