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