Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | #ifndef __ASM_ARM_SYSTEM_H #define __ASM_ARM_SYSTEM_H #include <linux/kernel.h> #ifdef __KERNEL__ #include <linux/config.h> #define __ebsa285_data __attribute__((__section__(".data.ebsa285"))) #define __netwinder_data __attribute__((__section__(".data.netwinder"))) #ifdef CONFIG_TEXT_SECTIONS #define __ebsa285_text __attribute__((__section__(".text.ebsa285"))) #define __netwinder_text __attribute__((__section__(".text.netwinder"))) #else #define __ebsa285_text #define __netwinder_text #endif /* information about the system we're running on */ extern unsigned int system_rev; extern unsigned int system_serial_low; extern unsigned int system_serial_high; /* The type of machine we're running on */ extern unsigned int __machine_arch_type; /* see arch/arm/kernel/setup.c for a description of these */ #define MACH_TYPE_EBSA110 0 #define MACH_TYPE_RISCPC 1 #define MACH_TYPE_NEXUSPCI 3 #define MACH_TYPE_EBSA285 4 #define MACH_TYPE_NETWINDER 5 #define MACH_TYPE_CATS 6 #define MACH_TYPE_TBOX 7 #define MACH_TYPE_CO285 8 #define MACH_TYPE_CLPS7110 9 #define MACH_TYPE_ARCHIMEDES 10 #define MACH_TYPE_A5K 11 #define MACH_TYPE_ETOILE 12 #define MACH_TYPE_LACIE_NAS 13 #define MACH_TYPE_CLPS7500 14 #define MACH_TYPE_SHARK 15 /* * Sort out a definition for machine_arch_type * The rules are: * 1. If one architecture is selected, then all machine_is_xxx() * are constant. * 2. If two or more architectures are selected, then the selected * machine_is_xxx() are variable, and the unselected machine_is_xxx() * are constant zero. */ #ifdef CONFIG_ARCH_EBSA110 # ifdef machine_arch_type # undef machine_arch_type # define machine_arch_type __machine_arch_type # else # define machine_arch_type MACH_TYPE_EBSA110 # endif # define machine_is_ebsa110() (machine_arch_type == MACH_TYPE_EBSA110) #else # define machine_is_ebsa110() (0) #endif #ifdef CONFIG_ARCH_RPC # ifdef machine_arch_type # undef machine_arch_type # define machine_arch_type __machine_arch_type # else # define machine_arch_type MACH_TYPE_RISCPC # endif # define machine_is_riscpc() (machine_arch_type == MACH_TYPE_RISCPC) #else # define machine_is_riscpc() (0) #endif #ifdef CONFIG_ARCH_EBSA285 # ifdef machine_arch_type # undef machine_arch_type # define machine_arch_type __machine_arch_type # else # define machine_arch_type MACH_TYPE_EBSA285 # endif # define machine_is_ebsa285() (machine_arch_type == MACH_TYPE_EBSA285) #else # define machine_is_ebsa285() (0) #endif #ifdef CONFIG_ARCH_NETWINDER # ifdef machine_arch_type # undef machine_arch_type # define machine_arch_type __machine_arch_type # else # define machine_arch_type MACH_TYPE_NETWINDER # endif # define machine_is_netwinder() (machine_arch_type == MACH_TYPE_NETWINDER) #else # define machine_is_netwinder() (0) #endif #ifdef CONFIG_CATS # ifdef machine_arch_type # undef machine_arch_type # define machine_arch_type __machine_arch_type # else # define machine_arch_type MACH_TYPE_CATS # endif # define machine_is_cats() (machine_arch_type == MACH_TYPE_CATS) #else # define machine_is_cats() (0) #endif #ifdef CONFIG_ARCH_CO285 # ifdef machine_arch_type # undef machine_arch_type # define machine_arch_type __machine_arch_type # else # define machine_arch_type MACH_TYPE_CO285 # endif # define machine_is_co285() (machine_arch_type == MACH_TYPE_CO285) #else # define machine_is_co285() (0) #endif #ifndef machine_arch_type #define machine_arch_type __machine_arch_type #endif #include <asm/proc-fns.h> #define xchg(ptr,x) \ ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) #define tas(ptr) (xchg((ptr),1)) extern void arm_malalignedptr(const char *, void *, volatile void *); extern asmlinkage void __backtrace(void); /* * Include processor dependent parts */ #include <asm/proc/system.h> #define mb() __asm__ __volatile__ ("" : : : "memory") #define rmb() mb() #define wmb() mb() #define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t"); #define prepare_to_switch() do { } while(0) /* * switch_to(prev, next) should switch from task `prev' to `next' * `prev' will never be the same as `next'. * The `mb' is to tell GCC not to cache `current' across this call. */ extern struct task_struct *__switch_to(struct task_struct *prev, struct task_struct *next); #define switch_to(prev,next,last) \ do { \ last = __switch_to(prev,next); \ mb(); \ } while (0) #endif #endif |