diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-01-29 06:48:03 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-01-29 06:48:03 -0500 |
commit | 21af0297c7e56024a5ccc4d8ad2a590f9ec371ba (patch) | |
tree | 5d288c1877b1ae9fbe24aa7fabd79565e73d3d2f /include | |
parent | 5ea293a9048d3a58cb0c840fa719d85ad14cba47 (diff) | |
parent | a9d2517c7a5c8028fbc5296d3af3c75597d3d180 (diff) |
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (68 commits)
[MIPS] remove Documentation/mips/GT64120.README
[MIPS] Malta: remaining bits of the board support code cleanup
[MIPS] Malta: make the helper function static
[MIPS] Malta: fix braces at single statement blocks
[MIPS] Malta, Atlas: move an extern function declaration to the header file
[MIPS] Malta: Use C89 style for comments
[MIPS] Malta: else should follow close brace in malta_int.c
[MIPS] Malta: remove a superfluous comment
[MIPS] Malta: include <linux/cpu.h> instead of <asm/cpu.h>
[MIPS] Malta, Atlas, Sead: remove an extern from .c files
[MIPS] Malta: fix oversized lines in malta_int.c
[MIPS] Malta: remove a dead function declaration
[MIPS] Malta: use tabs not spaces
[MIPS] Malta: set up the screen info in a separate function
[MIPS] Malta: check the PCI clock frequency in a separate function
[MIPS] Malta: use the KERN_ facility level in printk()
[MIPS] Malta: use Linux kernel style for structure initialization
[MIPS]: constify function pointer tables
[MIPS] compat: handle argument endianess of sys32_(f)truncate64 with merge_64
[MIPS] Cobalt 64-bits kernels can be safely unmarked experimental
...
Diffstat (limited to 'include')
34 files changed, 437 insertions, 427 deletions
diff --git a/include/asm-mips/addrspace.h b/include/asm-mips/addrspace.h index 0bb7a93b7a5e..569f80aacbd2 100644 --- a/include/asm-mips/addrspace.h +++ b/include/asm-mips/addrspace.h | |||
@@ -127,7 +127,7 @@ | |||
127 | #define PHYS_TO_XKSEG_CACHED(p) PHYS_TO_XKPHYS(K_CALG_COH_SHAREABLE, (p)) | 127 | #define PHYS_TO_XKSEG_CACHED(p) PHYS_TO_XKPHYS(K_CALG_COH_SHAREABLE, (p)) |
128 | #define XKPHYS_TO_PHYS(p) ((p) & TO_PHYS_MASK) | 128 | #define XKPHYS_TO_PHYS(p) ((p) & TO_PHYS_MASK) |
129 | #define PHYS_TO_XKPHYS(cm, a) (_CONST64_(0x8000000000000000) | \ | 129 | #define PHYS_TO_XKPHYS(cm, a) (_CONST64_(0x8000000000000000) | \ |
130 | ((cm)<<59) | (a)) | 130 | (_CONST64_(cm) << 59) | (a)) |
131 | 131 | ||
132 | /* | 132 | /* |
133 | * The ultimate limited of the 64-bit MIPS architecture: 2 bits for selecting | 133 | * The ultimate limited of the 64-bit MIPS architecture: 2 bits for selecting |
diff --git a/include/asm-mips/asm.h b/include/asm-mips/asm.h index 12e17581b823..608cfcfbb3ea 100644 --- a/include/asm-mips/asm.h +++ b/include/asm-mips/asm.h | |||
@@ -398,4 +398,12 @@ symbol = value | |||
398 | 398 | ||
399 | #define SSNOP sll zero, zero, 1 | 399 | #define SSNOP sll zero, zero, 1 |
400 | 400 | ||
401 | #ifdef CONFIG_SGI_IP28 | ||
402 | /* Inhibit speculative stores to volatile (e.g.DMA) or invalid addresses. */ | ||
403 | #include <asm/cacheops.h> | ||
404 | #define R10KCBARRIER(addr) cache Cache_Barrier, addr; | ||
405 | #else | ||
406 | #define R10KCBARRIER(addr) | ||
407 | #endif | ||
408 | |||
401 | #endif /* __ASM_ASM_H */ | 409 | #endif /* __ASM_ASM_H */ |
diff --git a/include/asm-mips/bootinfo.h b/include/asm-mips/bootinfo.h index b2dd9b33de8f..e031bdff9920 100644 --- a/include/asm-mips/bootinfo.h +++ b/include/asm-mips/bootinfo.h | |||
@@ -48,22 +48,11 @@ | |||
48 | #define MACH_DS5900 10 /* DECsystem 5900 */ | 48 | #define MACH_DS5900 10 /* DECsystem 5900 */ |
49 | 49 | ||
50 | /* | 50 | /* |
51 | * Valid machtype for group ARC | ||
52 | */ | ||
53 | #define MACH_DESKSTATION_RPC44 0 /* Deskstation rPC44 */ | ||
54 | #define MACH_DESKSTATION_TYNE 1 /* Deskstation Tyne */ | ||
55 | |||
56 | /* | ||
57 | * Valid machtype for group SNI_RM | 51 | * Valid machtype for group SNI_RM |
58 | */ | 52 | */ |
59 | #define MACH_SNI_RM200_PCI 0 /* RM200/RM300/RM400 PCI series */ | 53 | #define MACH_SNI_RM200_PCI 0 /* RM200/RM300/RM400 PCI series */ |
60 | 54 | ||
61 | /* | 55 | /* |
62 | * Valid machtype for group ACN | ||
63 | */ | ||
64 | #define MACH_ACN_MIPS_BOARD 0 /* ACN MIPS single board */ | ||
65 | |||
66 | /* | ||
67 | * Valid machtype for group SGI | 56 | * Valid machtype for group SGI |
68 | */ | 57 | */ |
69 | #define MACH_SGI_IP22 0 /* Indy, Indigo2, Challenge S */ | 58 | #define MACH_SGI_IP22 0 /* Indy, Indigo2, Challenge S */ |
@@ -73,44 +62,6 @@ | |||
73 | #define MACH_SGI_IP30 4 /* Octane, Octane2 */ | 62 | #define MACH_SGI_IP30 4 /* Octane, Octane2 */ |
74 | 63 | ||
75 | /* | 64 | /* |
76 | * Valid machtype for group COBALT | ||
77 | */ | ||
78 | #define MACH_COBALT_27 0 /* Proto "27" hardware */ | ||
79 | |||
80 | /* | ||
81 | * Valid machtype for group BAGET | ||
82 | */ | ||
83 | #define MACH_BAGET201 0 /* BT23-201 */ | ||
84 | #define MACH_BAGET202 1 /* BT23-202 */ | ||
85 | |||
86 | /* | ||
87 | * Cosine boards. | ||
88 | */ | ||
89 | #define MACH_COSINE_ORION 0 | ||
90 | |||
91 | /* | ||
92 | * Valid machtype for group MOMENCO | ||
93 | */ | ||
94 | #define MACH_MOMENCO_OCELOT 0 | ||
95 | #define MACH_MOMENCO_OCELOT_G 1 /* no more supported (may 2007) */ | ||
96 | #define MACH_MOMENCO_OCELOT_C 2 /* no more supported (jun 2007) */ | ||
97 | #define MACH_MOMENCO_JAGUAR_ATX 3 /* no more supported (may 2007) */ | ||
98 | #define MACH_MOMENCO_OCELOT_3 4 | ||
99 | |||
100 | /* | ||
101 | * Valid machtype for group PHILIPS | ||
102 | */ | ||
103 | #define MACH_PHILIPS_NINO 0 /* Nino */ | ||
104 | #define MACH_PHILIPS_VELO 1 /* Velo */ | ||
105 | #define MACH_PHILIPS_JBS 2 /* JBS */ | ||
106 | #define MACH_PHILIPS_STB810 3 /* STB810 */ | ||
107 | |||
108 | /* | ||
109 | * Valid machtype for group SIBYTE | ||
110 | */ | ||
111 | #define MACH_SWARM 0 | ||
112 | |||
113 | /* | ||
114 | * Valid machtypes for group Toshiba | 65 | * Valid machtypes for group Toshiba |
115 | */ | 66 | */ |
116 | #define MACH_PALLAS 0 | 67 | #define MACH_PALLAS 0 |
@@ -122,64 +73,17 @@ | |||
122 | #define MACH_TOSHIBA_RBTX4938 6 | 73 | #define MACH_TOSHIBA_RBTX4938 6 |
123 | 74 | ||
124 | /* | 75 | /* |
125 | * Valid machtype for group Alchemy | ||
126 | */ | ||
127 | #define MACH_PB1000 0 /* Au1000-based eval board */ | ||
128 | #define MACH_PB1100 1 /* Au1100-based eval board */ | ||
129 | #define MACH_PB1500 2 /* Au1500-based eval board */ | ||
130 | #define MACH_DB1000 3 /* Au1000-based eval board */ | ||
131 | #define MACH_DB1100 4 /* Au1100-based eval board */ | ||
132 | #define MACH_DB1500 5 /* Au1500-based eval board */ | ||
133 | #define MACH_XXS1500 6 /* Au1500-based eval board */ | ||
134 | #define MACH_MTX1 7 /* 4G MTX-1 Au1500-based board */ | ||
135 | #define MACH_PB1550 8 /* Au1550-based eval board */ | ||
136 | #define MACH_DB1550 9 /* Au1550-based eval board */ | ||
137 | #define MACH_PB1200 10 /* Au1200-based eval board */ | ||
138 | #define MACH_DB1200 11 /* Au1200-based eval board */ | ||
139 | |||
140 | /* | ||
141 | * Valid machtype for group NEC_VR41XX | ||
142 | * | ||
143 | * Various NEC-based devices. | ||
144 | * | ||
145 | * FIXME: MACH_GROUPs should be by _MANUFACTURER_ of * the device, not by | ||
146 | * technical properties, so no new additions to this group. | ||
147 | */ | ||
148 | #define MACH_NEC_OSPREY 0 /* Osprey eval board */ | ||
149 | #define MACH_NEC_EAGLE 1 /* NEC Eagle/Hawk board */ | ||
150 | #define MACH_ZAO_CAPCELLA 2 /* ZAO Networks Capcella */ | ||
151 | #define MACH_VICTOR_MPC30X 3 /* Victor MP-C303/304 */ | ||
152 | #define MACH_IBM_WORKPAD 4 /* IBM WorkPad z50 */ | ||
153 | #define MACH_CASIO_E55 5 /* CASIO CASSIOPEIA E-10/15/55/65 */ | ||
154 | #define MACH_TANBAC_TB0226 6 /* TANBAC TB0226 (Mbase) */ | ||
155 | #define MACH_TANBAC_TB0229 7 /* TANBAC TB0229 (VR4131DIMM) */ | ||
156 | #define MACH_NEC_CMBVR4133 8 /* CMB VR4133 Board */ | ||
157 | |||
158 | #define MACH_HP_LASERJET 1 | ||
159 | |||
160 | /* | ||
161 | * Valid machtype for group LASAT | 76 | * Valid machtype for group LASAT |
162 | */ | 77 | */ |
163 | #define MACH_LASAT_100 0 /* Masquerade II/SP100/SP50/SP25 */ | 78 | #define MACH_LASAT_100 0 /* Masquerade II/SP100/SP50/SP25 */ |
164 | #define MACH_LASAT_200 1 /* Masquerade PRO/SP200 */ | 79 | #define MACH_LASAT_200 1 /* Masquerade PRO/SP200 */ |
165 | 80 | ||
166 | /* | 81 | /* |
167 | * Valid machtype for group TITAN | ||
168 | */ | ||
169 | #define MACH_TITAN_YOSEMITE 1 /* PMC-Sierra Yosemite */ | ||
170 | #define MACH_TITAN_EXCITE 2 /* Basler eXcite */ | ||
171 | |||
172 | /* | ||
173 | * Valid machtype for group NEC EMMA2RH | 82 | * Valid machtype for group NEC EMMA2RH |
174 | */ | 83 | */ |
175 | #define MACH_NEC_MARKEINS 0 /* NEC EMMA2RH Mark-eins */ | 84 | #define MACH_NEC_MARKEINS 0 /* NEC EMMA2RH Mark-eins */ |
176 | 85 | ||
177 | /* | 86 | /* |
178 | * Valid machtype for group LEMOTE | ||
179 | */ | ||
180 | #define MACH_LEMOTE_FULONG 0 | ||
181 | |||
182 | /* | ||
183 | * Valid machtype for group PMC-MSP | 87 | * Valid machtype for group PMC-MSP |
184 | */ | 88 | */ |
185 | #define MACH_MSP4200_EVAL 0 /* PMC-Sierra MSP4200 Evaluation */ | 89 | #define MACH_MSP4200_EVAL 0 /* PMC-Sierra MSP4200 Evaluation */ |
@@ -190,16 +94,9 @@ | |||
190 | #define MACH_MSP7120_FPGA 5 /* PMC-Sierra MSP7120 Emulation */ | 94 | #define MACH_MSP7120_FPGA 5 /* PMC-Sierra MSP7120 Emulation */ |
191 | #define MACH_MSP_OTHER 255 /* PMC-Sierra unknown board type */ | 95 | #define MACH_MSP_OTHER 255 /* PMC-Sierra unknown board type */ |
192 | 96 | ||
193 | #define MACH_WRPPMC 1 | ||
194 | |||
195 | /* | ||
196 | * Valid machtype for group Broadcom | ||
197 | */ | ||
198 | #define MACH_GROUP_BRCM 23 /* Broadcom */ | ||
199 | #define MACH_BCM47XX 1 /* Broadcom BCM47XX */ | ||
200 | |||
201 | #define CL_SIZE COMMAND_LINE_SIZE | 97 | #define CL_SIZE COMMAND_LINE_SIZE |
202 | 98 | ||
99 | extern char *system_type; | ||
203 | const char *get_system_type(void); | 100 | const char *get_system_type(void); |
204 | 101 | ||
205 | extern unsigned long mips_machtype; | 102 | extern unsigned long mips_machtype; |
diff --git a/include/asm-mips/bugs.h b/include/asm-mips/bugs.h index 0d7f9c1f5546..9dc10df32078 100644 --- a/include/asm-mips/bugs.h +++ b/include/asm-mips/bugs.h | |||
@@ -1,19 +1,34 @@ | |||
1 | /* | 1 | /* |
2 | * This is included by init/main.c to check for architecture-dependent bugs. | 2 | * This is included by init/main.c to check for architecture-dependent bugs. |
3 | * | 3 | * |
4 | * Copyright (C) 2007 Maciej W. Rozycki | ||
5 | * | ||
4 | * Needs: | 6 | * Needs: |
5 | * void check_bugs(void); | 7 | * void check_bugs(void); |
6 | */ | 8 | */ |
7 | #ifndef _ASM_BUGS_H | 9 | #ifndef _ASM_BUGS_H |
8 | #define _ASM_BUGS_H | 10 | #define _ASM_BUGS_H |
9 | 11 | ||
12 | #include <linux/bug.h> | ||
10 | #include <linux/delay.h> | 13 | #include <linux/delay.h> |
14 | |||
11 | #include <asm/cpu.h> | 15 | #include <asm/cpu.h> |
12 | #include <asm/cpu-info.h> | 16 | #include <asm/cpu-info.h> |
13 | 17 | ||
18 | extern int daddiu_bug; | ||
19 | |||
20 | extern void check_bugs64_early(void); | ||
21 | |||
14 | extern void check_bugs32(void); | 22 | extern void check_bugs32(void); |
15 | extern void check_bugs64(void); | 23 | extern void check_bugs64(void); |
16 | 24 | ||
25 | static inline void check_bugs_early(void) | ||
26 | { | ||
27 | #ifdef CONFIG_64BIT | ||
28 | check_bugs64_early(); | ||
29 | #endif | ||
30 | } | ||
31 | |||
17 | static inline void check_bugs(void) | 32 | static inline void check_bugs(void) |
18 | { | 33 | { |
19 | unsigned int cpu = smp_processor_id(); | 34 | unsigned int cpu = smp_processor_id(); |
@@ -25,4 +40,14 @@ static inline void check_bugs(void) | |||
25 | #endif | 40 | #endif |
26 | } | 41 | } |
27 | 42 | ||
43 | static inline int r4k_daddiu_bug(void) | ||
44 | { | ||
45 | #ifdef CONFIG_64BIT | ||
46 | WARN_ON(daddiu_bug < 0); | ||
47 | return daddiu_bug != 0; | ||
48 | #else | ||
49 | return 0; | ||
50 | #endif | ||
51 | } | ||
52 | |||
28 | #endif /* _ASM_BUGS_H */ | 53 | #endif /* _ASM_BUGS_H */ |
diff --git a/include/asm-mips/cpu-info.h b/include/asm-mips/cpu-info.h index ed5c02c6afbb..0c5a358863f3 100644 --- a/include/asm-mips/cpu-info.h +++ b/include/asm-mips/cpu-info.h | |||
@@ -55,6 +55,7 @@ struct cpuinfo_mips { | |||
55 | struct cache_desc scache; /* Secondary cache */ | 55 | struct cache_desc scache; /* Secondary cache */ |
56 | struct cache_desc tcache; /* Tertiary/split secondary cache */ | 56 | struct cache_desc tcache; /* Tertiary/split secondary cache */ |
57 | int srsets; /* Shadow register sets */ | 57 | int srsets; /* Shadow register sets */ |
58 | int core; /* physical core number */ | ||
58 | #if defined(CONFIG_MIPS_MT_SMTC) | 59 | #if defined(CONFIG_MIPS_MT_SMTC) |
59 | /* | 60 | /* |
60 | * In the MIPS MT "SMTC" model, each TC is considered | 61 | * In the MIPS MT "SMTC" model, each TC is considered |
@@ -63,8 +64,10 @@ struct cpuinfo_mips { | |||
63 | * to all TCs within the same VPE. | 64 | * to all TCs within the same VPE. |
64 | */ | 65 | */ |
65 | int vpe_id; /* Virtual Processor number */ | 66 | int vpe_id; /* Virtual Processor number */ |
66 | int tc_id; /* Thread Context number */ | ||
67 | #endif /* CONFIG_MIPS_MT */ | 67 | #endif /* CONFIG_MIPS_MT */ |
68 | #ifdef CONFIG_MIPS_MT_SMTC | ||
69 | int tc_id; /* Thread Context number */ | ||
70 | #endif | ||
68 | void *data; /* Additional data */ | 71 | void *data; /* Additional data */ |
69 | } __attribute__((aligned(SMP_CACHE_BYTES))); | 72 | } __attribute__((aligned(SMP_CACHE_BYTES))); |
70 | 73 | ||
diff --git a/include/asm-mips/cpu.h b/include/asm-mips/cpu.h index 54fc18a4e5a8..bf5bbc78a9f7 100644 --- a/include/asm-mips/cpu.h +++ b/include/asm-mips/cpu.h | |||
@@ -195,8 +195,8 @@ enum cpu_type_enum { | |||
195 | * MIPS32 class processors | 195 | * MIPS32 class processors |
196 | */ | 196 | */ |
197 | CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_74K, CPU_AU1000, | 197 | CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_74K, CPU_AU1000, |
198 | CPU_AU1100, CPU_AU1200, CPU_AU1500, CPU_AU1550, CPU_PR4450, | 198 | CPU_AU1100, CPU_AU1200, CPU_AU1210, CPU_AU1250, CPU_AU1500, CPU_AU1550, |
199 | CPU_BCM3302, CPU_BCM4710, | 199 | CPU_PR4450, CPU_BCM3302, CPU_BCM4710, |
200 | 200 | ||
201 | /* | 201 | /* |
202 | * MIPS64 class processors | 202 | * MIPS64 class processors |
diff --git a/include/asm-mips/delay.h b/include/asm-mips/delay.h index fab32131e9b4..b0bccd2c4ed5 100644 --- a/include/asm-mips/delay.h +++ b/include/asm-mips/delay.h | |||
@@ -6,13 +6,16 @@ | |||
6 | * Copyright (C) 1994 by Waldorf Electronics | 6 | * Copyright (C) 1994 by Waldorf Electronics |
7 | * Copyright (C) 1995 - 2000, 01, 03 by Ralf Baechle | 7 | * Copyright (C) 1995 - 2000, 01, 03 by Ralf Baechle |
8 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. | 8 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. |
9 | * Copyright (C) 2007 Maciej W. Rozycki | ||
9 | */ | 10 | */ |
10 | #ifndef _ASM_DELAY_H | 11 | #ifndef _ASM_DELAY_H |
11 | #define _ASM_DELAY_H | 12 | #define _ASM_DELAY_H |
12 | 13 | ||
13 | #include <linux/param.h> | 14 | #include <linux/param.h> |
14 | #include <linux/smp.h> | 15 | #include <linux/smp.h> |
16 | |||
15 | #include <asm/compiler.h> | 17 | #include <asm/compiler.h> |
18 | #include <asm/war.h> | ||
16 | 19 | ||
17 | static inline void __delay(unsigned long loops) | 20 | static inline void __delay(unsigned long loops) |
18 | { | 21 | { |
@@ -25,7 +28,7 @@ static inline void __delay(unsigned long loops) | |||
25 | " .set reorder \n" | 28 | " .set reorder \n" |
26 | : "=r" (loops) | 29 | : "=r" (loops) |
27 | : "0" (loops)); | 30 | : "0" (loops)); |
28 | else if (sizeof(long) == 8) | 31 | else if (sizeof(long) == 8 && !DADDI_WAR) |
29 | __asm__ __volatile__ ( | 32 | __asm__ __volatile__ ( |
30 | " .set noreorder \n" | 33 | " .set noreorder \n" |
31 | " .align 3 \n" | 34 | " .align 3 \n" |
@@ -34,6 +37,15 @@ static inline void __delay(unsigned long loops) | |||
34 | " .set reorder \n" | 37 | " .set reorder \n" |
35 | : "=r" (loops) | 38 | : "=r" (loops) |
36 | : "0" (loops)); | 39 | : "0" (loops)); |
40 | else if (sizeof(long) == 8 && DADDI_WAR) | ||
41 | __asm__ __volatile__ ( | ||
42 | " .set noreorder \n" | ||
43 | " .align 3 \n" | ||
44 | "1: bnez %0, 1b \n" | ||
45 | " dsubu %0, %2 \n" | ||
46 | " .set reorder \n" | ||
47 | : "=r" (loops) | ||
48 | : "0" (loops), "r" (1)); | ||
37 | } | 49 | } |
38 | 50 | ||
39 | 51 | ||
@@ -50,7 +62,7 @@ static inline void __delay(unsigned long loops) | |||
50 | 62 | ||
51 | static inline void __udelay(unsigned long usecs, unsigned long lpj) | 63 | static inline void __udelay(unsigned long usecs, unsigned long lpj) |
52 | { | 64 | { |
53 | unsigned long lo; | 65 | unsigned long hi, lo; |
54 | 66 | ||
55 | /* | 67 | /* |
56 | * The rates of 128 is rounded wrongly by the catchall case | 68 | * The rates of 128 is rounded wrongly by the catchall case |
@@ -70,11 +82,16 @@ static inline void __udelay(unsigned long usecs, unsigned long lpj) | |||
70 | : "=h" (usecs), "=l" (lo) | 82 | : "=h" (usecs), "=l" (lo) |
71 | : "r" (usecs), "r" (lpj) | 83 | : "r" (usecs), "r" (lpj) |
72 | : GCC_REG_ACCUM); | 84 | : GCC_REG_ACCUM); |
73 | else if (sizeof(long) == 8) | 85 | else if (sizeof(long) == 8 && !R4000_WAR) |
74 | __asm__("dmultu\t%2, %3" | 86 | __asm__("dmultu\t%2, %3" |
75 | : "=h" (usecs), "=l" (lo) | 87 | : "=h" (usecs), "=l" (lo) |
76 | : "r" (usecs), "r" (lpj) | 88 | : "r" (usecs), "r" (lpj) |
77 | : GCC_REG_ACCUM); | 89 | : GCC_REG_ACCUM); |
90 | else if (sizeof(long) == 8 && R4000_WAR) | ||
91 | __asm__("dmultu\t%3, %4\n\tmfhi\t%0" | ||
92 | : "=r" (usecs), "=h" (hi), "=l" (lo) | ||
93 | : "r" (usecs), "r" (lpj) | ||
94 | : GCC_REG_ACCUM); | ||
78 | 95 | ||
79 | __delay(usecs); | 96 | __delay(usecs); |
80 | } | 97 | } |
diff --git a/include/asm-mips/dma.h b/include/asm-mips/dma.h index d6a6c21f16db..1353c81065d1 100644 --- a/include/asm-mips/dma.h +++ b/include/asm-mips/dma.h | |||
@@ -84,10 +84,9 @@ | |||
84 | * Deskstations or Acer PICA but not the much more versatile DMA logic used | 84 | * Deskstations or Acer PICA but not the much more versatile DMA logic used |
85 | * for the local devices on Acer PICA or Magnums. | 85 | * for the local devices on Acer PICA or Magnums. |
86 | */ | 86 | */ |
87 | #ifdef CONFIG_SGI_IP22 | 87 | #if defined(CONFIG_SGI_IP22) || defined(CONFIG_SGI_IP28) |
88 | /* Horrible hack to have a correct DMA window on IP22 */ | 88 | /* don't care; ISA bus master won't work, ISA slave DMA supports 32bit addr */ |
89 | #include <asm/sgi/mc.h> | 89 | #define MAX_DMA_ADDRESS PAGE_OFFSET |
90 | #define MAX_DMA_ADDRESS (PAGE_OFFSET + SGIMC_SEG0_BADDR + 0x01000000) | ||
91 | #else | 90 | #else |
92 | #define MAX_DMA_ADDRESS (PAGE_OFFSET + 0x01000000) | 91 | #define MAX_DMA_ADDRESS (PAGE_OFFSET + 0x01000000) |
93 | #endif | 92 | #endif |
diff --git a/include/asm-mips/fixmap.h b/include/asm-mips/fixmap.h index f27b96cfac2e..9cc8522a394f 100644 --- a/include/asm-mips/fixmap.h +++ b/include/asm-mips/fixmap.h | |||
@@ -60,16 +60,6 @@ enum fixed_addresses { | |||
60 | __end_of_fixed_addresses | 60 | __end_of_fixed_addresses |
61 | }; | 61 | }; |
62 | 62 | ||
63 | extern void __set_fixmap(enum fixed_addresses idx, | ||
64 | unsigned long phys, pgprot_t flags); | ||
65 | |||
66 | #define set_fixmap(idx, phys) \ | ||
67 | __set_fixmap(idx, phys, PAGE_KERNEL) | ||
68 | /* | ||
69 | * Some hardware wants to get fixmapped without caching. | ||
70 | */ | ||
71 | #define set_fixmap_nocache(idx, phys) \ | ||
72 | __set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE) | ||
73 | /* | 63 | /* |
74 | * used by vmalloc.c. | 64 | * used by vmalloc.c. |
75 | * | 65 | * |
diff --git a/include/asm-mips/fw/cfe/cfe_api.h b/include/asm-mips/fw/cfe/cfe_api.h index 1003e7156bfc..0995575db320 100644 --- a/include/asm-mips/fw/cfe/cfe_api.h +++ b/include/asm-mips/fw/cfe/cfe_api.h | |||
@@ -15,49 +15,27 @@ | |||
15 | * along with this program; if not, write to the Free Software | 15 | * along with this program; if not, write to the Free Software |
16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | 18 | /* | |
19 | /* ********************************************************************* | 19 | * Broadcom Common Firmware Environment (CFE) |
20 | * | 20 | * |
21 | * Broadcom Common Firmware Environment (CFE) | 21 | * This file contains declarations for doing callbacks to |
22 | * | 22 | * cfe from an application. It should be the only header |
23 | * Device function prototypes File: cfe_api.h | 23 | * needed by the application to use this library |
24 | * | 24 | * |
25 | * This file contains declarations for doing callbacks to | 25 | * Authors: Mitch Lichtenberg, Chris Demetriou |
26 | * cfe from an application. It should be the only header | 26 | */ |
27 | * needed by the application to use this library | ||
28 | * | ||
29 | * Authors: Mitch Lichtenberg, Chris Demetriou | ||
30 | * | ||
31 | ********************************************************************* */ | ||
32 | |||
33 | #ifndef CFE_API_H | 27 | #ifndef CFE_API_H |
34 | #define CFE_API_H | 28 | #define CFE_API_H |
35 | 29 | ||
36 | /* | ||
37 | * Apply customizations here for different OSes. These need to: | ||
38 | * * typedef uint64_t, int64_t, intptr_t, uintptr_t. | ||
39 | * * define cfe_strlen() if use of an existing function is desired. | ||
40 | * * define CFE_API_IMPL_NAMESPACE if API functions are to use | ||
41 | * names in the implementation namespace. | ||
42 | * Also, optionally, if the build environment does not do so automatically, | ||
43 | * CFE_API_* can be defined here as desired. | ||
44 | */ | ||
45 | /* Begin customization. */ | ||
46 | #include <linux/types.h> | 30 | #include <linux/types.h> |
47 | #include <linux/string.h> | 31 | #include <linux/string.h> |
48 | 32 | ||
49 | typedef long intptr_t; | 33 | typedef long intptr_t; |
50 | 34 | ||
51 | #define cfe_strlen strlen | ||
52 | 35 | ||
53 | #define CFE_API_ALL | 36 | /* |
54 | #define CFE_API_STRLEN_CUSTOM | 37 | * Constants |
55 | /* End customization. */ | 38 | */ |
56 | |||
57 | |||
58 | /* ********************************************************************* | ||
59 | * Constants | ||
60 | ********************************************************************* */ | ||
61 | 39 | ||
62 | /* Seal indicating CFE's presence, passed to user program. */ | 40 | /* Seal indicating CFE's presence, passed to user program. */ |
63 | #define CFE_EPTSEAL 0x43464531 | 41 | #define CFE_EPTSEAL 0x43464531 |
@@ -109,54 +87,13 @@ typedef struct { | |||
109 | 87 | ||
110 | 88 | ||
111 | /* | 89 | /* |
112 | * cfe_strlen is handled specially: If already defined, it has been | ||
113 | * overridden in this environment with a standard strlen-like function. | ||
114 | */ | ||
115 | #ifdef cfe_strlen | ||
116 | # define CFE_API_STRLEN_CUSTOM | ||
117 | #else | ||
118 | # ifdef CFE_API_IMPL_NAMESPACE | ||
119 | # define cfe_strlen(a) __cfe_strlen(a) | ||
120 | # endif | ||
121 | int cfe_strlen(char *name); | ||
122 | #endif | ||
123 | |||
124 | /* | ||
125 | * Defines and prototypes for functions which take no arguments. | 90 | * Defines and prototypes for functions which take no arguments. |
126 | */ | 91 | */ |
127 | #ifdef CFE_API_IMPL_NAMESPACE | ||
128 | int64_t __cfe_getticks(void); | ||
129 | #define cfe_getticks() __cfe_getticks() | ||
130 | #else | ||
131 | int64_t cfe_getticks(void); | 92 | int64_t cfe_getticks(void); |
132 | #endif | ||
133 | 93 | ||
134 | /* | 94 | /* |
135 | * Defines and prototypes for the rest of the functions. | 95 | * Defines and prototypes for the rest of the functions. |
136 | */ | 96 | */ |
137 | #ifdef CFE_API_IMPL_NAMESPACE | ||
138 | #define cfe_close(a) __cfe_close(a) | ||
139 | #define cfe_cpu_start(a, b, c, d, e) __cfe_cpu_start(a, b, c, d, e) | ||
140 | #define cfe_cpu_stop(a) __cfe_cpu_stop(a) | ||
141 | #define cfe_enumenv(a, b, d, e, f) __cfe_enumenv(a, b, d, e, f) | ||
142 | #define cfe_enummem(a, b, c, d, e) __cfe_enummem(a, b, c, d, e) | ||
143 | #define cfe_exit(a, b) __cfe_exit(a, b) | ||
144 | #define cfe_flushcache(a) __cfe_cacheflush(a) | ||
145 | #define cfe_getdevinfo(a) __cfe_getdevinfo(a) | ||
146 | #define cfe_getenv(a, b, c) __cfe_getenv(a, b, c) | ||
147 | #define cfe_getfwinfo(a) __cfe_getfwinfo(a) | ||
148 | #define cfe_getstdhandle(a) __cfe_getstdhandle(a) | ||
149 | #define cfe_init(a, b) __cfe_init(a, b) | ||
150 | #define cfe_inpstat(a) __cfe_inpstat(a) | ||
151 | #define cfe_ioctl(a, b, c, d, e, f) __cfe_ioctl(a, b, c, d, e, f) | ||
152 | #define cfe_open(a) __cfe_open(a) | ||
153 | #define cfe_read(a, b, c) __cfe_read(a, b, c) | ||
154 | #define cfe_readblk(a, b, c, d) __cfe_readblk(a, b, c, d) | ||
155 | #define cfe_setenv(a, b) __cfe_setenv(a, b) | ||
156 | #define cfe_write(a, b, c) __cfe_write(a, b, c) | ||
157 | #define cfe_writeblk(a, b, c, d) __cfe_writeblk(a, b, c, d) | ||
158 | #endif /* CFE_API_IMPL_NAMESPACE */ | ||
159 | |||
160 | int cfe_close(int handle); | 97 | int cfe_close(int handle); |
161 | int cfe_cpu_start(int cpu, void (*fn) (void), long sp, long gp, long a1); | 98 | int cfe_cpu_start(int cpu, void (*fn) (void), long sp, long gp, long a1); |
162 | int cfe_cpu_stop(int cpu); | 99 | int cfe_cpu_stop(int cpu); |
diff --git a/include/asm-mips/fw/cfe/cfe_error.h b/include/asm-mips/fw/cfe/cfe_error.h index 975f00002cbe..b80374636279 100644 --- a/include/asm-mips/fw/cfe/cfe_error.h +++ b/include/asm-mips/fw/cfe/cfe_error.h | |||
@@ -16,18 +16,13 @@ | |||
16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | /* ********************************************************************* | 19 | /* |
20 | * | 20 | * Broadcom Common Firmware Environment (CFE) |
21 | * Broadcom Common Firmware Environment (CFE) | 21 | * |
22 | * | 22 | * CFE's global error code list is here. |
23 | * Error codes File: cfe_error.h | 23 | * |
24 | * | 24 | * Author: Mitch Lichtenberg |
25 | * CFE's global error code list is here. | 25 | */ |
26 | * | ||
27 | * Author: Mitch Lichtenberg | ||
28 | * | ||
29 | ********************************************************************* */ | ||
30 | |||
31 | 26 | ||
32 | #define CFE_OK 0 | 27 | #define CFE_OK 0 |
33 | #define CFE_ERR -1 /* generic error */ | 28 | #define CFE_ERR -1 /* generic error */ |
diff --git a/include/asm-mips/mach-cobalt/cobalt.h b/include/asm-mips/mach-cobalt/cobalt.h index a79e7caf3a86..5b9fce73f11d 100644 --- a/include/asm-mips/mach-cobalt/cobalt.h +++ b/include/asm-mips/mach-cobalt/cobalt.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Lowlevel hardware stuff for the MIPS based Cobalt microservers. | 2 | * The Cobalt board ID information. |
3 | * | 3 | * |
4 | * This file is subject to the terms and conditions of the GNU General Public | 4 | * This file is subject to the terms and conditions of the GNU General Public |
5 | * License. See the file "COPYING" in the main directory of this archive | 5 | * License. See the file "COPYING" in the main directory of this archive |
@@ -12,9 +12,6 @@ | |||
12 | #ifndef __ASM_COBALT_H | 12 | #ifndef __ASM_COBALT_H |
13 | #define __ASM_COBALT_H | 13 | #define __ASM_COBALT_H |
14 | 14 | ||
15 | /* | ||
16 | * The Cobalt board ID information. | ||
17 | */ | ||
18 | extern int cobalt_board_id; | 15 | extern int cobalt_board_id; |
19 | 16 | ||
20 | #define COBALT_BRD_ID_QUBE1 0x3 | 17 | #define COBALT_BRD_ID_QUBE1 0x3 |
@@ -22,14 +19,4 @@ extern int cobalt_board_id; | |||
22 | #define COBALT_BRD_ID_QUBE2 0x5 | 19 | #define COBALT_BRD_ID_QUBE2 0x5 |
23 | #define COBALT_BRD_ID_RAQ2 0x6 | 20 | #define COBALT_BRD_ID_RAQ2 0x6 |
24 | 21 | ||
25 | #define COBALT_KEY_PORT ((~*(volatile unsigned int *) CKSEG1ADDR(0x1d000000) >> 24) & COBALT_KEY_MASK) | ||
26 | # define COBALT_KEY_CLEAR (1 << 1) | ||
27 | # define COBALT_KEY_LEFT (1 << 2) | ||
28 | # define COBALT_KEY_UP (1 << 3) | ||
29 | # define COBALT_KEY_DOWN (1 << 4) | ||
30 | # define COBALT_KEY_RIGHT (1 << 5) | ||
31 | # define COBALT_KEY_ENTER (1 << 6) | ||
32 | # define COBALT_KEY_SELECT (1 << 7) | ||
33 | # define COBALT_KEY_MASK 0xfe | ||
34 | |||
35 | #endif /* __ASM_COBALT_H */ | 22 | #endif /* __ASM_COBALT_H */ |
diff --git a/include/asm-mips/mach-ip28/cpu-feature-overrides.h b/include/asm-mips/mach-ip28/cpu-feature-overrides.h new file mode 100644 index 000000000000..9a53b326f848 --- /dev/null +++ b/include/asm-mips/mach-ip28/cpu-feature-overrides.h | |||
@@ -0,0 +1,50 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2003 Ralf Baechle | ||
7 | * 6/2004 pf | ||
8 | */ | ||
9 | #ifndef __ASM_MACH_IP28_CPU_FEATURE_OVERRIDES_H | ||
10 | #define __ASM_MACH_IP28_CPU_FEATURE_OVERRIDES_H | ||
11 | |||
12 | /* | ||
13 | * IP28 only comes with R10000 family processors all using the same config | ||
14 | */ | ||
15 | #define cpu_has_watch 1 | ||
16 | #define cpu_has_mips16 0 | ||
17 | #define cpu_has_divec 0 | ||
18 | #define cpu_has_vce 0 | ||
19 | #define cpu_has_cache_cdex_p 0 | ||
20 | #define cpu_has_cache_cdex_s 0 | ||
21 | #define cpu_has_prefetch 1 | ||
22 | #define cpu_has_mcheck 0 | ||
23 | #define cpu_has_ejtag 0 | ||
24 | |||
25 | #define cpu_has_llsc 1 | ||
26 | #define cpu_has_vtag_icache 0 | ||
27 | #define cpu_has_dc_aliases 0 /* see probe_pcache() */ | ||
28 | #define cpu_has_ic_fills_f_dc 0 | ||
29 | #define cpu_has_dsp 0 | ||
30 | #define cpu_icache_snoops_remote_store 1 | ||
31 | #define cpu_has_mipsmt 0 | ||
32 | #define cpu_has_userlocal 0 | ||
33 | |||
34 | #define cpu_has_nofpuex 0 | ||
35 | #define cpu_has_64bits 1 | ||
36 | |||
37 | #define cpu_has_4kex 1 | ||
38 | #define cpu_has_4k_cache 1 | ||
39 | |||
40 | #define cpu_has_inclusive_pcaches 1 | ||
41 | |||
42 | #define cpu_dcache_line_size() 32 | ||
43 | #define cpu_icache_line_size() 64 | ||
44 | |||
45 | #define cpu_has_mips32r1 0 | ||
46 | #define cpu_has_mips32r2 0 | ||
47 | #define cpu_has_mips64r1 0 | ||
48 | #define cpu_has_mips64r2 0 | ||
49 | |||
50 | #endif /* __ASM_MACH_IP28_CPU_FEATURE_OVERRIDES_H */ | ||
diff --git a/include/asm-mips/mach-ip28/ds1286.h b/include/asm-mips/mach-ip28/ds1286.h new file mode 100644 index 000000000000..471bb9a33e0f --- /dev/null +++ b/include/asm-mips/mach-ip28/ds1286.h | |||
@@ -0,0 +1,4 @@ | |||
1 | #ifndef __ASM_MACH_IP28_DS1286_H | ||
2 | #define __ASM_MACH_IP28_DS1286_H | ||
3 | #include <asm/mach-ip22/ds1286.h> | ||
4 | #endif /* __ASM_MACH_IP28_DS1286_H */ | ||
diff --git a/include/asm-mips/mach-ip28/spaces.h b/include/asm-mips/mach-ip28/spaces.h new file mode 100644 index 000000000000..05aabb27e5e7 --- /dev/null +++ b/include/asm-mips/mach-ip28/spaces.h | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 1994 - 1999, 2000, 03, 04 Ralf Baechle | ||
7 | * Copyright (C) 2000, 2002 Maciej W. Rozycki | ||
8 | * Copyright (C) 1990, 1999, 2000 Silicon Graphics, Inc. | ||
9 | * 2004 pf | ||
10 | */ | ||
11 | #ifndef _ASM_MACH_IP28_SPACES_H | ||
12 | #define _ASM_MACH_IP28_SPACES_H | ||
13 | |||
14 | #define CAC_BASE 0xa800000000000000 | ||
15 | |||
16 | #define HIGHMEM_START (~0UL) | ||
17 | |||
18 | #define PHYS_OFFSET _AC(0x20000000, UL) | ||
19 | |||
20 | #include <asm/mach-generic/spaces.h> | ||
21 | |||
22 | #endif /* _ASM_MACH_IP28_SPACES_H */ | ||
diff --git a/include/asm-mips/mach-qemu/war.h b/include/asm-mips/mach-ip28/war.h index 0eaf0c548a47..a1baafab486a 100644 --- a/include/asm-mips/mach-qemu/war.h +++ b/include/asm-mips/mach-ip28/war.h | |||
@@ -5,8 +5,8 @@ | |||
5 | * | 5 | * |
6 | * Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org> | 6 | * Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org> |
7 | */ | 7 | */ |
8 | #ifndef __ASM_MIPS_MACH_QEMU_WAR_H | 8 | #ifndef __ASM_MIPS_MACH_IP28_WAR_H |
9 | #define __ASM_MIPS_MACH_QEMU_WAR_H | 9 | #define __ASM_MIPS_MACH_IP28_WAR_H |
10 | 10 | ||
11 | #define R4600_V1_INDEX_ICACHEOP_WAR 0 | 11 | #define R4600_V1_INDEX_ICACHEOP_WAR 0 |
12 | #define R4600_V1_HIT_CACHEOP_WAR 0 | 12 | #define R4600_V1_HIT_CACHEOP_WAR 0 |
@@ -19,7 +19,7 @@ | |||
19 | #define TX49XX_ICACHE_INDEX_INV_WAR 0 | 19 | #define TX49XX_ICACHE_INDEX_INV_WAR 0 |
20 | #define RM9000_CDEX_SMP_WAR 0 | 20 | #define RM9000_CDEX_SMP_WAR 0 |
21 | #define ICACHE_REFILLS_WORKAROUND_WAR 0 | 21 | #define ICACHE_REFILLS_WORKAROUND_WAR 0 |
22 | #define R10000_LLSC_WAR 0 | 22 | #define R10000_LLSC_WAR 1 |
23 | #define MIPS34K_MISSED_ITLB_WAR 0 | 23 | #define MIPS34K_MISSED_ITLB_WAR 0 |
24 | 24 | ||
25 | #endif /* __ASM_MIPS_MACH_QEMU_WAR_H */ | 25 | #endif /* __ASM_MIPS_MACH_IP28_WAR_H */ |
diff --git a/include/asm-mips/mach-qemu/cpu-feature-overrides.h b/include/asm-mips/mach-qemu/cpu-feature-overrides.h deleted file mode 100644 index d2daaed235d5..000000000000 --- a/include/asm-mips/mach-qemu/cpu-feature-overrides.h +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2003, 07 Ralf Baechle | ||
7 | */ | ||
8 | #ifndef __ASM_MACH_QEMU_CPU_FEATURE_OVERRIDES_H | ||
9 | #define __ASM_MACH_QEMU_CPU_FEATURE_OVERRIDES_H | ||
10 | |||
11 | /* | ||
12 | * QEMU only comes with a hazard-free MIPS32 processor, so things are easy. | ||
13 | */ | ||
14 | #define cpu_has_mips16 0 | ||
15 | #define cpu_has_divec 0 | ||
16 | #define cpu_has_cache_cdex_p 0 | ||
17 | #define cpu_has_prefetch 0 | ||
18 | #define cpu_has_mcheck 0 | ||
19 | #define cpu_has_ejtag 0 | ||
20 | |||
21 | #define cpu_has_llsc 1 | ||
22 | #define cpu_has_vtag_icache 0 | ||
23 | #define cpu_has_dc_aliases 0 | ||
24 | #define cpu_has_ic_fills_f_dc 0 | ||
25 | |||
26 | #define cpu_has_dsp 0 | ||
27 | #define cpu_has_mipsmt 0 | ||
28 | |||
29 | #define cpu_has_nofpuex 0 | ||
30 | #define cpu_has_64bits 0 | ||
31 | |||
32 | #endif /* __ASM_MACH_QEMU_CPU_FEATURE_OVERRIDES_H */ | ||
diff --git a/include/asm-mips/mips-boards/generic.h b/include/asm-mips/mips-boards/generic.h index d58977483534..1c39d339521e 100644 --- a/include/asm-mips/mips-boards/generic.h +++ b/include/asm-mips/mips-boards/generic.h | |||
@@ -97,10 +97,16 @@ extern int mips_revision_corid; | |||
97 | 97 | ||
98 | extern int mips_revision_sconid; | 98 | extern int mips_revision_sconid; |
99 | 99 | ||
100 | extern void mips_reboot_setup(void); | ||
101 | |||
100 | #ifdef CONFIG_PCI | 102 | #ifdef CONFIG_PCI |
101 | extern void mips_pcibios_init(void); | 103 | extern void mips_pcibios_init(void); |
102 | #else | 104 | #else |
103 | #define mips_pcibios_init() do { } while (0) | 105 | #define mips_pcibios_init() do { } while (0) |
104 | #endif | 106 | #endif |
105 | 107 | ||
108 | #ifdef CONFIG_KGDB | ||
109 | extern void kgdb_config(void); | ||
110 | #endif | ||
111 | |||
106 | #endif /* __ASM_MIPS_BOARDS_GENERIC_H */ | 112 | #endif /* __ASM_MIPS_BOARDS_GENERIC_H */ |
diff --git a/include/asm-mips/mipsprom.h b/include/asm-mips/mipsprom.h index ce7cff7f1e8e..146d41b67adc 100644 --- a/include/asm-mips/mipsprom.h +++ b/include/asm-mips/mipsprom.h | |||
@@ -71,4 +71,6 @@ | |||
71 | #define PROM_NV_GET 53 /* XXX */ | 71 | #define PROM_NV_GET 53 /* XXX */ |
72 | #define PROM_NV_SET 54 /* XXX */ | 72 | #define PROM_NV_SET 54 /* XXX */ |
73 | 73 | ||
74 | extern char *prom_getenv(char *); | ||
75 | |||
74 | #endif /* __ASM_MIPS_PROM_H */ | 76 | #endif /* __ASM_MIPS_PROM_H */ |
diff --git a/include/asm-mips/pmc-sierra/msp71xx/msp_regs.h b/include/asm-mips/pmc-sierra/msp71xx/msp_regs.h index 0b56f55206c6..603eb737b4a8 100644 --- a/include/asm-mips/pmc-sierra/msp71xx/msp_regs.h +++ b/include/asm-mips/pmc-sierra/msp71xx/msp_regs.h | |||
@@ -585,11 +585,7 @@ | |||
585 | * UART defines * | 585 | * UART defines * |
586 | *************************************************************************** | 586 | *************************************************************************** |
587 | */ | 587 | */ |
588 | #ifndef CONFIG_MSP_FPGA | ||
589 | #define MSP_BASE_BAUD 25000000 | 588 | #define MSP_BASE_BAUD 25000000 |
590 | #else | ||
591 | #define MSP_BASE_BAUD 6000000 | ||
592 | #endif | ||
593 | #define MSP_UART_REG_LEN 0x20 | 589 | #define MSP_UART_REG_LEN 0x20 |
594 | 590 | ||
595 | /* | 591 | /* |
diff --git a/include/asm-mips/r4kcache.h b/include/asm-mips/r4kcache.h index 2b8466ffd3ca..4c140db36786 100644 --- a/include/asm-mips/r4kcache.h +++ b/include/asm-mips/r4kcache.h | |||
@@ -403,6 +403,13 @@ __BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64) | |||
403 | __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 64) | 403 | __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 64) |
404 | __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128) | 404 | __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128) |
405 | 405 | ||
406 | __BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 16) | ||
407 | __BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 32) | ||
408 | __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 16) | ||
409 | __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 32) | ||
410 | __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 64) | ||
411 | __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 128) | ||
412 | |||
406 | /* build blast_xxx_range, protected_blast_xxx_range */ | 413 | /* build blast_xxx_range, protected_blast_xxx_range */ |
407 | #define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot) \ | 414 | #define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot) \ |
408 | static inline void prot##blast_##pfx##cache##_range(unsigned long start, \ | 415 | static inline void prot##blast_##pfx##cache##_range(unsigned long start, \ |
diff --git a/include/asm-mips/sgi/ioc.h b/include/asm-mips/sgi/ioc.h index f3e3dc9bb732..343ed15f8dc4 100644 --- a/include/asm-mips/sgi/ioc.h +++ b/include/asm-mips/sgi/ioc.h | |||
@@ -138,8 +138,8 @@ struct sgioc_regs { | |||
138 | u8 _sysid[3]; | 138 | u8 _sysid[3]; |
139 | volatile u8 sysid; | 139 | volatile u8 sysid; |
140 | #define SGIOC_SYSID_FULLHOUSE 0x01 | 140 | #define SGIOC_SYSID_FULLHOUSE 0x01 |
141 | #define SGIOC_SYSID_BOARDREV(x) ((x & 0xe0) > 5) | 141 | #define SGIOC_SYSID_BOARDREV(x) (((x) & 0x1e) >> 1) |
142 | #define SGIOC_SYSID_CHIPREV(x) ((x & 0x1e) > 1) | 142 | #define SGIOC_SYSID_CHIPREV(x) (((x) & 0xe0) >> 5) |
143 | u32 _unused2; | 143 | u32 _unused2; |
144 | u8 _read[3]; | 144 | u8 _read[3]; |
145 | volatile u8 read; | 145 | volatile u8 read; |
diff --git a/include/asm-mips/sibyte/board.h b/include/asm-mips/sibyte/board.h index da198a1c8c81..25372ae0e814 100644 --- a/include/asm-mips/sibyte/board.h +++ b/include/asm-mips/sibyte/board.h | |||
@@ -19,10 +19,8 @@ | |||
19 | #ifndef _SIBYTE_BOARD_H | 19 | #ifndef _SIBYTE_BOARD_H |
20 | #define _SIBYTE_BOARD_H | 20 | #define _SIBYTE_BOARD_H |
21 | 21 | ||
22 | #if defined(CONFIG_SIBYTE_SWARM) || defined(CONFIG_SIBYTE_PTSWARM) || \ | 22 | #if defined(CONFIG_SIBYTE_SWARM) || defined(CONFIG_SIBYTE_CRHONE) || \ |
23 | defined(CONFIG_SIBYTE_PT1120) || defined(CONFIG_SIBYTE_PT1125) || \ | 23 | defined(CONFIG_SIBYTE_CRHINE) || defined(CONFIG_SIBYTE_LITTLESUR) |
24 | defined(CONFIG_SIBYTE_CRHONE) || defined(CONFIG_SIBYTE_CRHINE) || \ | ||
25 | defined(CONFIG_SIBYTE_LITTLESUR) | ||
26 | #include <asm/sibyte/swarm.h> | 24 | #include <asm/sibyte/swarm.h> |
27 | #endif | 25 | #endif |
28 | 26 | ||
diff --git a/include/asm-mips/sibyte/sb1250.h b/include/asm-mips/sibyte/sb1250.h index 0dad844a3b5b..80c1a052662a 100644 --- a/include/asm-mips/sibyte/sb1250.h +++ b/include/asm-mips/sibyte/sb1250.h | |||
@@ -48,12 +48,10 @@ extern unsigned int zbbus_mhz; | |||
48 | extern void sb1250_time_init(void); | 48 | extern void sb1250_time_init(void); |
49 | extern void sb1250_mask_irq(int cpu, int irq); | 49 | extern void sb1250_mask_irq(int cpu, int irq); |
50 | extern void sb1250_unmask_irq(int cpu, int irq); | 50 | extern void sb1250_unmask_irq(int cpu, int irq); |
51 | extern void sb1250_smp_finish(void); | ||
52 | 51 | ||
53 | extern void bcm1480_time_init(void); | 52 | extern void bcm1480_time_init(void); |
54 | extern void bcm1480_mask_irq(int cpu, int irq); | 53 | extern void bcm1480_mask_irq(int cpu, int irq); |
55 | extern void bcm1480_unmask_irq(int cpu, int irq); | 54 | extern void bcm1480_unmask_irq(int cpu, int irq); |
56 | extern void bcm1480_smp_finish(void); | ||
57 | 55 | ||
58 | #define AT_spin \ | 56 | #define AT_spin \ |
59 | __asm__ __volatile__ ( \ | 57 | __asm__ __volatile__ ( \ |
diff --git a/include/asm-mips/sibyte/swarm.h b/include/asm-mips/sibyte/swarm.h index 540865fa7ec3..114d9d29ca9d 100644 --- a/include/asm-mips/sibyte/swarm.h +++ b/include/asm-mips/sibyte/swarm.h | |||
@@ -26,24 +26,6 @@ | |||
26 | #define SIBYTE_HAVE_PCMCIA 1 | 26 | #define SIBYTE_HAVE_PCMCIA 1 |
27 | #define SIBYTE_HAVE_IDE 1 | 27 | #define SIBYTE_HAVE_IDE 1 |
28 | #endif | 28 | #endif |
29 | #ifdef CONFIG_SIBYTE_PTSWARM | ||
30 | #define SIBYTE_BOARD_NAME "PTSWARM" | ||
31 | #define SIBYTE_HAVE_PCMCIA 1 | ||
32 | #define SIBYTE_HAVE_IDE 1 | ||
33 | #define SIBYTE_DEFAULT_CONSOLE "ttyS0,115200" | ||
34 | #endif | ||
35 | #ifdef CONFIG_SIBYTE_PT1120 | ||
36 | #define SIBYTE_BOARD_NAME "PT1120" | ||
37 | #define SIBYTE_HAVE_PCMCIA 1 | ||
38 | #define SIBYTE_HAVE_IDE 1 | ||
39 | #define SIBYTE_DEFAULT_CONSOLE "ttyS0,115200" | ||
40 | #endif | ||
41 | #ifdef CONFIG_SIBYTE_PT1125 | ||
42 | #define SIBYTE_BOARD_NAME "PT1125" | ||
43 | #define SIBYTE_HAVE_PCMCIA 1 | ||
44 | #define SIBYTE_HAVE_IDE 1 | ||
45 | #define SIBYTE_DEFAULT_CONSOLE "ttyS0,115200" | ||
46 | #endif | ||
47 | #ifdef CONFIG_SIBYTE_LITTLESUR | 29 | #ifdef CONFIG_SIBYTE_LITTLESUR |
48 | #define SIBYTE_BOARD_NAME "BCM91250C2 (LittleSur)" | 30 | #define SIBYTE_BOARD_NAME "BCM91250C2 (LittleSur)" |
49 | #define SIBYTE_HAVE_PCMCIA 0 | 31 | #define SIBYTE_HAVE_PCMCIA 0 |
diff --git a/include/asm-mips/smp-ops.h b/include/asm-mips/smp-ops.h new file mode 100644 index 000000000000..b17fdfb5d818 --- /dev/null +++ b/include/asm-mips/smp-ops.h | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General | ||
3 | * Public License. See the file "COPYING" in the main directory of this | ||
4 | * archive for more details. | ||
5 | * | ||
6 | * Copyright (C) 2000 - 2001 by Kanoj Sarcar (kanoj@sgi.com) | ||
7 | * Copyright (C) 2000 - 2001 by Silicon Graphics, Inc. | ||
8 | * Copyright (C) 2000, 2001, 2002 Ralf Baechle | ||
9 | * Copyright (C) 2000, 2001 Broadcom Corporation | ||
10 | */ | ||
11 | #ifndef __ASM_SMP_OPS_H | ||
12 | #define __ASM_SMP_OPS_H | ||
13 | |||
14 | #ifdef CONFIG_SMP | ||
15 | |||
16 | #include <linux/cpumask.h> | ||
17 | |||
18 | struct plat_smp_ops { | ||
19 | void (*send_ipi_single)(int cpu, unsigned int action); | ||
20 | void (*send_ipi_mask)(cpumask_t mask, unsigned int action); | ||
21 | void (*init_secondary)(void); | ||
22 | void (*smp_finish)(void); | ||
23 | void (*cpus_done)(void); | ||
24 | void (*boot_secondary)(int cpu, struct task_struct *idle); | ||
25 | void (*smp_setup)(void); | ||
26 | void (*prepare_cpus)(unsigned int max_cpus); | ||
27 | }; | ||
28 | |||
29 | extern void register_smp_ops(struct plat_smp_ops *ops); | ||
30 | |||
31 | static inline void plat_smp_setup(void) | ||
32 | { | ||
33 | extern struct plat_smp_ops *mp_ops; /* private */ | ||
34 | |||
35 | mp_ops->smp_setup(); | ||
36 | } | ||
37 | |||
38 | #else /* !CONFIG_SMP */ | ||
39 | |||
40 | struct plat_smp_ops; | ||
41 | |||
42 | static inline void plat_smp_setup(void) | ||
43 | { | ||
44 | /* UP, nothing to do ... */ | ||
45 | } | ||
46 | |||
47 | static inline void register_smp_ops(struct plat_smp_ops *ops) | ||
48 | { | ||
49 | } | ||
50 | |||
51 | #endif /* !CONFIG_SMP */ | ||
52 | |||
53 | extern struct plat_smp_ops up_smp_ops; | ||
54 | extern struct plat_smp_ops vsmp_smp_ops; | ||
55 | |||
56 | #endif /* __ASM_SMP_OPS_H */ | ||
diff --git a/include/asm-mips/smp.h b/include/asm-mips/smp.h index dc770025a9b0..84fef1aeec0c 100644 --- a/include/asm-mips/smp.h +++ b/include/asm-mips/smp.h | |||
@@ -11,14 +11,16 @@ | |||
11 | #ifndef __ASM_SMP_H | 11 | #ifndef __ASM_SMP_H |
12 | #define __ASM_SMP_H | 12 | #define __ASM_SMP_H |
13 | 13 | ||
14 | |||
15 | #ifdef CONFIG_SMP | ||
16 | |||
17 | #include <linux/bitops.h> | 14 | #include <linux/bitops.h> |
18 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
19 | #include <linux/threads.h> | 16 | #include <linux/threads.h> |
20 | #include <linux/cpumask.h> | 17 | #include <linux/cpumask.h> |
18 | |||
21 | #include <asm/atomic.h> | 19 | #include <asm/atomic.h> |
20 | #include <asm/smp-ops.h> | ||
21 | |||
22 | extern int smp_num_siblings; | ||
23 | extern cpumask_t cpu_sibling_map[]; | ||
22 | 24 | ||
23 | #define raw_smp_processor_id() (current_thread_info()->cpu) | 25 | #define raw_smp_processor_id() (current_thread_info()->cpu) |
24 | 26 | ||
@@ -49,56 +51,6 @@ extern struct call_data_struct *call_data; | |||
49 | extern cpumask_t phys_cpu_present_map; | 51 | extern cpumask_t phys_cpu_present_map; |
50 | #define cpu_possible_map phys_cpu_present_map | 52 | #define cpu_possible_map phys_cpu_present_map |
51 | 53 | ||
52 | /* | ||
53 | * These are defined by the board-specific code. | ||
54 | */ | ||
55 | |||
56 | /* | ||
57 | * Cause the function described by call_data to be executed on the passed | ||
58 | * cpu. When the function has finished, increment the finished field of | ||
59 | * call_data. | ||
60 | */ | ||
61 | extern void core_send_ipi(int cpu, unsigned int action); | ||
62 | |||
63 | static inline void core_send_ipi_mask(cpumask_t mask, unsigned int action) | ||
64 | { | ||
65 | unsigned int i; | ||
66 | |||
67 | for_each_cpu_mask(i, mask) | ||
68 | core_send_ipi(i, action); | ||
69 | } | ||
70 | |||
71 | |||
72 | /* | ||
73 | * Firmware CPU startup hook | ||
74 | */ | ||
75 | extern void prom_boot_secondary(int cpu, struct task_struct *idle); | ||
76 | |||
77 | /* | ||
78 | * After we've done initial boot, this function is called to allow the | ||
79 | * board code to clean up state, if needed | ||
80 | */ | ||
81 | extern void prom_init_secondary(void); | ||
82 | |||
83 | /* | ||
84 | * Populate cpu_possible_map before smp_init, called from setup_arch. | ||
85 | */ | ||
86 | extern void plat_smp_setup(void); | ||
87 | |||
88 | /* | ||
89 | * Called in smp_prepare_cpus. | ||
90 | */ | ||
91 | extern void plat_prepare_cpus(unsigned int max_cpus); | ||
92 | |||
93 | /* | ||
94 | * Last chance for the board code to finish SMP initialization before | ||
95 | * the CPU is "online". | ||
96 | */ | ||
97 | extern void prom_smp_finish(void); | ||
98 | |||
99 | /* Hook for after all CPUs are online */ | ||
100 | extern void prom_cpus_done(void); | ||
101 | |||
102 | extern void asmlinkage smp_bootstrap(void); | 54 | extern void asmlinkage smp_bootstrap(void); |
103 | 55 | ||
104 | /* | 56 | /* |
@@ -108,11 +60,11 @@ extern void asmlinkage smp_bootstrap(void); | |||
108 | */ | 60 | */ |
109 | static inline void smp_send_reschedule(int cpu) | 61 | static inline void smp_send_reschedule(int cpu) |
110 | { | 62 | { |
111 | core_send_ipi(cpu, SMP_RESCHEDULE_YOURSELF); | 63 | extern struct plat_smp_ops *mp_ops; /* private */ |
64 | |||
65 | mp_ops->send_ipi_single(cpu, SMP_RESCHEDULE_YOURSELF); | ||
112 | } | 66 | } |
113 | 67 | ||
114 | extern asmlinkage void smp_call_function_interrupt(void); | 68 | extern asmlinkage void smp_call_function_interrupt(void); |
115 | 69 | ||
116 | #endif /* CONFIG_SMP */ | ||
117 | |||
118 | #endif /* __ASM_SMP_H */ | 70 | #endif /* __ASM_SMP_H */ |
diff --git a/include/asm-mips/sni.h b/include/asm-mips/sni.h index af081457f847..e716447e5e03 100644 --- a/include/asm-mips/sni.h +++ b/include/asm-mips/sni.h | |||
@@ -35,23 +35,23 @@ extern unsigned int sni_brd_type; | |||
35 | #define SNI_CPU_M8050 0x0b | 35 | #define SNI_CPU_M8050 0x0b |
36 | #define SNI_CPU_M8053 0x0d | 36 | #define SNI_CPU_M8053 0x0d |
37 | 37 | ||
38 | #define SNI_PORT_BASE 0xb4000000 | 38 | #define SNI_PORT_BASE CKSEG1ADDR(0xb4000000) |
39 | 39 | ||
40 | #ifndef __MIPSEL__ | 40 | #ifndef __MIPSEL__ |
41 | /* | 41 | /* |
42 | * ASIC PCI registers for big endian configuration. | 42 | * ASIC PCI registers for big endian configuration. |
43 | */ | 43 | */ |
44 | #define PCIMT_UCONF 0xbfff0004 | 44 | #define PCIMT_UCONF CKSEG1ADDR(0xbfff0004) |
45 | #define PCIMT_IOADTIMEOUT2 0xbfff000c | 45 | #define PCIMT_IOADTIMEOUT2 CKSEG1ADDR(0xbfff000c) |
46 | #define PCIMT_IOMEMCONF 0xbfff0014 | 46 | #define PCIMT_IOMEMCONF CKSEG1ADDR(0xbfff0014) |
47 | #define PCIMT_IOMMU 0xbfff001c | 47 | #define PCIMT_IOMMU CKSEG1ADDR(0xbfff001c) |
48 | #define PCIMT_IOADTIMEOUT1 0xbfff0024 | 48 | #define PCIMT_IOADTIMEOUT1 CKSEG1ADDR(0xbfff0024) |
49 | #define PCIMT_DMAACCESS 0xbfff002c | 49 | #define PCIMT_DMAACCESS CKSEG1ADDR(0xbfff002c) |
50 | #define PCIMT_DMAHIT 0xbfff0034 | 50 | #define PCIMT_DMAHIT CKSEG1ADDR(0xbfff0034) |
51 | #define PCIMT_ERRSTATUS 0xbfff003c | 51 | #define PCIMT_ERRSTATUS CKSEG1ADDR(0xbfff003c) |
52 | #define PCIMT_ERRADDR 0xbfff0044 | 52 | #define PCIMT_ERRADDR CKSEG1ADDR(0xbfff0044) |
53 | #define PCIMT_SYNDROME 0xbfff004c | 53 | #define PCIMT_SYNDROME CKSEG1ADDR(0xbfff004c) |
54 | #define PCIMT_ITPEND 0xbfff0054 | 54 | #define PCIMT_ITPEND CKSEG1ADDR(0xbfff0054) |
55 | #define IT_INT2 0x01 | 55 | #define IT_INT2 0x01 |
56 | #define IT_INTD 0x02 | 56 | #define IT_INTD 0x02 |
57 | #define IT_INTC 0x04 | 57 | #define IT_INTC 0x04 |
@@ -60,32 +60,32 @@ extern unsigned int sni_brd_type; | |||
60 | #define IT_EISA 0x20 | 60 | #define IT_EISA 0x20 |
61 | #define IT_SCSI 0x40 | 61 | #define IT_SCSI 0x40 |
62 | #define IT_ETH 0x80 | 62 | #define IT_ETH 0x80 |
63 | #define PCIMT_IRQSEL 0xbfff005c | 63 | #define PCIMT_IRQSEL CKSEG1ADDR(0xbfff005c) |
64 | #define PCIMT_TESTMEM 0xbfff0064 | 64 | #define PCIMT_TESTMEM CKSEG1ADDR(0xbfff0064) |
65 | #define PCIMT_ECCREG 0xbfff006c | 65 | #define PCIMT_ECCREG CKSEG1ADDR(0xbfff006c) |
66 | #define PCIMT_CONFIG_ADDRESS 0xbfff0074 | 66 | #define PCIMT_CONFIG_ADDRESS CKSEG1ADDR(0xbfff0074) |
67 | #define PCIMT_ASIC_ID 0xbfff007c /* read */ | 67 | #define PCIMT_ASIC_ID CKSEG1ADDR(0xbfff007c) /* read */ |
68 | #define PCIMT_SOFT_RESET 0xbfff007c /* write */ | 68 | #define PCIMT_SOFT_RESET CKSEG1ADDR(0xbfff007c) /* write */ |
69 | #define PCIMT_PIA_OE 0xbfff0084 | 69 | #define PCIMT_PIA_OE CKSEG1ADDR(0xbfff0084) |
70 | #define PCIMT_PIA_DATAOUT 0xbfff008c | 70 | #define PCIMT_PIA_DATAOUT CKSEG1ADDR(0xbfff008c) |
71 | #define PCIMT_PIA_DATAIN 0xbfff0094 | 71 | #define PCIMT_PIA_DATAIN CKSEG1ADDR(0xbfff0094) |
72 | #define PCIMT_CACHECONF 0xbfff009c | 72 | #define PCIMT_CACHECONF CKSEG1ADDR(0xbfff009c) |
73 | #define PCIMT_INVSPACE 0xbfff00a4 | 73 | #define PCIMT_INVSPACE CKSEG1ADDR(0xbfff00a4) |
74 | #else | 74 | #else |
75 | /* | 75 | /* |
76 | * ASIC PCI registers for little endian configuration. | 76 | * ASIC PCI registers for little endian configuration. |
77 | */ | 77 | */ |
78 | #define PCIMT_UCONF 0xbfff0000 | 78 | #define PCIMT_UCONF CKSEG1ADDR(0xbfff0000) |
79 | #define PCIMT_IOADTIMEOUT2 0xbfff0008 | 79 | #define PCIMT_IOADTIMEOUT2 CKSEG1ADDR(0xbfff0008) |
80 | #define PCIMT_IOMEMCONF 0xbfff0010 | 80 | #define PCIMT_IOMEMCONF CKSEG1ADDR(0xbfff0010) |
81 | #define PCIMT_IOMMU 0xbfff0018 | 81 | #define PCIMT_IOMMU CKSEG1ADDR(0xbfff0018) |
82 | #define PCIMT_IOADTIMEOUT1 0xbfff0020 | 82 | #define PCIMT_IOADTIMEOUT1 CKSEG1ADDR(0xbfff0020) |
83 | #define PCIMT_DMAACCESS 0xbfff0028 | 83 | #define PCIMT_DMAACCESS CKSEG1ADDR(0xbfff0028) |
84 | #define PCIMT_DMAHIT 0xbfff0030 | 84 | #define PCIMT_DMAHIT CKSEG1ADDR(0xbfff0030) |
85 | #define PCIMT_ERRSTATUS 0xbfff0038 | 85 | #define PCIMT_ERRSTATUS CKSEG1ADDR(0xbfff0038) |
86 | #define PCIMT_ERRADDR 0xbfff0040 | 86 | #define PCIMT_ERRADDR CKSEG1ADDR(0xbfff0040) |
87 | #define PCIMT_SYNDROME 0xbfff0048 | 87 | #define PCIMT_SYNDROME CKSEG1ADDR(0xbfff0048) |
88 | #define PCIMT_ITPEND 0xbfff0050 | 88 | #define PCIMT_ITPEND CKSEG1ADDR(0xbfff0050) |
89 | #define IT_INT2 0x01 | 89 | #define IT_INT2 0x01 |
90 | #define IT_INTD 0x02 | 90 | #define IT_INTD 0x02 |
91 | #define IT_INTC 0x04 | 91 | #define IT_INTC 0x04 |
@@ -94,20 +94,20 @@ extern unsigned int sni_brd_type; | |||
94 | #define IT_EISA 0x20 | 94 | #define IT_EISA 0x20 |
95 | #define IT_SCSI 0x40 | 95 | #define IT_SCSI 0x40 |
96 | #define IT_ETH 0x80 | 96 | #define IT_ETH 0x80 |
97 | #define PCIMT_IRQSEL 0xbfff0058 | 97 | #define PCIMT_IRQSEL CKSEG1ADDR(0xbfff0058) |
98 | #define PCIMT_TESTMEM 0xbfff0060 | 98 | #define PCIMT_TESTMEM CKSEG1ADDR(0xbfff0060) |
99 | #define PCIMT_ECCREG 0xbfff0068 | 99 | #define PCIMT_ECCREG CKSEG1ADDR(0xbfff0068) |
100 | #define PCIMT_CONFIG_ADDRESS 0xbfff0070 | 100 | #define PCIMT_CONFIG_ADDRESS CKSEG1ADDR(0xbfff0070) |
101 | #define PCIMT_ASIC_ID 0xbfff0078 /* read */ | 101 | #define PCIMT_ASIC_ID CKSEG1ADDR(0xbfff0078) /* read */ |
102 | #define PCIMT_SOFT_RESET 0xbfff0078 /* write */ | 102 | #define PCIMT_SOFT_RESET CKSEG1ADDR(0xbfff0078) /* write */ |
103 | #define PCIMT_PIA_OE 0xbfff0080 | 103 | #define PCIMT_PIA_OE CKSEG1ADDR(0xbfff0080) |
104 | #define PCIMT_PIA_DATAOUT 0xbfff0088 | 104 | #define PCIMT_PIA_DATAOUT CKSEG1ADDR(0xbfff0088) |
105 | #define PCIMT_PIA_DATAIN 0xbfff0090 | 105 | #define PCIMT_PIA_DATAIN CKSEG1ADDR(0xbfff0090) |
106 | #define PCIMT_CACHECONF 0xbfff0098 | 106 | #define PCIMT_CACHECONF CKSEG1ADDR(0xbfff0098) |
107 | #define PCIMT_INVSPACE 0xbfff00a0 | 107 | #define PCIMT_INVSPACE CKSEG1ADDR(0xbfff00a0) |
108 | #endif | 108 | #endif |
109 | 109 | ||
110 | #define PCIMT_PCI_CONF 0xbfff0100 | 110 | #define PCIMT_PCI_CONF CKSEG1ADDR(0xbfff0100) |
111 | 111 | ||
112 | /* | 112 | /* |
113 | * Data port for the PCI bus in IO space | 113 | * Data port for the PCI bus in IO space |
@@ -117,34 +117,34 @@ extern unsigned int sni_brd_type; | |||
117 | /* | 117 | /* |
118 | * Board specific registers | 118 | * Board specific registers |
119 | */ | 119 | */ |
120 | #define PCIMT_CSMSR 0xbfd00000 | 120 | #define PCIMT_CSMSR CKSEG1ADDR(0xbfd00000) |
121 | #define PCIMT_CSSWITCH 0xbfd10000 | 121 | #define PCIMT_CSSWITCH CKSEG1ADDR(0xbfd10000) |
122 | #define PCIMT_CSITPEND 0xbfd20000 | 122 | #define PCIMT_CSITPEND CKSEG1ADDR(0xbfd20000) |
123 | #define PCIMT_AUTO_PO_EN 0xbfd30000 | 123 | #define PCIMT_AUTO_PO_EN CKSEG1ADDR(0xbfd30000) |
124 | #define PCIMT_CLR_TEMP 0xbfd40000 | 124 | #define PCIMT_CLR_TEMP CKSEG1ADDR(0xbfd40000) |
125 | #define PCIMT_AUTO_PO_DIS 0xbfd50000 | 125 | #define PCIMT_AUTO_PO_DIS CKSEG1ADDR(0xbfd50000) |
126 | #define PCIMT_EXMSR 0xbfd60000 | 126 | #define PCIMT_EXMSR CKSEG1ADDR(0xbfd60000) |
127 | #define PCIMT_UNUSED1 0xbfd70000 | 127 | #define PCIMT_UNUSED1 CKSEG1ADDR(0xbfd70000) |
128 | #define PCIMT_CSWCSM 0xbfd80000 | 128 | #define PCIMT_CSWCSM CKSEG1ADDR(0xbfd80000) |
129 | #define PCIMT_UNUSED2 0xbfd90000 | 129 | #define PCIMT_UNUSED2 CKSEG1ADDR(0xbfd90000) |
130 | #define PCIMT_CSLED 0xbfda0000 | 130 | #define PCIMT_CSLED CKSEG1ADDR(0xbfda0000) |
131 | #define PCIMT_CSMAPISA 0xbfdb0000 | 131 | #define PCIMT_CSMAPISA CKSEG1ADDR(0xbfdb0000) |
132 | #define PCIMT_CSRSTBP 0xbfdc0000 | 132 | #define PCIMT_CSRSTBP CKSEG1ADDR(0xbfdc0000) |
133 | #define PCIMT_CLRPOFF 0xbfdd0000 | 133 | #define PCIMT_CLRPOFF CKSEG1ADDR(0xbfdd0000) |
134 | #define PCIMT_CSTIMER 0xbfde0000 | 134 | #define PCIMT_CSTIMER CKSEG1ADDR(0xbfde0000) |
135 | #define PCIMT_PWDN 0xbfdf0000 | 135 | #define PCIMT_PWDN CKSEG1ADDR(0xbfdf0000) |
136 | 136 | ||
137 | /* | 137 | /* |
138 | * A20R based boards | 138 | * A20R based boards |
139 | */ | 139 | */ |
140 | #define A20R_PT_CLOCK_BASE 0xbc040000 | 140 | #define A20R_PT_CLOCK_BASE CKSEG1ADDR(0xbc040000) |
141 | #define A20R_PT_TIM0_ACK 0xbc050000 | 141 | #define A20R_PT_TIM0_ACK CKSEG1ADDR(0xbc050000) |
142 | #define A20R_PT_TIM1_ACK 0xbc060000 | 142 | #define A20R_PT_TIM1_ACK CKSEG1ADDR(0xbc060000) |
143 | 143 | ||
144 | #define SNI_A20R_IRQ_BASE MIPS_CPU_IRQ_BASE | 144 | #define SNI_A20R_IRQ_BASE MIPS_CPU_IRQ_BASE |
145 | #define SNI_A20R_IRQ_TIMER (SNI_A20R_IRQ_BASE+5) | 145 | #define SNI_A20R_IRQ_TIMER (SNI_A20R_IRQ_BASE+5) |
146 | 146 | ||
147 | #define SNI_PCIT_INT_REG 0xbfff000c | 147 | #define SNI_PCIT_INT_REG CKSEG1ADDR(0xbfff000c) |
148 | 148 | ||
149 | #define SNI_PCIT_INT_START 24 | 149 | #define SNI_PCIT_INT_START 24 |
150 | #define SNI_PCIT_INT_END 30 | 150 | #define SNI_PCIT_INT_END 30 |
@@ -186,10 +186,30 @@ extern unsigned int sni_brd_type; | |||
186 | /* | 186 | /* |
187 | * Base address for the mapped 16mb EISA bus segment. | 187 | * Base address for the mapped 16mb EISA bus segment. |
188 | */ | 188 | */ |
189 | #define PCIMT_EISA_BASE 0xb0000000 | 189 | #define PCIMT_EISA_BASE CKSEG1ADDR(0xb0000000) |
190 | 190 | ||
191 | /* PCI EISA Interrupt acknowledge */ | 191 | /* PCI EISA Interrupt acknowledge */ |
192 | #define PCIMT_INT_ACKNOWLEDGE 0xba000000 | 192 | #define PCIMT_INT_ACKNOWLEDGE CKSEG1ADDR(0xba000000) |
193 | |||
194 | /* | ||
195 | * SNI ID PROM | ||
196 | * | ||
197 | * SNI_IDPROM_MEMSIZE Memsize in 16MB quantities | ||
198 | * SNI_IDPROM_BRDTYPE Board Type | ||
199 | * SNI_IDPROM_CPUTYPE CPU Type on RM400 | ||
200 | */ | ||
201 | #ifdef CONFIG_CPU_BIG_ENDIAN | ||
202 | #define __SNI_END 0 | ||
203 | #endif | ||
204 | #ifdef CONFIG_CPU_LITTLE_ENDIAN | ||
205 | #define __SNI_END 3 | ||
206 | #endif | ||
207 | #define SNI_IDPROM_BASE CKSEG1ADDR(0x1ff00000) | ||
208 | #define SNI_IDPROM_MEMSIZE (SNI_IDPROM_BASE + (0x28 ^ __SNI_END)) | ||
209 | #define SNI_IDPROM_BRDTYPE (SNI_IDPROM_BASE + (0x29 ^ __SNI_END)) | ||
210 | #define SNI_IDPROM_CPUTYPE (SNI_IDPROM_BASE + (0x30 ^ __SNI_END)) | ||
211 | |||
212 | #define SNI_IDPROM_SIZE 0x1000 | ||
193 | 213 | ||
194 | /* board specific init functions */ | 214 | /* board specific init functions */ |
195 | extern void sni_a20r_init(void); | 215 | extern void sni_a20r_init(void); |
@@ -207,6 +227,9 @@ extern void sni_pcimt_irq_init(void); | |||
207 | /* timer inits */ | 227 | /* timer inits */ |
208 | extern void sni_cpu_time_init(void); | 228 | extern void sni_cpu_time_init(void); |
209 | 229 | ||
230 | /* eisa init for RM200/400 */ | ||
231 | extern int sni_eisa_root_init(void); | ||
232 | |||
210 | /* common irq stuff */ | 233 | /* common irq stuff */ |
211 | extern void (*sni_hwint)(void); | 234 | extern void (*sni_hwint)(void); |
212 | extern struct irqaction sni_isa_irq; | 235 | extern struct irqaction sni_isa_irq; |
diff --git a/include/asm-mips/stackframe.h b/include/asm-mips/stackframe.h index fb41a8d76392..051e1af0bb95 100644 --- a/include/asm-mips/stackframe.h +++ b/include/asm-mips/stackframe.h | |||
@@ -6,6 +6,7 @@ | |||
6 | * Copyright (C) 1994, 95, 96, 99, 2001 Ralf Baechle | 6 | * Copyright (C) 1994, 95, 96, 99, 2001 Ralf Baechle |
7 | * Copyright (C) 1994, 1995, 1996 Paul M. Antoine. | 7 | * Copyright (C) 1994, 1995, 1996 Paul M. Antoine. |
8 | * Copyright (C) 1999 Silicon Graphics, Inc. | 8 | * Copyright (C) 1999 Silicon Graphics, Inc. |
9 | * Copyright (C) 2007 Maciej W. Rozycki | ||
9 | */ | 10 | */ |
10 | #ifndef _ASM_STACKFRAME_H | 11 | #ifndef _ASM_STACKFRAME_H |
11 | #define _ASM_STACKFRAME_H | 12 | #define _ASM_STACKFRAME_H |
@@ -145,8 +146,16 @@ | |||
145 | .set reorder | 146 | .set reorder |
146 | /* Called from user mode, new stack. */ | 147 | /* Called from user mode, new stack. */ |
147 | get_saved_sp | 148 | get_saved_sp |
149 | #ifndef CONFIG_CPU_DADDI_WORKAROUNDS | ||
148 | 8: move k0, sp | 150 | 8: move k0, sp |
149 | PTR_SUBU sp, k1, PT_SIZE | 151 | PTR_SUBU sp, k1, PT_SIZE |
152 | #else | ||
153 | .set at=k0 | ||
154 | 8: PTR_SUBU k1, PT_SIZE | ||
155 | .set noat | ||
156 | move k0, sp | ||
157 | move sp, k1 | ||
158 | #endif | ||
150 | LONG_S k0, PT_R29(sp) | 159 | LONG_S k0, PT_R29(sp) |
151 | LONG_S $3, PT_R3(sp) | 160 | LONG_S $3, PT_R3(sp) |
152 | /* | 161 | /* |
diff --git a/include/asm-mips/time.h b/include/asm-mips/time.h index 7717934f94c3..a8fd16e1981f 100644 --- a/include/asm-mips/time.h +++ b/include/asm-mips/time.h | |||
@@ -31,20 +31,13 @@ extern int rtc_mips_set_time(unsigned long); | |||
31 | extern int rtc_mips_set_mmss(unsigned long); | 31 | extern int rtc_mips_set_mmss(unsigned long); |
32 | 32 | ||
33 | /* | 33 | /* |
34 | * Timer interrupt functions. | ||
35 | * mips_timer_state is needed for high precision timer calibration. | ||
36 | */ | ||
37 | extern int (*mips_timer_state)(void); | ||
38 | |||
39 | /* | ||
40 | * board specific routines required by time_init(). | 34 | * board specific routines required by time_init(). |
41 | */ | 35 | */ |
42 | extern void plat_time_init(void); | 36 | extern void plat_time_init(void); |
43 | 37 | ||
44 | /* | 38 | /* |
45 | * mips_hpt_frequency - must be set if you intend to use an R4k-compatible | 39 | * mips_hpt_frequency - must be set if you intend to use an R4k-compatible |
46 | * counter as a timer interrupt source; otherwise it can be set up | 40 | * counter as a timer interrupt source. |
47 | * automagically with an aid of mips_timer_state. | ||
48 | */ | 41 | */ |
49 | extern unsigned int mips_hpt_frequency; | 42 | extern unsigned int mips_hpt_frequency; |
50 | 43 | ||
diff --git a/include/asm-mips/topology.h b/include/asm-mips/topology.h index 0440fb9f2180..259145e07e97 100644 --- a/include/asm-mips/topology.h +++ b/include/asm-mips/topology.h | |||
@@ -1 +1,17 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2007 by Ralf Baechle | ||
7 | */ | ||
8 | #ifndef __ASM_TOPOLOGY_H | ||
9 | #define __ASM_TOPOLOGY_H | ||
10 | |||
1 | #include <topology.h> | 11 | #include <topology.h> |
12 | |||
13 | #ifdef CONFIG_SMP | ||
14 | #define smt_capable() (smp_num_siblings > 1) | ||
15 | #endif | ||
16 | |||
17 | #endif /* __ASM_TOPOLOGY_H */ | ||
diff --git a/include/asm-mips/tx4927/tx4927_pci.h b/include/asm-mips/tx4927/tx4927_pci.h index 3f1e470192e3..0be77df70f2b 100644 --- a/include/asm-mips/tx4927/tx4927_pci.h +++ b/include/asm-mips/tx4927/tx4927_pci.h | |||
@@ -9,6 +9,7 @@ | |||
9 | #define __ASM_TX4927_TX4927_PCI_H | 9 | #define __ASM_TX4927_TX4927_PCI_H |
10 | 10 | ||
11 | #define TX4927_CCFG_TOE 0x00004000 | 11 | #define TX4927_CCFG_TOE 0x00004000 |
12 | #define TX4927_CCFG_WR 0x00008000 | ||
12 | #define TX4927_CCFG_TINTDIS 0x01000000 | 13 | #define TX4927_CCFG_TINTDIS 0x01000000 |
13 | 14 | ||
14 | #define TX4927_PCIMEM 0x08000000 | 15 | #define TX4927_PCIMEM 0x08000000 |
diff --git a/include/asm-mips/uaccess.h b/include/asm-mips/uaccess.h index c30c718994c9..66523d610950 100644 --- a/include/asm-mips/uaccess.h +++ b/include/asm-mips/uaccess.h | |||
@@ -5,6 +5,7 @@ | |||
5 | * | 5 | * |
6 | * Copyright (C) 1996, 1997, 1998, 1999, 2000, 03, 04 by Ralf Baechle | 6 | * Copyright (C) 1996, 1997, 1998, 1999, 2000, 03, 04 by Ralf Baechle |
7 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. | 7 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. |
8 | * Copyright (C) 2007 Maciej W. Rozycki | ||
8 | */ | 9 | */ |
9 | #ifndef _ASM_UACCESS_H | 10 | #ifndef _ASM_UACCESS_H |
10 | #define _ASM_UACCESS_H | 11 | #define _ASM_UACCESS_H |
@@ -387,6 +388,12 @@ extern void __put_user_unknown(void); | |||
387 | "jal\t" #destination "\n\t" | 388 | "jal\t" #destination "\n\t" |
388 | #endif | 389 | #endif |
389 | 390 | ||
391 | #ifndef CONFIG_CPU_DADDI_WORKAROUNDS | ||
392 | #define DADDI_SCRATCH "$0" | ||
393 | #else | ||
394 | #define DADDI_SCRATCH "$3" | ||
395 | #endif | ||
396 | |||
390 | extern size_t __copy_user(void *__to, const void *__from, size_t __n); | 397 | extern size_t __copy_user(void *__to, const void *__from, size_t __n); |
391 | 398 | ||
392 | #define __invoke_copy_to_user(to, from, n) \ | 399 | #define __invoke_copy_to_user(to, from, n) \ |
@@ -403,7 +410,7 @@ extern size_t __copy_user(void *__to, const void *__from, size_t __n); | |||
403 | : "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r) \ | 410 | : "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r) \ |
404 | : \ | 411 | : \ |
405 | : "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31", \ | 412 | : "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31", \ |
406 | "memory"); \ | 413 | DADDI_SCRATCH, "memory"); \ |
407 | __cu_len_r; \ | 414 | __cu_len_r; \ |
408 | }) | 415 | }) |
409 | 416 | ||
@@ -512,7 +519,7 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n); | |||
512 | : "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r) \ | 519 | : "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r) \ |
513 | : \ | 520 | : \ |
514 | : "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31", \ | 521 | : "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31", \ |
515 | "memory"); \ | 522 | DADDI_SCRATCH, "memory"); \ |
516 | __cu_len_r; \ | 523 | __cu_len_r; \ |
517 | }) | 524 | }) |
518 | 525 | ||
@@ -535,7 +542,7 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n); | |||
535 | : "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r) \ | 542 | : "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r) \ |
536 | : \ | 543 | : \ |
537 | : "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31", \ | 544 | : "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31", \ |
538 | "memory"); \ | 545 | DADDI_SCRATCH, "memory"); \ |
539 | __cu_len_r; \ | 546 | __cu_len_r; \ |
540 | }) | 547 | }) |
541 | 548 | ||
diff --git a/include/asm-mips/war.h b/include/asm-mips/war.h index d2808edfd4e9..22361d5e3bf0 100644 --- a/include/asm-mips/war.h +++ b/include/asm-mips/war.h | |||
@@ -4,6 +4,7 @@ | |||
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * Copyright (C) 2002, 2004, 2007 by Ralf Baechle | 6 | * Copyright (C) 2002, 2004, 2007 by Ralf Baechle |
7 | * Copyright (C) 2007 Maciej W. Rozycki | ||
7 | */ | 8 | */ |
8 | #ifndef _ASM_WAR_H | 9 | #ifndef _ASM_WAR_H |
9 | #define _ASM_WAR_H | 10 | #define _ASM_WAR_H |
@@ -11,6 +12,67 @@ | |||
11 | #include <war.h> | 12 | #include <war.h> |
12 | 13 | ||
13 | /* | 14 | /* |
15 | * Work around certain R4000 CPU errata (as implemented by GCC): | ||
16 | * | ||
17 | * - A double-word or a variable shift may give an incorrect result | ||
18 | * if executed immediately after starting an integer division: | ||
19 | * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", | ||
20 | * erratum #28 | ||
21 | * "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum | ||
22 | * #19 | ||
23 | * | ||
24 | * - A double-word or a variable shift may give an incorrect result | ||
25 | * if executed while an integer multiplication is in progress: | ||
26 | * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", | ||
27 | * errata #16 & #28 | ||
28 | * | ||
29 | * - An integer division may give an incorrect result if started in | ||
30 | * a delay slot of a taken branch or a jump: | ||
31 | * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", | ||
32 | * erratum #52 | ||
33 | */ | ||
34 | #ifdef CONFIG_CPU_R4000_WORKAROUNDS | ||
35 | #define R4000_WAR 1 | ||
36 | #else | ||
37 | #define R4000_WAR 0 | ||
38 | #endif | ||
39 | |||
40 | /* | ||
41 | * Work around certain R4400 CPU errata (as implemented by GCC): | ||
42 | * | ||
43 | * - A double-word or a variable shift may give an incorrect result | ||
44 | * if executed immediately after starting an integer division: | ||
45 | * "MIPS R4400MC Errata, Processor Revision 1.0", erratum #10 | ||
46 | * "MIPS R4400MC Errata, Processor Revision 2.0 & 3.0", erratum #4 | ||
47 | */ | ||
48 | #ifdef CONFIG_CPU_R4400_WORKAROUNDS | ||
49 | #define R4400_WAR 1 | ||
50 | #else | ||
51 | #define R4400_WAR 0 | ||
52 | #endif | ||
53 | |||
54 | /* | ||
55 | * Work around the "daddi" and "daddiu" CPU errata: | ||
56 | * | ||
57 | * - The `daddi' instruction fails to trap on overflow. | ||
58 | * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", | ||
59 | * erratum #23 | ||
60 | * | ||
61 | * - The `daddiu' instruction can produce an incorrect result. | ||
62 | * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", | ||
63 | * erratum #41 | ||
64 | * "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum | ||
65 | * #15 | ||
66 | * "MIPS R4400PC/SC Errata, Processor Revision 1.0", erratum #7 | ||
67 | * "MIPS R4400MC Errata, Processor Revision 1.0", erratum #5 | ||
68 | */ | ||
69 | #ifdef CONFIG_CPU_DADDI_WORKAROUNDS | ||
70 | #define DADDI_WAR 1 | ||
71 | #else | ||
72 | #define DADDI_WAR 0 | ||
73 | #endif | ||
74 | |||
75 | /* | ||
14 | * Another R4600 erratum. Due to the lack of errata information the exact | 76 | * Another R4600 erratum. Due to the lack of errata information the exact |
15 | * technical details aren't known. I've experimentally found that disabling | 77 | * technical details aren't known. I've experimentally found that disabling |
16 | * interrupts during indexed I-cache flushes seems to be sufficient to deal | 78 | * interrupts during indexed I-cache flushes seems to be sufficient to deal |