blob: 0cc5d3b10ce2fb888a7735eb17e1e65a620514aa [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
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
Linus Torvalds1da177e2005-04-16 15:20:36 -070018
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