diff options
-rw-r--r-- | arch/sh/drivers/pci/pci-auto.c | 6 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/init.c | 20 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh2/entry.S | 1 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh3/entry.S | 5 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4/probe.c | 13 | ||||
-rw-r--r-- | arch/sh/kernel/irq.c | 15 | ||||
-rw-r--r-- | drivers/serial/sh-sci.c | 11 | ||||
-rw-r--r-- | include/asm-sh/ioctls.h | 22 | ||||
-rw-r--r-- | include/asm-sh/irq.h | 5 | ||||
-rw-r--r-- | include/asm-sh/unistd.h | 1 |
10 files changed, 53 insertions, 46 deletions
diff --git a/arch/sh/drivers/pci/pci-auto.c b/arch/sh/drivers/pci/pci-auto.c index ecf16344f94a..224e007736fb 100644 --- a/arch/sh/drivers/pci/pci-auto.c +++ b/arch/sh/drivers/pci/pci-auto.c | |||
@@ -214,6 +214,12 @@ retry: | |||
214 | continue; | 214 | continue; |
215 | } | 215 | } |
216 | 216 | ||
217 | if (bar_value < *lower_limit || (bar_value + bar_size) >= *upper_limit) { | ||
218 | DBG(" unavailable -- skipping, value %x size %x\n", | ||
219 | bar_value, bar_size); | ||
220 | continue; | ||
221 | } | ||
222 | |||
217 | #ifdef CONFIG_PCI_AUTO_UPDATE_RESOURCES | 223 | #ifdef CONFIG_PCI_AUTO_UPDATE_RESOURCES |
218 | /* Write it out and update our limit */ | 224 | /* Write it out and update our limit */ |
219 | early_write_config_dword(hose, top_bus, current_bus, pci_devfn, | 225 | early_write_config_dword(hose, top_bus, current_bus, pci_devfn, |
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index 4b339a640b13..726acfcb9b77 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * CPU init code | 4 | * CPU init code |
5 | * | 5 | * |
6 | * Copyright (C) 2002 - 2006 Paul Mundt | 6 | * Copyright (C) 2002 - 2007 Paul Mundt |
7 | * Copyright (C) 2003 Richard Curnow | 7 | * Copyright (C) 2003 Richard Curnow |
8 | * | 8 | * |
9 | * This file is subject to the terms and conditions of the GNU General Public | 9 | * This file is subject to the terms and conditions of the GNU General Public |
@@ -48,8 +48,19 @@ static void __init cache_init(void) | |||
48 | { | 48 | { |
49 | unsigned long ccr, flags; | 49 | unsigned long ccr, flags; |
50 | 50 | ||
51 | if (current_cpu_data.type == CPU_SH_NONE) | 51 | /* First setup the rest of the I-cache info */ |
52 | panic("Unknown CPU"); | 52 | current_cpu_data.icache.entry_mask = current_cpu_data.icache.way_incr - |
53 | current_cpu_data.icache.linesz; | ||
54 | |||
55 | current_cpu_data.icache.way_size = current_cpu_data.icache.sets * | ||
56 | current_cpu_data.icache.linesz; | ||
57 | |||
58 | /* And the D-cache too */ | ||
59 | current_cpu_data.dcache.entry_mask = current_cpu_data.dcache.way_incr - | ||
60 | current_cpu_data.dcache.linesz; | ||
61 | |||
62 | current_cpu_data.dcache.way_size = current_cpu_data.dcache.sets * | ||
63 | current_cpu_data.dcache.linesz; | ||
53 | 64 | ||
54 | jump_to_P2(); | 65 | jump_to_P2(); |
55 | ccr = ctrl_inl(CCR); | 66 | ccr = ctrl_inl(CCR); |
@@ -200,6 +211,9 @@ asmlinkage void __init sh_cpu_init(void) | |||
200 | /* First, probe the CPU */ | 211 | /* First, probe the CPU */ |
201 | detect_cpu_and_cache_system(); | 212 | detect_cpu_and_cache_system(); |
202 | 213 | ||
214 | if (current_cpu_data.type == CPU_SH_NONE) | ||
215 | panic("Unknown CPU"); | ||
216 | |||
203 | /* Init the cache */ | 217 | /* Init the cache */ |
204 | cache_init(); | 218 | cache_init(); |
205 | 219 | ||
diff --git a/arch/sh/kernel/cpu/sh2/entry.S b/arch/sh/kernel/cpu/sh2/entry.S index 7f7d292f36ec..c16dc8fec489 100644 --- a/arch/sh/kernel/cpu/sh2/entry.S +++ b/arch/sh/kernel/cpu/sh2/entry.S | |||
@@ -165,6 +165,7 @@ ENTRY(exception_handler) | |||
165 | 165 | ||
166 | interrupt_entry: | 166 | interrupt_entry: |
167 | mov r9,r4 | 167 | mov r9,r4 |
168 | mov r15,r5 | ||
168 | mov.l 6f,r9 | 169 | mov.l 6f,r9 |
169 | mov.l 7f,r8 | 170 | mov.l 7f,r8 |
170 | jmp @r8 | 171 | jmp @r8 |
diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S index c19205b0f2c0..f3e827f29a46 100644 --- a/arch/sh/kernel/cpu/sh3/entry.S +++ b/arch/sh/kernel/cpu/sh3/entry.S | |||
@@ -514,13 +514,16 @@ skip_save: | |||
514 | 514 | ||
515 | interrupt_exception: | 515 | interrupt_exception: |
516 | mov.l 1f, r9 | 516 | mov.l 1f, r9 |
517 | mov.l 2f, r4 | ||
518 | mov.l @r4, r4 | ||
517 | jmp @r9 | 519 | jmp @r9 |
518 | nop | 520 | mov r15, r5 |
519 | rts | 521 | rts |
520 | nop | 522 | nop |
521 | 523 | ||
522 | .align 2 | 524 | .align 2 |
523 | 1: .long do_IRQ | 525 | 1: .long do_IRQ |
526 | 2: .long INTEVT | ||
524 | 527 | ||
525 | .align 2 | 528 | .align 2 |
526 | ENTRY(exception_none) | 529 | ENTRY(exception_none) |
diff --git a/arch/sh/kernel/cpu/sh4/probe.c b/arch/sh/kernel/cpu/sh4/probe.c index 9d28c88d2f9d..58950de2696d 100644 --- a/arch/sh/kernel/cpu/sh4/probe.c +++ b/arch/sh/kernel/cpu/sh4/probe.c | |||
@@ -195,13 +195,6 @@ int __init detect_cpu_and_cache_system(void) | |||
195 | 195 | ||
196 | } | 196 | } |
197 | 197 | ||
198 | /* Setup the rest of the I-cache info */ | ||
199 | current_cpu_data.icache.entry_mask = current_cpu_data.icache.way_incr - | ||
200 | current_cpu_data.icache.linesz; | ||
201 | |||
202 | current_cpu_data.icache.way_size = current_cpu_data.icache.sets * | ||
203 | current_cpu_data.icache.linesz; | ||
204 | |||
205 | /* And the rest of the D-cache */ | 198 | /* And the rest of the D-cache */ |
206 | if (current_cpu_data.dcache.ways > 1) { | 199 | if (current_cpu_data.dcache.ways > 1) { |
207 | size = sizes[(cvr >> 16) & 0xf]; | 200 | size = sizes[(cvr >> 16) & 0xf]; |
@@ -209,12 +202,6 @@ int __init detect_cpu_and_cache_system(void) | |||
209 | current_cpu_data.dcache.sets = (size >> 6); | 202 | current_cpu_data.dcache.sets = (size >> 6); |
210 | } | 203 | } |
211 | 204 | ||
212 | current_cpu_data.dcache.entry_mask = current_cpu_data.dcache.way_incr - | ||
213 | current_cpu_data.dcache.linesz; | ||
214 | |||
215 | current_cpu_data.dcache.way_size = current_cpu_data.dcache.sets * | ||
216 | current_cpu_data.dcache.linesz; | ||
217 | |||
218 | /* | 205 | /* |
219 | * Setup the L2 cache desc | 206 | * Setup the L2 cache desc |
220 | * | 207 | * |
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c index 67be2b6e8cd1..9bdd8a00cd4a 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/kernel_stat.h> | 12 | #include <linux/kernel_stat.h> |
13 | #include <linux/seq_file.h> | 13 | #include <linux/seq_file.h> |
14 | #include <linux/io.h> | ||
15 | #include <linux/irq.h> | 14 | #include <linux/irq.h> |
16 | #include <asm/processor.h> | 15 | #include <asm/processor.h> |
17 | #include <asm/uaccess.h> | 16 | #include <asm/uaccess.h> |
@@ -82,13 +81,9 @@ static union irq_ctx *hardirq_ctx[NR_CPUS] __read_mostly; | |||
82 | static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly; | 81 | static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly; |
83 | #endif | 82 | #endif |
84 | 83 | ||
85 | asmlinkage int do_IRQ(unsigned long r4, unsigned long r5, | 84 | asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs) |
86 | unsigned long r6, unsigned long r7, | ||
87 | struct pt_regs __regs) | ||
88 | { | 85 | { |
89 | struct pt_regs *regs = RELOC_HIDE(&__regs, 0); | ||
90 | struct pt_regs *old_regs = set_irq_regs(regs); | 86 | struct pt_regs *old_regs = set_irq_regs(regs); |
91 | int irq; | ||
92 | #ifdef CONFIG_4KSTACKS | 87 | #ifdef CONFIG_4KSTACKS |
93 | union irq_ctx *curctx, *irqctx; | 88 | union irq_ctx *curctx, *irqctx; |
94 | #endif | 89 | #endif |
@@ -111,13 +106,7 @@ asmlinkage int do_IRQ(unsigned long r4, unsigned long r5, | |||
111 | } | 106 | } |
112 | #endif | 107 | #endif |
113 | 108 | ||
114 | #ifdef CONFIG_CPU_HAS_INTEVT | 109 | irq = irq_demux(evt2irq(irq)); |
115 | irq = evt2irq(ctrl_inl(INTEVT)); | ||
116 | #else | ||
117 | irq = r4; | ||
118 | #endif | ||
119 | |||
120 | irq = irq_demux(irq); | ||
121 | 110 | ||
122 | #ifdef CONFIG_4KSTACKS | 111 | #ifdef CONFIG_4KSTACKS |
123 | curctx = (union irq_ctx *)current_thread_info(); | 112 | curctx = (union irq_ctx *)current_thread_info(); |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index c53b69610a51..46c40bbc4bc6 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -17,6 +17,9 @@ | |||
17 | * License. See the file "COPYING" in the main directory of this archive | 17 | * License. See the file "COPYING" in the main directory of this archive |
18 | * for more details. | 18 | * for more details. |
19 | */ | 19 | */ |
20 | #if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) | ||
21 | #define SUPPORT_SYSRQ | ||
22 | #endif | ||
20 | 23 | ||
21 | #undef DEBUG | 24 | #undef DEBUG |
22 | 25 | ||
@@ -49,11 +52,6 @@ | |||
49 | #endif | 52 | #endif |
50 | 53 | ||
51 | #include <asm/sci.h> | 54 | #include <asm/sci.h> |
52 | |||
53 | #if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) | ||
54 | #define SUPPORT_SYSRQ | ||
55 | #endif | ||
56 | |||
57 | #include "sh-sci.h" | 55 | #include "sh-sci.h" |
58 | 56 | ||
59 | struct sci_port { | 57 | struct sci_port { |
@@ -645,6 +643,9 @@ static inline int sci_handle_breaks(struct uart_port *port) | |||
645 | struct tty_struct *tty = port->info->tty; | 643 | struct tty_struct *tty = port->info->tty; |
646 | struct sci_port *s = &sci_ports[port->line]; | 644 | struct sci_port *s = &sci_ports[port->line]; |
647 | 645 | ||
646 | if (uart_handle_break(port)) | ||
647 | return 0; | ||
648 | |||
648 | if (!s->break_flag && status & SCxSR_BRK(port)) { | 649 | if (!s->break_flag && status & SCxSR_BRK(port)) { |
649 | #if defined(CONFIG_CPU_SH3) | 650 | #if defined(CONFIG_CPU_SH3) |
650 | /* Debounce break */ | 651 | /* Debounce break */ |
diff --git a/include/asm-sh/ioctls.h b/include/asm-sh/ioctls.h index 9d84a2d445a2..35805df010a0 100644 --- a/include/asm-sh/ioctls.h +++ b/include/asm-sh/ioctls.h | |||
@@ -16,17 +16,17 @@ | |||
16 | #define TCSETSW 0x5403 | 16 | #define TCSETSW 0x5403 |
17 | #define TCSETSF 0x5404 | 17 | #define TCSETSF 0x5404 |
18 | 18 | ||
19 | #define TCGETA _IOR('t', 23, struct termio) | 19 | #define TCGETA 0x80127417 /* _IOR('t', 23, struct termio) */ |
20 | #define TCSETA _IOW('t', 24, struct termio) | 20 | #define TCSETA 0x40127418 /* _IOW('t', 24, struct termio) */ |
21 | #define TCSETAW _IOW('t', 25, struct termio) | 21 | #define TCSETAW 0x40127419 /* _IOW('t', 25, struct termio) */ |
22 | #define TCSETAF _IOW('t', 28, struct termio) | 22 | #define TCSETAF 0x4012741C /* _IOW('t', 28, struct termio) */ |
23 | 23 | ||
24 | #define TCSBRK _IO('t', 29) | 24 | #define TCSBRK _IO('t', 29) |
25 | #define TCXONC _IO('t', 30) | 25 | #define TCXONC _IO('t', 30) |
26 | #define TCFLSH _IO('t', 31) | 26 | #define TCFLSH _IO('t', 31) |
27 | 27 | ||
28 | #define TIOCSWINSZ _IOW('t', 103, struct winsize) | 28 | #define TIOCSWINSZ 0x40087467 /* _IOW('t', 103, struct winsize) */ |
29 | #define TIOCGWINSZ _IOR('t', 104, struct winsize) | 29 | #define TIOCGWINSZ 0x80087468 /* _IOR('t', 104, struct winsize) */ |
30 | #define TIOCSTART _IO('t', 110) /* start output, like ^Q */ | 30 | #define TIOCSTART _IO('t', 110) /* start output, like ^Q */ |
31 | #define TIOCSTOP _IO('t', 111) /* stop output, like ^S */ | 31 | #define TIOCSTOP _IO('t', 111) /* stop output, like ^S */ |
32 | #define TIOCOUTQ _IOR('t', 115, int) /* output queue size */ | 32 | #define TIOCOUTQ _IOR('t', 115, int) /* output queue size */ |
@@ -59,8 +59,8 @@ | |||
59 | #define TIOCSSOFTCAR _IOW('T', 26, unsigned int) /* 0x541A */ | 59 | #define TIOCSSOFTCAR _IOW('T', 26, unsigned int) /* 0x541A */ |
60 | #define TIOCLINUX _IOW('T', 28, char) /* 0x541C */ | 60 | #define TIOCLINUX _IOW('T', 28, char) /* 0x541C */ |
61 | #define TIOCCONS _IO('T', 29) /* 0x541D */ | 61 | #define TIOCCONS _IO('T', 29) /* 0x541D */ |
62 | #define TIOCGSERIAL _IOR('T', 30, struct serial_struct) /* 0x541E */ | 62 | #define TIOCGSERIAL 0x803C541E /* _IOR('T', 30, struct serial_struct) 0x541E */ |
63 | #define TIOCSSERIAL _IOW('T', 31, struct serial_struct) /* 0x541F */ | 63 | #define TIOCSSERIAL 0x403C541F /* _IOW('T', 31, struct serial_struct) 0x541F */ |
64 | #define TIOCPKT _IOW('T', 32, int) /* 0x5420 */ | 64 | #define TIOCPKT _IOW('T', 32, int) /* 0x5420 */ |
65 | # define TIOCPKT_DATA 0 | 65 | # define TIOCPKT_DATA 0 |
66 | # define TIOCPKT_FLUSHREAD 1 | 66 | # define TIOCPKT_FLUSHREAD 1 |
@@ -86,12 +86,12 @@ | |||
86 | #define TIOCSERSWILD _IOW('T', 85, int) /* 0x5455 */ | 86 | #define TIOCSERSWILD _IOW('T', 85, int) /* 0x5455 */ |
87 | #define TIOCGLCKTRMIOS 0x5456 | 87 | #define TIOCGLCKTRMIOS 0x5456 |
88 | #define TIOCSLCKTRMIOS 0x5457 | 88 | #define TIOCSLCKTRMIOS 0x5457 |
89 | #define TIOCSERGSTRUCT _IOR('T', 88, struct async_struct) /* 0x5458 */ /* For debugging only */ | 89 | #define TIOCSERGSTRUCT 0x80d85458 /* _IOR('T', 88, struct async_struct) 0x5458 */ /* For debugging only */ |
90 | #define TIOCSERGETLSR _IOR('T', 89, unsigned int) /* 0x5459 */ /* Get line status register */ | 90 | #define TIOCSERGETLSR _IOR('T', 89, unsigned int) /* 0x5459 */ /* Get line status register */ |
91 | /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ | 91 | /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ |
92 | # define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 92 | # define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
93 | #define TIOCSERGETMULTI _IOR('T', 90, struct serial_multiport_struct) /* 0x545A */ /* Get multiport config */ | 93 | #define TIOCSERGETMULTI 0x80A8545A /* _IOR('T', 90, struct serial_multiport_struct) 0x545A */ /* Get multiport config */ |
94 | #define TIOCSERSETMULTI _IOW('T', 91, struct serial_multiport_struct) /* 0x545B */ /* Set multiport config */ | 94 | #define TIOCSERSETMULTI 0x40A8545B /* _IOW('T', 91, struct serial_multiport_struct) 0x545B */ /* Set multiport config */ |
95 | 95 | ||
96 | #define TIOCMIWAIT _IO('T', 92) /* 0x545C */ /* wait for a change on serial input line(s) */ | 96 | #define TIOCMIWAIT _IO('T', 92) /* 0x545C */ /* wait for a change on serial input line(s) */ |
97 | #define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ | 97 | #define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ |
diff --git a/include/asm-sh/irq.h b/include/asm-sh/irq.h index 8ccf7ae593ef..afe188f0ad5f 100644 --- a/include/asm-sh/irq.h +++ b/include/asm-sh/irq.h | |||
@@ -94,8 +94,13 @@ | |||
94 | /* | 94 | /* |
95 | * Convert back and forth between INTEVT and IRQ values. | 95 | * Convert back and forth between INTEVT and IRQ values. |
96 | */ | 96 | */ |
97 | #ifdef CONFIG_CPU_HAS_INTEVT | ||
97 | #define evt2irq(evt) (((evt) >> 5) - 16) | 98 | #define evt2irq(evt) (((evt) >> 5) - 16) |
98 | #define irq2evt(irq) (((irq) + 16) << 5) | 99 | #define irq2evt(irq) (((irq) + 16) << 5) |
100 | #else | ||
101 | #define evt2irq(evt) (evt) | ||
102 | #define irq2evt(irq) (irq) | ||
103 | #endif | ||
99 | 104 | ||
100 | /* | 105 | /* |
101 | * Simple Mask Register Support | 106 | * Simple Mask Register Support |
diff --git a/include/asm-sh/unistd.h b/include/asm-sh/unistd.h index 17f527bfd455..49be50a36b77 100644 --- a/include/asm-sh/unistd.h +++ b/include/asm-sh/unistd.h | |||
@@ -233,6 +233,7 @@ | |||
233 | #define __NR_fcntl64 221 | 233 | #define __NR_fcntl64 221 |
234 | /* 223 is unused */ | 234 | /* 223 is unused */ |
235 | #define __NR_gettid 224 | 235 | #define __NR_gettid 224 |
236 | #define __NR_readahead 225 | ||
236 | #define __NR_setxattr 226 | 237 | #define __NR_setxattr 226 |
237 | #define __NR_lsetxattr 227 | 238 | #define __NR_lsetxattr 227 |
238 | #define __NR_fsetxattr 228 | 239 | #define __NR_fsetxattr 228 |