Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev
[deliverable/linux.git] / include / asm-arm / glue.h
CommitLineData
1da177e4
LT
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
1da177e4
LT
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
bbe88886 41 * v7_early - ARMv7 generic early abort handler
1da177e4 42 */
48d7927b
PB
43#undef CPU_DABORT_HANDLER
44#undef MULTI_DABORT
1da177e4
LT
45
46#if defined(CONFIG_CPU_ARM610)
48d7927b
PB
47# ifdef CPU_DABORT_HANDLER
48# define MULTI_DABORT 1
1da177e4 49# else
48d7927b 50# define CPU_DABORT_HANDLER cpu_arm6_data_abort
1da177e4
LT
51# endif
52#endif
53
54#if defined(CONFIG_CPU_ARM710)
48d7927b
PB
55# ifdef CPU_DABORT_HANDLER
56# define MULTI_DABORT 1
1da177e4 57# else
48d7927b 58# define CPU_DABORT_HANDLER cpu_arm7_data_abort
1da177e4
LT
59# endif
60#endif
61
62#ifdef CONFIG_CPU_ABRT_LV4T
48d7927b
PB
63# ifdef CPU_DABORT_HANDLER
64# define MULTI_DABORT 1
1da177e4 65# else
48d7927b 66# define CPU_DABORT_HANDLER v4t_late_abort
1da177e4
LT
67# endif
68#endif
69
70#ifdef CONFIG_CPU_ABRT_EV4
48d7927b
PB
71# ifdef CPU_DABORT_HANDLER
72# define MULTI_DABORT 1
1da177e4 73# else
48d7927b 74# define CPU_DABORT_HANDLER v4_early_abort
1da177e4
LT
75# endif
76#endif
77
78#ifdef CONFIG_CPU_ABRT_EV4T
48d7927b
PB
79# ifdef CPU_DABORT_HANDLER
80# define MULTI_DABORT 1
1da177e4 81# else
48d7927b 82# define CPU_DABORT_HANDLER v4t_early_abort
1da177e4
LT
83# endif
84#endif
85
86#ifdef CONFIG_CPU_ABRT_EV5TJ
48d7927b
PB
87# ifdef CPU_DABORT_HANDLER
88# define MULTI_DABORT 1
1da177e4 89# else
48d7927b 90# define CPU_DABORT_HANDLER v5tj_early_abort
1da177e4
LT
91# endif
92#endif
93
94#ifdef CONFIG_CPU_ABRT_EV5T
48d7927b
PB
95# ifdef CPU_DABORT_HANDLER
96# define MULTI_DABORT 1
1da177e4 97# else
48d7927b 98# define CPU_DABORT_HANDLER v5t_early_abort
1da177e4
LT
99# endif
100#endif
101
102#ifdef CONFIG_CPU_ABRT_EV6
48d7927b
PB
103# ifdef CPU_DABORT_HANDLER
104# define MULTI_DABORT 1
1da177e4 105# else
48d7927b 106# define CPU_DABORT_HANDLER v6_early_abort
1da177e4
LT
107# endif
108#endif
109
bbe88886 110#ifdef CONFIG_CPU_ABRT_EV7
48d7927b
PB
111# ifdef CPU_DABORT_HANDLER
112# define MULTI_DABORT 1
bbe88886 113# else
48d7927b 114# define CPU_DABORT_HANDLER v7_early_abort
bbe88886
CM
115# endif
116#endif
117
48d7927b 118#ifndef CPU_DABORT_HANDLER
1da177e4
LT
119#error Unknown data abort handler type
120#endif
121
48d7927b
PB
122/*
123 * Prefetch abort handler. If the CPU has an IFAR use that, otherwise
124 * use the address of the aborted instruction
125 */
126#undef CPU_PABORT_HANDLER
127#undef MULTI_PABORT
128
129#ifdef CONFIG_CPU_PABRT_IFAR
130# ifdef CPU_PABORT_HANDLER
131# define MULTI_PABORT 1
132# else
133# define CPU_PABORT_HANDLER(reg, insn) mrc p15, 0, reg, cr6, cr0, 2
134# endif
135#endif
136
137#ifdef CONFIG_CPU_PABRT_NOIFAR
138# ifdef CPU_PABORT_HANDLER
139# define MULTI_PABORT 1
140# else
141# define CPU_PABORT_HANDLER(reg, insn) mov reg, insn
142# endif
143#endif
144
145#ifndef CPU_PABORT_HANDLER
146#error Unknown prefetch abort handler type
147#endif
148
1da177e4 149#endif
This page took 0.336384 seconds and 5 git commands to generate.