diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2007-10-12 21:27:47 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2007-10-12 21:27:47 -0400 |
commit | b981d8b3f5e008ff10d993be633ad00564fc22cd (patch) | |
tree | e292dc07b22308912cf6a58354a608b9e5e8e1fd /include/asm-sparc | |
parent | b11d2127c4893a7315d1e16273bc8560049fa3ca (diff) | |
parent | 2b9e0aae1d50e880c58d46788e5e3ebd89d75d62 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:
drivers/macintosh/adbhid.c
Diffstat (limited to 'include/asm-sparc')
-rw-r--r-- | include/asm-sparc/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-sparc/device.h | 18 | ||||
-rw-r--r-- | include/asm-sparc/fb.h | 9 | ||||
-rw-r--r-- | include/asm-sparc/fcntl.h | 1 | ||||
-rw-r--r-- | include/asm-sparc/floppy.h | 100 | ||||
-rw-r--r-- | include/asm-sparc/irq.h | 173 | ||||
-rw-r--r-- | include/asm-sparc/of_device.h | 49 | ||||
-rw-r--r-- | include/asm-sparc/of_platform.h | 32 | ||||
-rw-r--r-- | include/asm-sparc/oplib.h | 26 | ||||
-rw-r--r-- | include/asm-sparc/pgtable.h | 3 | ||||
-rw-r--r-- | include/asm-sparc/prom.h | 67 | ||||
-rw-r--r-- | include/asm-sparc/sbus.h | 1 | ||||
-rw-r--r-- | include/asm-sparc/sfp-machine.h | 6 | ||||
-rw-r--r-- | include/asm-sparc/system.h | 10 | ||||
-rw-r--r-- | include/asm-sparc/tlbflush.h | 6 | ||||
-rw-r--r-- | include/asm-sparc/unistd.h | 6 |
16 files changed, 169 insertions, 339 deletions
diff --git a/include/asm-sparc/a.out.h b/include/asm-sparc/a.out.h index 9090060a23e6..917e04250696 100644 --- a/include/asm-sparc/a.out.h +++ b/include/asm-sparc/a.out.h | |||
@@ -92,6 +92,7 @@ struct relocation_info /* used when header.a_machtype == M_SPARC */ | |||
92 | #include <asm/page.h> | 92 | #include <asm/page.h> |
93 | 93 | ||
94 | #define STACK_TOP (PAGE_OFFSET - PAGE_SIZE) | 94 | #define STACK_TOP (PAGE_OFFSET - PAGE_SIZE) |
95 | #define STACK_TOP_MAX STACK_TOP | ||
95 | 96 | ||
96 | #endif /* __KERNEL__ */ | 97 | #endif /* __KERNEL__ */ |
97 | 98 | ||
diff --git a/include/asm-sparc/device.h b/include/asm-sparc/device.h index d8f9872b0e2d..c0a7786d65f7 100644 --- a/include/asm-sparc/device.h +++ b/include/asm-sparc/device.h | |||
@@ -3,5 +3,21 @@ | |||
3 | * | 3 | * |
4 | * This file is released under the GPLv2 | 4 | * This file is released under the GPLv2 |
5 | */ | 5 | */ |
6 | #include <asm-generic/device.h> | 6 | #ifndef _ASM_SPARC_DEVICE_H |
7 | #define _ASM_SPARC_DEVICE_H | ||
8 | |||
9 | struct device_node; | ||
10 | struct of_device; | ||
11 | |||
12 | struct dev_archdata { | ||
13 | void *iommu; | ||
14 | void *stc; | ||
15 | void *host_controller; | ||
16 | |||
17 | struct device_node *prom_node; | ||
18 | struct of_device *op; | ||
19 | }; | ||
20 | |||
21 | #endif /* _ASM_SPARC_DEVICE_H */ | ||
22 | |||
7 | 23 | ||
diff --git a/include/asm-sparc/fb.h b/include/asm-sparc/fb.h index c7df38030992..c73ca081e1f5 100644 --- a/include/asm-sparc/fb.h +++ b/include/asm-sparc/fb.h | |||
@@ -1,11 +1,20 @@ | |||
1 | #ifndef _ASM_FB_H_ | 1 | #ifndef _ASM_FB_H_ |
2 | #define _ASM_FB_H_ | 2 | #define _ASM_FB_H_ |
3 | #include <linux/fb.h> | 3 | #include <linux/fb.h> |
4 | #include <asm/prom.h> | ||
4 | 5 | ||
5 | #define fb_pgprotect(...) do {} while (0) | 6 | #define fb_pgprotect(...) do {} while (0) |
6 | 7 | ||
7 | static inline int fb_is_primary_device(struct fb_info *info) | 8 | static inline int fb_is_primary_device(struct fb_info *info) |
8 | { | 9 | { |
10 | struct device *dev = info->device; | ||
11 | struct device_node *node; | ||
12 | |||
13 | node = dev->archdata.prom_node; | ||
14 | if (node && | ||
15 | node == of_console_device) | ||
16 | return 1; | ||
17 | |||
9 | return 0; | 18 | return 0; |
10 | } | 19 | } |
11 | 20 | ||
diff --git a/include/asm-sparc/fcntl.h b/include/asm-sparc/fcntl.h index 5db60b5ae7b0..5ec546349fc8 100644 --- a/include/asm-sparc/fcntl.h +++ b/include/asm-sparc/fcntl.h | |||
@@ -16,6 +16,7 @@ | |||
16 | #define O_LARGEFILE 0x40000 | 16 | #define O_LARGEFILE 0x40000 |
17 | #define O_DIRECT 0x100000 /* direct disk access hint */ | 17 | #define O_DIRECT 0x100000 /* direct disk access hint */ |
18 | #define O_NOATIME 0x200000 | 18 | #define O_NOATIME 0x200000 |
19 | #define O_CLOEXEC 0x400000 | ||
19 | 20 | ||
20 | #define F_GETOWN 5 /* for sockets. */ | 21 | #define F_GETOWN 5 /* for sockets. */ |
21 | #define F_SETOWN 6 /* for sockets. */ | 22 | #define F_SETOWN 6 /* for sockets. */ |
diff --git a/include/asm-sparc/floppy.h b/include/asm-sparc/floppy.h index 9073c84218ce..acd06d8ff70a 100644 --- a/include/asm-sparc/floppy.h +++ b/include/asm-sparc/floppy.h | |||
@@ -48,7 +48,7 @@ struct sun_flpy_controller { | |||
48 | 48 | ||
49 | /* You'll only ever find one controller on a SparcStation anyways. */ | 49 | /* You'll only ever find one controller on a SparcStation anyways. */ |
50 | static struct sun_flpy_controller *sun_fdc = NULL; | 50 | static struct sun_flpy_controller *sun_fdc = NULL; |
51 | volatile unsigned char *fdc_status; | 51 | extern volatile unsigned char *fdc_status; |
52 | 52 | ||
53 | struct sun_floppy_ops { | 53 | struct sun_floppy_ops { |
54 | unsigned char (*fd_inb)(int port); | 54 | unsigned char (*fd_inb)(int port); |
@@ -101,6 +101,29 @@ static struct sun_floppy_ops sun_fdops; | |||
101 | #define CROSS_64KB(a,s) (0) | 101 | #define CROSS_64KB(a,s) (0) |
102 | 102 | ||
103 | /* Routines unique to each controller type on a Sun. */ | 103 | /* Routines unique to each controller type on a Sun. */ |
104 | static void sun_set_dor(unsigned char value, int fdc_82077) | ||
105 | { | ||
106 | if (sparc_cpu_model == sun4c) { | ||
107 | unsigned int bits = 0; | ||
108 | if (value & 0x10) | ||
109 | bits |= AUXIO_FLPY_DSEL; | ||
110 | if ((value & 0x80) == 0) | ||
111 | bits |= AUXIO_FLPY_EJCT; | ||
112 | set_auxio(bits, (~bits) & (AUXIO_FLPY_DSEL|AUXIO_FLPY_EJCT)); | ||
113 | } | ||
114 | if (fdc_82077) { | ||
115 | sun_fdc->dor_82077 = value; | ||
116 | } | ||
117 | } | ||
118 | |||
119 | static unsigned char sun_read_dir(void) | ||
120 | { | ||
121 | if (sparc_cpu_model == sun4c) | ||
122 | return (get_auxio() & AUXIO_FLPY_DCHG) ? 0x80 : 0; | ||
123 | else | ||
124 | return sun_fdc->dir_82077; | ||
125 | } | ||
126 | |||
104 | static unsigned char sun_82072_fd_inb(int port) | 127 | static unsigned char sun_82072_fd_inb(int port) |
105 | { | 128 | { |
106 | udelay(5); | 129 | udelay(5); |
@@ -113,7 +136,7 @@ static unsigned char sun_82072_fd_inb(int port) | |||
113 | case 5: /* FD_DATA */ | 136 | case 5: /* FD_DATA */ |
114 | return sun_fdc->data_82072; | 137 | return sun_fdc->data_82072; |
115 | case 7: /* FD_DIR */ | 138 | case 7: /* FD_DIR */ |
116 | return (get_auxio() & AUXIO_FLPY_DCHG)? 0x80: 0; | 139 | return sun_read_dir(); |
117 | }; | 140 | }; |
118 | panic("sun_82072_fd_inb: How did I get here?"); | 141 | panic("sun_82072_fd_inb: How did I get here?"); |
119 | } | 142 | } |
@@ -126,20 +149,7 @@ static void sun_82072_fd_outb(unsigned char value, int port) | |||
126 | printk("floppy: Asked to write to unknown port %d\n", port); | 149 | printk("floppy: Asked to write to unknown port %d\n", port); |
127 | panic("floppy: Port bolixed."); | 150 | panic("floppy: Port bolixed."); |
128 | case 2: /* FD_DOR */ | 151 | case 2: /* FD_DOR */ |
129 | /* Oh geese, 82072 on the Sun has no DOR register, | 152 | sun_set_dor(value, 0); |
130 | * the functionality is implemented via the AUXIO | ||
131 | * I/O register. So we must emulate the behavior. | ||
132 | * | ||
133 | * ASSUMPTIONS: There will only ever be one floppy | ||
134 | * drive attached to a Sun controller | ||
135 | * and it will be at drive zero. | ||
136 | */ | ||
137 | { | ||
138 | unsigned bits = 0; | ||
139 | if (value & 0x10) bits |= AUXIO_FLPY_DSEL; | ||
140 | if ((value & 0x80) == 0) bits |= AUXIO_FLPY_EJCT; | ||
141 | set_auxio(bits, (~bits) & (AUXIO_FLPY_DSEL|AUXIO_FLPY_EJCT)); | ||
142 | } | ||
143 | break; | 153 | break; |
144 | case 5: /* FD_DATA */ | 154 | case 5: /* FD_DATA */ |
145 | sun_fdc->data_82072 = value; | 155 | sun_fdc->data_82072 = value; |
@@ -161,15 +171,22 @@ static unsigned char sun_82077_fd_inb(int port) | |||
161 | default: | 171 | default: |
162 | printk("floppy: Asked to read unknown port %d\n", port); | 172 | printk("floppy: Asked to read unknown port %d\n", port); |
163 | panic("floppy: Port bolixed."); | 173 | panic("floppy: Port bolixed."); |
174 | case 0: /* FD_STATUS_0 */ | ||
175 | return sun_fdc->status1_82077; | ||
176 | case 1: /* FD_STATUS_1 */ | ||
177 | return sun_fdc->status2_82077; | ||
178 | case 2: /* FD_DOR */ | ||
179 | return sun_fdc->dor_82077; | ||
180 | case 3: /* FD_TDR */ | ||
181 | return sun_fdc->tapectl_82077; | ||
164 | case 4: /* FD_STATUS */ | 182 | case 4: /* FD_STATUS */ |
165 | return sun_fdc->status_82077 & ~STATUS_DMA; | 183 | return sun_fdc->status_82077 & ~STATUS_DMA; |
166 | case 5: /* FD_DATA */ | 184 | case 5: /* FD_DATA */ |
167 | return sun_fdc->data_82077; | 185 | return sun_fdc->data_82077; |
168 | case 7: /* FD_DIR */ | 186 | case 7: /* FD_DIR */ |
169 | /* XXX: Is DCL on 0x80 in sun4m? */ | 187 | return sun_read_dir(); |
170 | return sun_fdc->dir_82077; | ||
171 | }; | 188 | }; |
172 | panic("sun_82072_fd_inb: How did I get here?"); | 189 | panic("sun_82077_fd_inb: How did I get here?"); |
173 | } | 190 | } |
174 | 191 | ||
175 | static void sun_82077_fd_outb(unsigned char value, int port) | 192 | static void sun_82077_fd_outb(unsigned char value, int port) |
@@ -180,8 +197,7 @@ static void sun_82077_fd_outb(unsigned char value, int port) | |||
180 | printk("floppy: Asked to write to unknown port %d\n", port); | 197 | printk("floppy: Asked to write to unknown port %d\n", port); |
181 | panic("floppy: Port bolixed."); | 198 | panic("floppy: Port bolixed."); |
182 | case 2: /* FD_DOR */ | 199 | case 2: /* FD_DOR */ |
183 | /* Happily, the 82077 has a real DOR register. */ | 200 | sun_set_dor(value, 1); |
184 | sun_fdc->dor_82077 = value; | ||
185 | break; | 201 | break; |
186 | case 5: /* FD_DATA */ | 202 | case 5: /* FD_DATA */ |
187 | sun_fdc->data_82077 = value; | 203 | sun_fdc->data_82077 = value; |
@@ -192,6 +208,9 @@ static void sun_82077_fd_outb(unsigned char value, int port) | |||
192 | case 4: /* FD_STATUS */ | 208 | case 4: /* FD_STATUS */ |
193 | sun_fdc->status_82077 = value; | 209 | sun_fdc->status_82077 = value; |
194 | break; | 210 | break; |
211 | case 3: /* FD_TDR */ | ||
212 | sun_fdc->tapectl_82077 = value; | ||
213 | break; | ||
195 | }; | 214 | }; |
196 | return; | 215 | return; |
197 | } | 216 | } |
@@ -206,13 +225,13 @@ static void sun_82077_fd_outb(unsigned char value, int port) | |||
206 | * underruns. If non-zero, doing_pdma encodes the direction of | 225 | * underruns. If non-zero, doing_pdma encodes the direction of |
207 | * the transfer for debugging. 1=read 2=write | 226 | * the transfer for debugging. 1=read 2=write |
208 | */ | 227 | */ |
209 | char *pdma_vaddr; | 228 | extern char *pdma_vaddr; |
210 | unsigned long pdma_size; | 229 | extern unsigned long pdma_size; |
211 | volatile int doing_pdma = 0; | 230 | extern volatile int doing_pdma; |
212 | 231 | ||
213 | /* This is software state */ | 232 | /* This is software state */ |
214 | char *pdma_base = NULL; | 233 | extern char *pdma_base; |
215 | unsigned long pdma_areasize; | 234 | extern unsigned long pdma_areasize; |
216 | 235 | ||
217 | /* Common routines to all controller types on the Sparc. */ | 236 | /* Common routines to all controller types on the Sparc. */ |
218 | static __inline__ void virtual_dma_init(void) | 237 | static __inline__ void virtual_dma_init(void) |
@@ -262,7 +281,8 @@ static __inline__ void sun_fd_enable_dma(void) | |||
262 | } | 281 | } |
263 | 282 | ||
264 | /* Our low-level entry point in arch/sparc/kernel/entry.S */ | 283 | /* Our low-level entry point in arch/sparc/kernel/entry.S */ |
265 | irqreturn_t floppy_hardint(int irq, void *unused); | 284 | extern int sparc_floppy_request_irq(int irq, unsigned long flags, |
285 | irqreturn_t (*irq_handler)(int irq, void *)); | ||
266 | 286 | ||
267 | static int sun_fd_request_irq(void) | 287 | static int sun_fd_request_irq(void) |
268 | { | 288 | { |
@@ -271,8 +291,9 @@ static int sun_fd_request_irq(void) | |||
271 | 291 | ||
272 | if(!once) { | 292 | if(!once) { |
273 | once = 1; | 293 | once = 1; |
274 | error = request_fast_irq(FLOPPY_IRQ, floppy_hardint, | 294 | error = sparc_floppy_request_irq(FLOPPY_IRQ, |
275 | IRQF_DISABLED, "floppy"); | 295 | IRQF_DISABLED, |
296 | floppy_interrupt); | ||
276 | return ((error == 0) ? 0 : -1); | 297 | return ((error == 0) ? 0 : -1); |
277 | } else return 0; | 298 | } else return 0; |
278 | } | 299 | } |
@@ -332,16 +353,17 @@ static int sun_floppy_init(void) | |||
332 | goto no_sun_fdc; | 353 | goto no_sun_fdc; |
333 | } | 354 | } |
334 | 355 | ||
335 | if(sparc_cpu_model == sun4c) { | 356 | sun_fdops.fd_inb = sun_82077_fd_inb; |
336 | sun_fdops.fd_inb = sun_82072_fd_inb; | 357 | sun_fdops.fd_outb = sun_82077_fd_outb; |
337 | sun_fdops.fd_outb = sun_82072_fd_outb; | 358 | fdc_status = &sun_fdc->status_82077; |
338 | fdc_status = &sun_fdc->status_82072; | 359 | |
339 | /* printk("AUXIO @0x%lx\n", auxio_register); */ /* P3 */ | 360 | if (sun_fdc->dor_82077 == 0x80) { |
340 | } else { | 361 | sun_fdc->dor_82077 = 0x02; |
341 | sun_fdops.fd_inb = sun_82077_fd_inb; | 362 | if (sun_fdc->dor_82077 == 0x80) { |
342 | sun_fdops.fd_outb = sun_82077_fd_outb; | 363 | sun_fdops.fd_inb = sun_82072_fd_inb; |
343 | fdc_status = &sun_fdc->status_82077; | 364 | sun_fdops.fd_outb = sun_82072_fd_outb; |
344 | /* printk("DOR @0x%p\n", &sun_fdc->dor_82077); */ /* P3 */ | 365 | fdc_status = &sun_fdc->status_82072; |
366 | } | ||
345 | } | 367 | } |
346 | 368 | ||
347 | /* Success... */ | 369 | /* Success... */ |
diff --git a/include/asm-sparc/irq.h b/include/asm-sparc/irq.h index ff520ea97473..fe205cc444b8 100644 --- a/include/asm-sparc/irq.h +++ b/include/asm-sparc/irq.h | |||
@@ -1,184 +1,15 @@ | |||
1 | /* $Id: irq.h,v 1.32 2000/08/26 02:42:28 anton Exp $ | 1 | /* irq.h: IRQ registers on the Sparc. |
2 | * irq.h: IRQ registers on the Sparc. | ||
3 | * | 2 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1995, 2007 David S. Miller (davem@davemloft.net) |
5 | */ | 4 | */ |
6 | 5 | ||
7 | #ifndef _SPARC_IRQ_H | 6 | #ifndef _SPARC_IRQ_H |
8 | #define _SPARC_IRQ_H | 7 | #define _SPARC_IRQ_H |
9 | 8 | ||
10 | #include <linux/linkage.h> | ||
11 | #include <linux/threads.h> /* For NR_CPUS */ | ||
12 | #include <linux/interrupt.h> | 9 | #include <linux/interrupt.h> |
13 | 10 | ||
14 | #include <asm/system.h> /* For SUN4M_NCPUS */ | ||
15 | #include <asm/btfixup.h> | ||
16 | |||
17 | #define __irq_ino(irq) irq | ||
18 | #define __irq_pil(irq) irq | ||
19 | |||
20 | #define NR_IRQS 16 | 11 | #define NR_IRQS 16 |
21 | 12 | ||
22 | #define irq_canonicalize(irq) (irq) | 13 | #define irq_canonicalize(irq) (irq) |
23 | 14 | ||
24 | /* Dave Redman (djhr@tadpole.co.uk) | ||
25 | * changed these to function pointers.. it saves cycles and will allow | ||
26 | * the irq dependencies to be split into different files at a later date | ||
27 | * sun4c_irq.c, sun4m_irq.c etc so we could reduce the kernel size. | ||
28 | * Jakub Jelinek (jj@sunsite.mff.cuni.cz) | ||
29 | * Changed these to btfixup entities... It saves cycles :) | ||
30 | */ | ||
31 | BTFIXUPDEF_CALL(void, disable_irq, unsigned int) | ||
32 | BTFIXUPDEF_CALL(void, enable_irq, unsigned int) | ||
33 | BTFIXUPDEF_CALL(void, disable_pil_irq, unsigned int) | ||
34 | BTFIXUPDEF_CALL(void, enable_pil_irq, unsigned int) | ||
35 | BTFIXUPDEF_CALL(void, clear_clock_irq, void) | ||
36 | BTFIXUPDEF_CALL(void, clear_profile_irq, int) | ||
37 | BTFIXUPDEF_CALL(void, load_profile_irq, int, unsigned int) | ||
38 | |||
39 | static inline void disable_irq_nosync(unsigned int irq) | ||
40 | { | ||
41 | BTFIXUP_CALL(disable_irq)(irq); | ||
42 | } | ||
43 | |||
44 | static inline void disable_irq(unsigned int irq) | ||
45 | { | ||
46 | BTFIXUP_CALL(disable_irq)(irq); | ||
47 | } | ||
48 | |||
49 | static inline void enable_irq(unsigned int irq) | ||
50 | { | ||
51 | BTFIXUP_CALL(enable_irq)(irq); | ||
52 | } | ||
53 | |||
54 | static inline void disable_pil_irq(unsigned int irq) | ||
55 | { | ||
56 | BTFIXUP_CALL(disable_pil_irq)(irq); | ||
57 | } | ||
58 | |||
59 | static inline void enable_pil_irq(unsigned int irq) | ||
60 | { | ||
61 | BTFIXUP_CALL(enable_pil_irq)(irq); | ||
62 | } | ||
63 | |||
64 | static inline void clear_clock_irq(void) | ||
65 | { | ||
66 | BTFIXUP_CALL(clear_clock_irq)(); | ||
67 | } | ||
68 | |||
69 | static inline void clear_profile_irq(int irq) | ||
70 | { | ||
71 | BTFIXUP_CALL(clear_profile_irq)(irq); | ||
72 | } | ||
73 | |||
74 | static inline void load_profile_irq(int cpu, int limit) | ||
75 | { | ||
76 | BTFIXUP_CALL(load_profile_irq)(cpu, limit); | ||
77 | } | ||
78 | |||
79 | extern void (*sparc_init_timers)(irq_handler_t lvl10_irq); | ||
80 | extern void claim_ticker14(irq_handler_t irq_handler, | ||
81 | int irq, | ||
82 | unsigned int timeout); | ||
83 | |||
84 | #ifdef CONFIG_SMP | ||
85 | BTFIXUPDEF_CALL(void, set_cpu_int, int, int) | ||
86 | BTFIXUPDEF_CALL(void, clear_cpu_int, int, int) | ||
87 | BTFIXUPDEF_CALL(void, set_irq_udt, int) | ||
88 | |||
89 | #define set_cpu_int(cpu,level) BTFIXUP_CALL(set_cpu_int)(cpu,level) | ||
90 | #define clear_cpu_int(cpu,level) BTFIXUP_CALL(clear_cpu_int)(cpu,level) | ||
91 | #define set_irq_udt(cpu) BTFIXUP_CALL(set_irq_udt)(cpu) | ||
92 | #endif | ||
93 | |||
94 | extern int request_fast_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, __const__ char *devname); | ||
95 | |||
96 | /* On the sun4m, just like the timers, we have both per-cpu and master | ||
97 | * interrupt registers. | ||
98 | */ | ||
99 | |||
100 | /* These registers are used for sending/receiving irqs from/to | ||
101 | * different cpu's. | ||
102 | */ | ||
103 | struct sun4m_intreg_percpu { | ||
104 | unsigned int tbt; /* Interrupts still pending for this cpu. */ | ||
105 | |||
106 | /* These next two registers are WRITE-ONLY and are only | ||
107 | * "on bit" sensitive, "off bits" written have NO affect. | ||
108 | */ | ||
109 | unsigned int clear; /* Clear this cpus irqs here. */ | ||
110 | unsigned int set; /* Set this cpus irqs here. */ | ||
111 | unsigned char space[PAGE_SIZE - 12]; | ||
112 | }; | ||
113 | |||
114 | /* | ||
115 | * djhr | ||
116 | * Actually the clear and set fields in this struct are misleading.. | ||
117 | * according to the SLAVIO manual (and the same applies for the SEC) | ||
118 | * the clear field clears bits in the mask which will ENABLE that IRQ | ||
119 | * the set field sets bits in the mask to DISABLE the IRQ. | ||
120 | * | ||
121 | * Also the undirected_xx address in the SLAVIO is defined as | ||
122 | * RESERVED and write only.. | ||
123 | * | ||
124 | * DAVEM_NOTE: The SLAVIO only specifies behavior on uniprocessor | ||
125 | * sun4m machines, for MP the layout makes more sense. | ||
126 | */ | ||
127 | struct sun4m_intregs { | ||
128 | struct sun4m_intreg_percpu cpu_intregs[SUN4M_NCPUS]; | ||
129 | unsigned int tbt; /* IRQ's that are still pending. */ | ||
130 | unsigned int irqs; /* Master IRQ bits. */ | ||
131 | |||
132 | /* Again, like the above, two these registers are WRITE-ONLY. */ | ||
133 | unsigned int clear; /* Clear master IRQ's by setting bits here. */ | ||
134 | unsigned int set; /* Set master IRQ's by setting bits here. */ | ||
135 | |||
136 | /* This register is both READ and WRITE. */ | ||
137 | unsigned int undirected_target; /* Which cpu gets undirected irqs. */ | ||
138 | }; | ||
139 | |||
140 | extern struct sun4m_intregs *sun4m_interrupts; | ||
141 | |||
142 | /* | ||
143 | * Bit field defines for the interrupt registers on various | ||
144 | * Sparc machines. | ||
145 | */ | ||
146 | |||
147 | /* The sun4c interrupt register. */ | ||
148 | #define SUN4C_INT_ENABLE 0x01 /* Allow interrupts. */ | ||
149 | #define SUN4C_INT_E14 0x80 /* Enable level 14 IRQ. */ | ||
150 | #define SUN4C_INT_E10 0x20 /* Enable level 10 IRQ. */ | ||
151 | #define SUN4C_INT_E8 0x10 /* Enable level 8 IRQ. */ | ||
152 | #define SUN4C_INT_E6 0x08 /* Enable level 6 IRQ. */ | ||
153 | #define SUN4C_INT_E4 0x04 /* Enable level 4 IRQ. */ | ||
154 | #define SUN4C_INT_E1 0x02 /* Enable level 1 IRQ. */ | ||
155 | |||
156 | /* Dave Redman (djhr@tadpole.co.uk) | ||
157 | * The sun4m interrupt registers. | ||
158 | */ | ||
159 | #define SUN4M_INT_ENABLE 0x80000000 | ||
160 | #define SUN4M_INT_E14 0x00000080 | ||
161 | #define SUN4M_INT_E10 0x00080000 | ||
162 | |||
163 | #define SUN4M_HARD_INT(x) (0x000000001 << (x)) | ||
164 | #define SUN4M_SOFT_INT(x) (0x000010000 << (x)) | ||
165 | |||
166 | #define SUN4M_INT_MASKALL 0x80000000 /* mask all interrupts */ | ||
167 | #define SUN4M_INT_MODULE_ERR 0x40000000 /* module error */ | ||
168 | #define SUN4M_INT_M2S_WRITE 0x20000000 /* write buffer error */ | ||
169 | #define SUN4M_INT_ECC 0x10000000 /* ecc memory error */ | ||
170 | #define SUN4M_INT_FLOPPY 0x00400000 /* floppy disk */ | ||
171 | #define SUN4M_INT_MODULE 0x00200000 /* module interrupt */ | ||
172 | #define SUN4M_INT_VIDEO 0x00100000 /* onboard video */ | ||
173 | #define SUN4M_INT_REALTIME 0x00080000 /* system timer */ | ||
174 | #define SUN4M_INT_SCSI 0x00040000 /* onboard scsi */ | ||
175 | #define SUN4M_INT_AUDIO 0x00020000 /* audio/isdn */ | ||
176 | #define SUN4M_INT_ETHERNET 0x00010000 /* onboard ethernet */ | ||
177 | #define SUN4M_INT_SERIAL 0x00008000 /* serial ports */ | ||
178 | #define SUN4M_INT_KBDMS 0x00004000 /* keyboard/mouse */ | ||
179 | #define SUN4M_INT_SBUSBITS 0x00003F80 /* sbus int bits */ | ||
180 | |||
181 | #define SUN4M_INT_SBUS(x) (1 << (x+7)) | ||
182 | #define SUN4M_INT_VME(x) (1 << (x)) | ||
183 | |||
184 | #endif | 15 | #endif |
diff --git a/include/asm-sparc/of_device.h b/include/asm-sparc/of_device.h index 7cb00c1b09c6..e5f5aedc2293 100644 --- a/include/asm-sparc/of_device.h +++ b/include/asm-sparc/of_device.h | |||
@@ -3,13 +3,9 @@ | |||
3 | #ifdef __KERNEL__ | 3 | #ifdef __KERNEL__ |
4 | 4 | ||
5 | #include <linux/device.h> | 5 | #include <linux/device.h> |
6 | #include <linux/of.h> | ||
6 | #include <linux/mod_devicetable.h> | 7 | #include <linux/mod_devicetable.h> |
7 | #include <asm/openprom.h> | 8 | #include <asm/openprom.h> |
8 | #include <asm/prom.h> | ||
9 | |||
10 | extern struct bus_type ebus_bus_type; | ||
11 | extern struct bus_type sbus_bus_type; | ||
12 | extern struct bus_type of_bus_type; | ||
13 | 9 | ||
14 | /* | 10 | /* |
15 | * The of_device is a kind of "base class" that is a superset of | 11 | * The of_device is a kind of "base class" that is a superset of |
@@ -30,50 +26,13 @@ struct of_device | |||
30 | int portid; | 26 | int portid; |
31 | int clock_freq; | 27 | int clock_freq; |
32 | }; | 28 | }; |
33 | #define to_of_device(d) container_of(d, struct of_device, dev) | ||
34 | 29 | ||
35 | extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); | 30 | extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); |
36 | extern void of_iounmap(struct resource *res, void __iomem *base, unsigned long size); | 31 | extern void of_iounmap(struct resource *res, void __iomem *base, unsigned long size); |
37 | 32 | ||
38 | extern struct of_device *of_find_device_by_node(struct device_node *); | 33 | /* These are just here during the transition */ |
39 | 34 | #include <linux/of_device.h> | |
40 | extern const struct of_device_id *of_match_device( | 35 | #include <linux/of_platform.h> |
41 | const struct of_device_id *matches, const struct of_device *dev); | ||
42 | |||
43 | extern struct of_device *of_dev_get(struct of_device *dev); | ||
44 | extern void of_dev_put(struct of_device *dev); | ||
45 | |||
46 | /* | ||
47 | * An of_platform_driver driver is attached to a basic of_device on | ||
48 | * the ISA, EBUS, and SBUS busses on sparc64. | ||
49 | */ | ||
50 | struct of_platform_driver | ||
51 | { | ||
52 | char *name; | ||
53 | struct of_device_id *match_table; | ||
54 | struct module *owner; | ||
55 | |||
56 | int (*probe)(struct of_device* dev, const struct of_device_id *match); | ||
57 | int (*remove)(struct of_device* dev); | ||
58 | |||
59 | int (*suspend)(struct of_device* dev, pm_message_t state); | ||
60 | int (*resume)(struct of_device* dev); | ||
61 | int (*shutdown)(struct of_device* dev); | ||
62 | |||
63 | struct device_driver driver; | ||
64 | }; | ||
65 | #define to_of_platform_driver(drv) container_of(drv,struct of_platform_driver, driver) | ||
66 | |||
67 | extern int of_register_driver(struct of_platform_driver *drv, | ||
68 | struct bus_type *bus); | ||
69 | extern void of_unregister_driver(struct of_platform_driver *drv); | ||
70 | extern int of_device_register(struct of_device *ofdev); | ||
71 | extern void of_device_unregister(struct of_device *ofdev); | ||
72 | extern struct of_device *of_platform_device_create(struct device_node *np, | ||
73 | const char *bus_id, | ||
74 | struct device *parent, | ||
75 | struct bus_type *bus); | ||
76 | extern void of_release_dev(struct device *dev); | ||
77 | 36 | ||
78 | #endif /* __KERNEL__ */ | 37 | #endif /* __KERNEL__ */ |
79 | #endif /* _ASM_SPARC_OF_DEVICE_H */ | 38 | #endif /* _ASM_SPARC_OF_DEVICE_H */ |
diff --git a/include/asm-sparc/of_platform.h b/include/asm-sparc/of_platform.h new file mode 100644 index 000000000000..64a230064ef2 --- /dev/null +++ b/include/asm-sparc/of_platform.h | |||
@@ -0,0 +1,32 @@ | |||
1 | #ifndef _ASM_SPARC_OF_PLATFORM_H | ||
2 | #define _ASM_SPARC_OF_PLATFORM_H | ||
3 | /* | ||
4 | * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp. | ||
5 | * <benh@kernel.crashing.org> | ||
6 | * Modified for Sparc by merging parts of asm-sparc/of_device.h | ||
7 | * by Stephen Rothwell | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License | ||
11 | * as published by the Free Software Foundation; either version | ||
12 | * 2 of the License, or (at your option) any later version. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | /* This is just here during the transition */ | ||
17 | #include <linux/of_platform.h> | ||
18 | |||
19 | extern struct bus_type ebus_bus_type; | ||
20 | extern struct bus_type sbus_bus_type; | ||
21 | extern struct bus_type of_platform_bus_type; | ||
22 | #define of_bus_type of_platform_bus_type /* for compatibility */ | ||
23 | |||
24 | extern int of_register_driver(struct of_platform_driver *drv, | ||
25 | struct bus_type *bus); | ||
26 | extern void of_unregister_driver(struct of_platform_driver *drv); | ||
27 | extern struct of_device *of_platform_device_create(struct device_node *np, | ||
28 | const char *bus_id, | ||
29 | struct device *parent, | ||
30 | struct bus_type *bus); | ||
31 | |||
32 | #endif /* _ASM_SPARC_OF_PLATFORM_H */ | ||
diff --git a/include/asm-sparc/oplib.h b/include/asm-sparc/oplib.h index 91691e52c058..17ba82ee220a 100644 --- a/include/asm-sparc/oplib.h +++ b/include/asm-sparc/oplib.h | |||
@@ -158,32 +158,6 @@ extern void prom_putchar(char character); | |||
158 | extern void prom_printf(char *fmt, ...); | 158 | extern void prom_printf(char *fmt, ...); |
159 | extern void prom_write(const char *buf, unsigned int len); | 159 | extern void prom_write(const char *buf, unsigned int len); |
160 | 160 | ||
161 | /* Query for input device type */ | ||
162 | |||
163 | enum prom_input_device { | ||
164 | PROMDEV_IKBD, /* input from keyboard */ | ||
165 | PROMDEV_ITTYA, /* input from ttya */ | ||
166 | PROMDEV_ITTYB, /* input from ttyb */ | ||
167 | PROMDEV_IRSC, /* input from rsc */ | ||
168 | PROMDEV_IVCONS, /* input from virtual-console */ | ||
169 | PROMDEV_I_UNK, | ||
170 | }; | ||
171 | |||
172 | extern enum prom_input_device prom_query_input_device(void); | ||
173 | |||
174 | /* Query for output device type */ | ||
175 | |||
176 | enum prom_output_device { | ||
177 | PROMDEV_OSCREEN, /* to screen */ | ||
178 | PROMDEV_OTTYA, /* to ttya */ | ||
179 | PROMDEV_OTTYB, /* to ttyb */ | ||
180 | PROMDEV_ORSC, /* to rsc */ | ||
181 | PROMDEV_OVCONS, /* to virtual-console */ | ||
182 | PROMDEV_O_UNK, | ||
183 | }; | ||
184 | |||
185 | extern enum prom_output_device prom_query_output_device(void); | ||
186 | |||
187 | /* Multiprocessor operations... */ | 161 | /* Multiprocessor operations... */ |
188 | 162 | ||
189 | /* Start the CPU with the given device tree node, context table, and context | 163 | /* Start the CPU with the given device tree node, context table, and context |
diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h index a55f4c3488b0..2cc235b74d94 100644 --- a/include/asm-sparc/pgtable.h +++ b/include/asm-sparc/pgtable.h | |||
@@ -46,7 +46,6 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd) | |||
46 | #define pgd_ERROR(e) __builtin_trap() | 46 | #define pgd_ERROR(e) __builtin_trap() |
47 | 47 | ||
48 | BTFIXUPDEF_INT(page_none) | 48 | BTFIXUPDEF_INT(page_none) |
49 | BTFIXUPDEF_INT(page_shared) | ||
50 | BTFIXUPDEF_INT(page_copy) | 49 | BTFIXUPDEF_INT(page_copy) |
51 | BTFIXUPDEF_INT(page_readonly) | 50 | BTFIXUPDEF_INT(page_readonly) |
52 | BTFIXUPDEF_INT(page_kernel) | 51 | BTFIXUPDEF_INT(page_kernel) |
@@ -66,7 +65,7 @@ BTFIXUPDEF_INT(page_kernel) | |||
66 | #define PTE_SIZE (PTRS_PER_PTE*4) | 65 | #define PTE_SIZE (PTRS_PER_PTE*4) |
67 | 66 | ||
68 | #define PAGE_NONE __pgprot(BTFIXUP_INT(page_none)) | 67 | #define PAGE_NONE __pgprot(BTFIXUP_INT(page_none)) |
69 | #define PAGE_SHARED __pgprot(BTFIXUP_INT(page_shared)) | 68 | extern pgprot_t PAGE_SHARED; |
70 | #define PAGE_COPY __pgprot(BTFIXUP_INT(page_copy)) | 69 | #define PAGE_COPY __pgprot(BTFIXUP_INT(page_copy)) |
71 | #define PAGE_READONLY __pgprot(BTFIXUP_INT(page_readonly)) | 70 | #define PAGE_READONLY __pgprot(BTFIXUP_INT(page_readonly)) |
72 | 71 | ||
diff --git a/include/asm-sparc/prom.h b/include/asm-sparc/prom.h index 9ea105ebe2ff..71f2a1998324 100644 --- a/include/asm-sparc/prom.h +++ b/include/asm-sparc/prom.h | |||
@@ -2,7 +2,6 @@ | |||
2 | #define _SPARC_PROM_H | 2 | #define _SPARC_PROM_H |
3 | #ifdef __KERNEL__ | 3 | #ifdef __KERNEL__ |
4 | 4 | ||
5 | |||
6 | /* | 5 | /* |
7 | * Definitions for talking to the Open Firmware PROM on | 6 | * Definitions for talking to the Open Firmware PROM on |
8 | * Power Macintosh computers. | 7 | * Power Macintosh computers. |
@@ -17,11 +16,17 @@ | |||
17 | * as published by the Free Software Foundation; either version | 16 | * as published by the Free Software Foundation; either version |
18 | * 2 of the License, or (at your option) any later version. | 17 | * 2 of the License, or (at your option) any later version. |
19 | */ | 18 | */ |
20 | |||
21 | #include <linux/types.h> | 19 | #include <linux/types.h> |
22 | #include <linux/proc_fs.h> | 20 | #include <linux/proc_fs.h> |
23 | #include <asm/atomic.h> | 21 | #include <asm/atomic.h> |
24 | 22 | ||
23 | #define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 2 | ||
24 | #define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1 | ||
25 | |||
26 | #define of_compat_cmp(s1, s2, l) strncmp((s1), (s2), (l)) | ||
27 | #define of_prop_cmp(s1, s2) strcasecmp((s1), (s2)) | ||
28 | #define of_node_cmp(s1, s2) strcmp((s1), (s2)) | ||
29 | |||
25 | typedef u32 phandle; | 30 | typedef u32 phandle; |
26 | typedef u32 ihandle; | 31 | typedef u32 ihandle; |
27 | 32 | ||
@@ -55,53 +60,35 @@ struct device_node { | |||
55 | unsigned int unique_id; | 60 | unsigned int unique_id; |
56 | }; | 61 | }; |
57 | 62 | ||
58 | /* flag descriptions */ | ||
59 | #define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ | ||
60 | |||
61 | #define OF_IS_DYNAMIC(x) test_bit(OF_DYNAMIC, &x->_flags) | 63 | #define OF_IS_DYNAMIC(x) test_bit(OF_DYNAMIC, &x->_flags) |
62 | #define OF_MARK_DYNAMIC(x) set_bit(OF_DYNAMIC, &x->_flags) | 64 | #define OF_MARK_DYNAMIC(x) set_bit(OF_DYNAMIC, &x->_flags) |
63 | 65 | ||
64 | #define OF_BAD_ADDR ((u64)-1) | ||
65 | |||
66 | static inline void set_node_proc_entry(struct device_node *dn, struct proc_dir_entry *de) | ||
67 | { | ||
68 | dn->pde = de; | ||
69 | } | ||
70 | |||
71 | extern struct device_node *of_find_node_by_name(struct device_node *from, | ||
72 | const char *name); | ||
73 | #define for_each_node_by_name(dn, name) \ | ||
74 | for (dn = of_find_node_by_name(NULL, name); dn; \ | ||
75 | dn = of_find_node_by_name(dn, name)) | ||
76 | extern struct device_node *of_find_node_by_type(struct device_node *from, | ||
77 | const char *type); | ||
78 | #define for_each_node_by_type(dn, type) \ | ||
79 | for (dn = of_find_node_by_type(NULL, type); dn; \ | ||
80 | dn = of_find_node_by_type(dn, type)) | ||
81 | extern struct device_node *of_find_compatible_node(struct device_node *from, | ||
82 | const char *type, const char *compat); | ||
83 | extern struct device_node *of_find_node_by_path(const char *path); | ||
84 | extern struct device_node *of_find_node_by_phandle(phandle handle); | ||
85 | extern struct device_node *of_get_parent(const struct device_node *node); | ||
86 | extern struct device_node *of_get_next_child(const struct device_node *node, | ||
87 | struct device_node *prev); | ||
88 | extern struct property *of_find_property(const struct device_node *np, | ||
89 | const char *name, | ||
90 | int *lenp); | ||
91 | extern int of_device_is_compatible(const struct device_node *device, | ||
92 | const char *); | ||
93 | extern const void *of_get_property(const struct device_node *node, | ||
94 | const char *name, | ||
95 | int *lenp); | ||
96 | #define get_property(node,name,lenp) of_get_property(node,name,lenp) | ||
97 | extern int of_set_property(struct device_node *node, const char *name, void *val, int len); | 66 | extern int of_set_property(struct device_node *node, const char *name, void *val, int len); |
98 | extern int of_getintprop_default(struct device_node *np, | 67 | extern int of_getintprop_default(struct device_node *np, |
99 | const char *name, | 68 | const char *name, |
100 | int def); | 69 | int def); |
101 | extern int of_n_addr_cells(struct device_node *np); | 70 | extern int of_find_in_proplist(const char *list, const char *match, int len); |
102 | extern int of_n_size_cells(struct device_node *np); | ||
103 | 71 | ||
104 | extern void prom_build_devicetree(void); | 72 | extern void prom_build_devicetree(void); |
105 | 73 | ||
74 | /* Dummy ref counting routines - to be implemented later */ | ||
75 | static inline struct device_node *of_node_get(struct device_node *node) | ||
76 | { | ||
77 | return node; | ||
78 | } | ||
79 | static inline void of_node_put(struct device_node *node) | ||
80 | { | ||
81 | } | ||
82 | |||
83 | /* | ||
84 | * NB: This is here while we transition from using asm/prom.h | ||
85 | * to linux/of.h | ||
86 | */ | ||
87 | #include <linux/of.h> | ||
88 | |||
89 | extern struct device_node *of_console_device; | ||
90 | extern char *of_console_path; | ||
91 | extern char *of_console_options; | ||
92 | |||
106 | #endif /* __KERNEL__ */ | 93 | #endif /* __KERNEL__ */ |
107 | #endif /* _SPARC_PROM_H */ | 94 | #endif /* _SPARC_PROM_H */ |
diff --git a/include/asm-sparc/sbus.h b/include/asm-sparc/sbus.h index d036e4419d79..27d076c46964 100644 --- a/include/asm-sparc/sbus.h +++ b/include/asm-sparc/sbus.h | |||
@@ -68,7 +68,6 @@ struct sbus_dev { | |||
68 | /* This struct describes the SBus(s) found on this machine. */ | 68 | /* This struct describes the SBus(s) found on this machine. */ |
69 | struct sbus_bus { | 69 | struct sbus_bus { |
70 | struct of_device ofdev; | 70 | struct of_device ofdev; |
71 | void *iommu; /* Opaque IOMMU cookie */ | ||
72 | struct sbus_dev *devices; /* Link to devices on this SBus */ | 71 | struct sbus_dev *devices; /* Link to devices on this SBus */ |
73 | struct sbus_bus *next; /* next SBus, if more than one SBus */ | 72 | struct sbus_bus *next; /* next SBus, if more than one SBus */ |
74 | int prom_node; /* PROM device tree node for this SBus */ | 73 | int prom_node; /* PROM device tree node for this SBus */ |
diff --git a/include/asm-sparc/sfp-machine.h b/include/asm-sparc/sfp-machine.h index ecfc86a4a725..266a42b8f99f 100644 --- a/include/asm-sparc/sfp-machine.h +++ b/include/asm-sparc/sfp-machine.h | |||
@@ -203,4 +203,10 @@ extern struct task_struct *last_task_used_math; | |||
203 | #define FP_INHIBIT_RESULTS ((last_task_used_math->thread.fsr >> 23) & _fex) | 203 | #define FP_INHIBIT_RESULTS ((last_task_used_math->thread.fsr >> 23) & _fex) |
204 | #endif | 204 | #endif |
205 | 205 | ||
206 | #ifdef CONFIG_SMP | ||
207 | #define FP_TRAPPING_EXCEPTIONS ((current->thread.fsr >> 23) & 0x1f) | ||
208 | #else | ||
209 | #define FP_TRAPPING_EXCEPTIONS ((last_task_used_math->thread.fsr >> 23) & 0x1f) | ||
210 | #endif | ||
211 | |||
206 | #endif | 212 | #endif |
diff --git a/include/asm-sparc/system.h b/include/asm-sparc/system.h index 8b4e23b3bb38..d1a2572e3f55 100644 --- a/include/asm-sparc/system.h +++ b/include/asm-sparc/system.h | |||
@@ -165,16 +165,6 @@ extern void fpsave(unsigned long *fpregs, unsigned long *fsr, | |||
165 | } while(0) | 165 | } while(0) |
166 | 166 | ||
167 | /* | 167 | /* |
168 | * On SMP systems, when the scheduler does migration-cost autodetection, | ||
169 | * it needs a way to flush as much of the CPU's caches as possible. | ||
170 | * | ||
171 | * TODO: fill this in! | ||
172 | */ | ||
173 | static inline void sched_cacheflush(void) | ||
174 | { | ||
175 | } | ||
176 | |||
177 | /* | ||
178 | * Changing the IRQ level on the Sparc. | 168 | * Changing the IRQ level on the Sparc. |
179 | */ | 169 | */ |
180 | extern void local_irq_restore(unsigned long); | 170 | extern void local_irq_restore(unsigned long); |
diff --git a/include/asm-sparc/tlbflush.h b/include/asm-sparc/tlbflush.h index 4a3b66618e75..a619da5cfaa9 100644 --- a/include/asm-sparc/tlbflush.h +++ b/include/asm-sparc/tlbflush.h | |||
@@ -57,6 +57,10 @@ BTFIXUPDEF_CALL(void, flush_tlb_page, struct vm_area_struct *, unsigned long) | |||
57 | /* | 57 | /* |
58 | * This is a kludge, until I know better. --zaitcev XXX | 58 | * This is a kludge, until I know better. --zaitcev XXX |
59 | */ | 59 | */ |
60 | #define flush_tlb_kernel_range(start, end) flush_tlb_all() | 60 | static inline void flush_tlb_kernel_range(unsigned long start, |
61 | unsigned long end) | ||
62 | { | ||
63 | flush_tlb_all(); | ||
64 | } | ||
61 | 65 | ||
62 | #endif /* _SPARC_TLBFLUSH_H */ | 66 | #endif /* _SPARC_TLBFLUSH_H */ |
diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h index 64471bcd96f9..029b3e0d5e4c 100644 --- a/include/asm-sparc/unistd.h +++ b/include/asm-sparc/unistd.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: unistd.h,v 1.74 2002/02/08 03:57:18 davem Exp $ */ | ||
2 | #ifndef _SPARC_UNISTD_H | 1 | #ifndef _SPARC_UNISTD_H |
3 | #define _SPARC_UNISTD_H | 2 | #define _SPARC_UNISTD_H |
4 | 3 | ||
@@ -9,7 +8,7 @@ | |||
9 | * think of right now to force the arguments into fixed registers | 8 | * think of right now to force the arguments into fixed registers |
10 | * before the trap into the system call with gcc 'asm' statements. | 9 | * before the trap into the system call with gcc 'asm' statements. |
11 | * | 10 | * |
12 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 11 | * Copyright (C) 1995, 2007 David S. Miller (davem@davemloft.net) |
13 | * | 12 | * |
14 | * SunOS compatibility based upon preliminary work which is: | 13 | * SunOS compatibility based upon preliminary work which is: |
15 | * | 14 | * |
@@ -330,8 +329,9 @@ | |||
330 | #define __NR_signalfd 311 | 329 | #define __NR_signalfd 311 |
331 | #define __NR_timerfd 312 | 330 | #define __NR_timerfd 312 |
332 | #define __NR_eventfd 313 | 331 | #define __NR_eventfd 313 |
332 | #define __NR_fallocate 314 | ||
333 | 333 | ||
334 | #define NR_SYSCALLS 314 | 334 | #define NR_SYSCALLS 315 |
335 | 335 | ||
336 | #ifdef __KERNEL__ | 336 | #ifdef __KERNEL__ |
337 | #define __ARCH_WANT_IPC_PARSE_VERSION | 337 | #define __ARCH_WANT_IPC_PARSE_VERSION |