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