diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-13 13:44:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-13 13:44:45 -0400 |
commit | 31c4ab430a448cfb13fc88779d8a870c7af9f72b (patch) | |
tree | aec64a8204ea8f89e9743cb16253de9deea4200d /arch | |
parent | 8b69ad0e690eb5f38c23087247a12e5fde1baeff (diff) | |
parent | f24ae12b3eeb1b956b752d4d5907e311cfa95a1a (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:
[MIPS] Workaround for a sparse warning in include/asm-mips/mach-tx4927/ioremap.h
[MIPS] Make show_code static and add __user tag
[MIPS] Workaround for a sparse warning in include/asm-mips/compat.h
[MIPS] Add some __user tags
[MIPS] math-emu minor cleanup
[MIPS] Kill CONFIG_TX4927BUG_WORKAROUND
[MIPS] Alchemy: Remove code wrapped by dead symbol CONFIG_FB_XPERT98
[MIPS] Alchemy: Remove code wrapped by dead symbol CONFIG_AU1000_SRC_CLK
[MIPS] Alchemy: Remove code wrapped by dead symbol CONFIG_AU1000_USE32K
[MIPS] Alchemy: Remove code wrapped by dead symbol CONFIG_AU1XXX_PSC_SPI
[CHAR] Delete leftovers of old Alchemy UART driver
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/au1000/common/setup.c | 6 | ||||
-rw-r--r-- | arch/mips/au1000/common/time.c | 29 | ||||
-rw-r--r-- | arch/mips/au1000/pb1200/board_setup.c | 9 | ||||
-rw-r--r-- | arch/mips/kernel/branch.c | 5 | ||||
-rw-r--r-- | arch/mips/kernel/traps.c | 8 | ||||
-rw-r--r-- | arch/mips/math-emu/cp1emu.c | 19 | ||||
-rw-r--r-- | arch/mips/math-emu/dsemul.c | 12 | ||||
-rw-r--r-- | arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c | 19 |
8 files changed, 23 insertions, 84 deletions
diff --git a/arch/mips/au1000/common/setup.c b/arch/mips/au1000/common/setup.c index fdf2b85a69c8..a95b37773196 100644 --- a/arch/mips/au1000/common/setup.c +++ b/arch/mips/au1000/common/setup.c | |||
@@ -103,12 +103,6 @@ void __init plat_mem_setup(void) | |||
103 | } | 103 | } |
104 | #endif | 104 | #endif |
105 | 105 | ||
106 | #ifdef CONFIG_FB_XPERT98 | ||
107 | if ((argptr = strstr(argptr, "video=")) == NULL) { | ||
108 | argptr = prom_getcmdline(); | ||
109 | strcat(argptr, " video=atyfb:1024x768-8@70"); | ||
110 | } | ||
111 | #endif | ||
112 | 106 | ||
113 | #if defined(CONFIG_SOUND_AU1X00) && !defined(CONFIG_SOC_AU1000) | 107 | #if defined(CONFIG_SOUND_AU1X00) && !defined(CONFIG_SOC_AU1000) |
114 | /* au1000 does not support vra, au1500 and au1100 do */ | 108 | /* au1000 does not support vra, au1500 and au1100 do */ |
diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c index fa1c62f05515..8fc29982d700 100644 --- a/arch/mips/au1000/common/time.c +++ b/arch/mips/au1000/common/time.c | |||
@@ -203,11 +203,7 @@ wakeup_counter0_set(int ticks) | |||
203 | /* I haven't found anyone that doesn't use a 12 MHz source clock, | 203 | /* I haven't found anyone that doesn't use a 12 MHz source clock, |
204 | * but just in case..... | 204 | * but just in case..... |
205 | */ | 205 | */ |
206 | #ifdef CONFIG_AU1000_SRC_CLK | ||
207 | #define AU1000_SRC_CLK CONFIG_AU1000_SRC_CLK | ||
208 | #else | ||
209 | #define AU1000_SRC_CLK 12000000 | 206 | #define AU1000_SRC_CLK 12000000 |
210 | #endif | ||
211 | 207 | ||
212 | /* | 208 | /* |
213 | * We read the real processor speed from the PLL. This is important | 209 | * We read the real processor speed from the PLL. This is important |
@@ -247,33 +243,8 @@ unsigned long cal_r4koff(void) | |||
247 | au_writel (0, SYS_TOYWRITE); | 243 | au_writel (0, SYS_TOYWRITE); |
248 | while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); | 244 | while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); |
249 | 245 | ||
250 | #if defined(CONFIG_AU1000_USE32K) | ||
251 | { | ||
252 | unsigned long start, end, count; | ||
253 | |||
254 | start = au_readl(SYS_RTCREAD); | ||
255 | start += 2; | ||
256 | /* wait for the beginning of a new tick | ||
257 | */ | ||
258 | while (au_readl(SYS_RTCREAD) < start); | ||
259 | |||
260 | /* Start r4k counter. | ||
261 | */ | ||
262 | write_c0_count(0); | ||
263 | |||
264 | /* Wait 0.5 seconds. | ||
265 | */ | ||
266 | end = start + (32768 / trim_divide)/2; | ||
267 | |||
268 | while (end > au_readl(SYS_RTCREAD)); | ||
269 | |||
270 | count = read_c0_count(); | ||
271 | cpu_speed = count * 2; | ||
272 | } | ||
273 | #else | ||
274 | cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * | 246 | cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * |
275 | AU1000_SRC_CLK; | 247 | AU1000_SRC_CLK; |
276 | #endif | ||
277 | } | 248 | } |
278 | else { | 249 | else { |
279 | /* The 32KHz oscillator isn't running, so assume there | 250 | /* The 32KHz oscillator isn't running, so assume there |
diff --git a/arch/mips/au1000/pb1200/board_setup.c b/arch/mips/au1000/pb1200/board_setup.c index 043302b7fe58..eea2092bde8d 100644 --- a/arch/mips/au1000/pb1200/board_setup.c +++ b/arch/mips/au1000/pb1200/board_setup.c | |||
@@ -131,14 +131,7 @@ void __init board_setup(void) | |||
131 | /* The Pb1200 development board uses external MUX for PSC0 to | 131 | /* The Pb1200 development board uses external MUX for PSC0 to |
132 | support SMB/SPI. bcsr->resets bit 12: 0=SMB 1=SPI | 132 | support SMB/SPI. bcsr->resets bit 12: 0=SMB 1=SPI |
133 | */ | 133 | */ |
134 | #if defined(CONFIG_AU1XXX_PSC_SPI) && defined(CONFIG_I2C_AU1550) | 134 | #ifdef CONFIG_I2C_AU1550 |
135 | #error I2C and SPI are mutually exclusive. Both are physically connected to PSC0.\ | ||
136 | Refer to Pb1200/Db1200 documentation. | ||
137 | #elif defined( CONFIG_AU1XXX_PSC_SPI ) | ||
138 | bcsr->resets |= BCSR_RESETS_PCS0MUX; | ||
139 | /*Hard Coding Value to enable Temp Sensors [bit 14] Value for SOC Au1200. Pls refer documentation*/ | ||
140 | bcsr->resets =0x900f; | ||
141 | #elif defined( CONFIG_I2C_AU1550 ) | ||
142 | bcsr->resets &= (~BCSR_RESETS_PCS0MUX); | 135 | bcsr->resets &= (~BCSR_RESETS_PCS0MUX); |
143 | #endif | 136 | #endif |
144 | au_sync(); | 137 | au_sync(); |
diff --git a/arch/mips/kernel/branch.c b/arch/mips/kernel/branch.c index 76fd3f22c766..6b5df8bfab85 100644 --- a/arch/mips/kernel/branch.c +++ b/arch/mips/kernel/branch.c | |||
@@ -22,7 +22,8 @@ | |||
22 | */ | 22 | */ |
23 | int __compute_return_epc(struct pt_regs *regs) | 23 | int __compute_return_epc(struct pt_regs *regs) |
24 | { | 24 | { |
25 | unsigned int *addr, bit, fcr31, dspcontrol; | 25 | unsigned int __user *addr; |
26 | unsigned int bit, fcr31, dspcontrol; | ||
26 | long epc; | 27 | long epc; |
27 | union mips_instruction insn; | 28 | union mips_instruction insn; |
28 | 29 | ||
@@ -33,7 +34,7 @@ int __compute_return_epc(struct pt_regs *regs) | |||
33 | /* | 34 | /* |
34 | * Read the instruction | 35 | * Read the instruction |
35 | */ | 36 | */ |
36 | addr = (unsigned int *) epc; | 37 | addr = (unsigned int __user *) epc; |
37 | if (__get_user(insn.word, addr)) { | 38 | if (__get_user(insn.word, addr)) { |
38 | force_sig(SIGSEGV, current); | 39 | force_sig(SIGSEGV, current); |
39 | return -EFAULT; | 40 | return -EFAULT; |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 5e9fa83c4ef0..37c562c4c817 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -131,7 +131,7 @@ static void show_stacktrace(struct task_struct *task, struct pt_regs *regs) | |||
131 | const int field = 2 * sizeof(unsigned long); | 131 | const int field = 2 * sizeof(unsigned long); |
132 | long stackdata; | 132 | long stackdata; |
133 | int i; | 133 | int i; |
134 | unsigned long *sp = (unsigned long *)regs->regs[29]; | 134 | unsigned long __user *sp = (unsigned long __user *)regs->regs[29]; |
135 | 135 | ||
136 | printk("Stack :"); | 136 | printk("Stack :"); |
137 | i = 0; | 137 | i = 0; |
@@ -187,7 +187,7 @@ void dump_stack(void) | |||
187 | 187 | ||
188 | EXPORT_SYMBOL(dump_stack); | 188 | EXPORT_SYMBOL(dump_stack); |
189 | 189 | ||
190 | void show_code(unsigned int *pc) | 190 | static void show_code(unsigned int __user *pc) |
191 | { | 191 | { |
192 | long i; | 192 | long i; |
193 | 193 | ||
@@ -305,7 +305,7 @@ void show_registers(struct pt_regs *regs) | |||
305 | printk("Process %s (pid: %d, threadinfo=%p, task=%p)\n", | 305 | printk("Process %s (pid: %d, threadinfo=%p, task=%p)\n", |
306 | current->comm, current->pid, current_thread_info(), current); | 306 | current->comm, current->pid, current_thread_info(), current); |
307 | show_stacktrace(current, regs); | 307 | show_stacktrace(current, regs); |
308 | show_code((unsigned int *) regs->cp0_epc); | 308 | show_code((unsigned int __user *) regs->cp0_epc); |
309 | printk("\n"); | 309 | printk("\n"); |
310 | } | 310 | } |
311 | 311 | ||
@@ -865,7 +865,7 @@ asmlinkage void do_mcheck(struct pt_regs *regs) | |||
865 | dump_tlb_all(); | 865 | dump_tlb_all(); |
866 | } | 866 | } |
867 | 867 | ||
868 | show_code((unsigned int *) regs->cp0_epc); | 868 | show_code((unsigned int __user *) regs->cp0_epc); |
869 | 869 | ||
870 | /* | 870 | /* |
871 | * Some chips may have other causes of machine check (e.g. SB1 | 871 | * Some chips may have other causes of machine check (e.g. SB1 |
diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c index d7f05b0abe17..17419e11ecad 100644 --- a/arch/mips/math-emu/cp1emu.c +++ b/arch/mips/math-emu/cp1emu.c | |||
@@ -205,7 +205,7 @@ static int isBranchInstr(mips_instruction * i) | |||
205 | static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx) | 205 | static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx) |
206 | { | 206 | { |
207 | mips_instruction ir; | 207 | mips_instruction ir; |
208 | void * emulpc, *contpc; | 208 | unsigned long emulpc, contpc; |
209 | unsigned int cond; | 209 | unsigned int cond; |
210 | 210 | ||
211 | if (get_user(ir, (mips_instruction __user *) xcp->cp0_epc)) { | 211 | if (get_user(ir, (mips_instruction __user *) xcp->cp0_epc)) { |
@@ -230,7 +230,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx) | |||
230 | * Linux MIPS branch emulator operates on context, updating the | 230 | * Linux MIPS branch emulator operates on context, updating the |
231 | * cp0_epc. | 231 | * cp0_epc. |
232 | */ | 232 | */ |
233 | emulpc = (void *) (xcp->cp0_epc + 4); /* Snapshot emulation target */ | 233 | emulpc = xcp->cp0_epc + 4; /* Snapshot emulation target */ |
234 | 234 | ||
235 | if (__compute_return_epc(xcp)) { | 235 | if (__compute_return_epc(xcp)) { |
236 | #ifdef CP1DBG | 236 | #ifdef CP1DBG |
@@ -244,12 +244,12 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx) | |||
244 | return SIGBUS; | 244 | return SIGBUS; |
245 | } | 245 | } |
246 | /* __compute_return_epc() will have updated cp0_epc */ | 246 | /* __compute_return_epc() will have updated cp0_epc */ |
247 | contpc = (void *) xcp->cp0_epc; | 247 | contpc = xcp->cp0_epc; |
248 | /* In order not to confuse ptrace() et al, tweak context */ | 248 | /* In order not to confuse ptrace() et al, tweak context */ |
249 | xcp->cp0_epc = (unsigned long) emulpc - 4; | 249 | xcp->cp0_epc = emulpc - 4; |
250 | } else { | 250 | } else { |
251 | emulpc = (void *) xcp->cp0_epc; | 251 | emulpc = xcp->cp0_epc; |
252 | contpc = (void *) (xcp->cp0_epc + 4); | 252 | contpc = xcp->cp0_epc + 4; |
253 | } | 253 | } |
254 | 254 | ||
255 | emul: | 255 | emul: |
@@ -427,8 +427,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx) | |||
427 | * instruction | 427 | * instruction |
428 | */ | 428 | */ |
429 | xcp->cp0_epc += 4; | 429 | xcp->cp0_epc += 4; |
430 | contpc = (void *) | 430 | contpc = (xcp->cp0_epc + |
431 | (xcp->cp0_epc + | ||
432 | (MIPSInst_SIMM(ir) << 2)); | 431 | (MIPSInst_SIMM(ir) << 2)); |
433 | 432 | ||
434 | if (get_user(ir, | 433 | if (get_user(ir, |
@@ -462,7 +461,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx) | |||
462 | * Single step the non-cp1 | 461 | * Single step the non-cp1 |
463 | * instruction in the dslot | 462 | * instruction in the dslot |
464 | */ | 463 | */ |
465 | return mips_dsemul(xcp, ir, (unsigned long) contpc); | 464 | return mips_dsemul(xcp, ir, contpc); |
466 | } | 465 | } |
467 | else { | 466 | else { |
468 | /* branch not taken */ | 467 | /* branch not taken */ |
@@ -521,7 +520,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx) | |||
521 | } | 520 | } |
522 | 521 | ||
523 | /* we did it !! */ | 522 | /* we did it !! */ |
524 | xcp->cp0_epc = (unsigned long) contpc; | 523 | xcp->cp0_epc = contpc; |
525 | xcp->cp0_cause &= ~CAUSEF_BD; | 524 | xcp->cp0_cause &= ~CAUSEF_BD; |
526 | 525 | ||
527 | return 0; | 526 | return 0; |
diff --git a/arch/mips/math-emu/dsemul.c b/arch/mips/math-emu/dsemul.c index ea6ba7248489..653e325849e4 100644 --- a/arch/mips/math-emu/dsemul.c +++ b/arch/mips/math-emu/dsemul.c | |||
@@ -54,8 +54,7 @@ struct emuframe { | |||
54 | int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc) | 54 | int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc) |
55 | { | 55 | { |
56 | extern asmlinkage void handle_dsemulret(void); | 56 | extern asmlinkage void handle_dsemulret(void); |
57 | mips_instruction *dsemul_insns; | 57 | struct emuframe __user *fr; |
58 | struct emuframe *fr; | ||
59 | int err; | 58 | int err; |
60 | 59 | ||
61 | if (ir == 0) { /* a nop is easy */ | 60 | if (ir == 0) { /* a nop is easy */ |
@@ -87,8 +86,8 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc) | |||
87 | */ | 86 | */ |
88 | 87 | ||
89 | /* Ensure that the two instructions are in the same cache line */ | 88 | /* Ensure that the two instructions are in the same cache line */ |
90 | dsemul_insns = (mips_instruction *) ((regs->regs[29] - sizeof(struct emuframe)) & ~0x7); | 89 | fr = (struct emuframe __user *) |
91 | fr = (struct emuframe *) dsemul_insns; | 90 | ((regs->regs[29] - sizeof(struct emuframe)) & ~0x7); |
92 | 91 | ||
93 | /* Verify that the stack pointer is not competely insane */ | 92 | /* Verify that the stack pointer is not competely insane */ |
94 | if (unlikely(!access_ok(VERIFY_WRITE, fr, sizeof(struct emuframe)))) | 93 | if (unlikely(!access_ok(VERIFY_WRITE, fr, sizeof(struct emuframe)))) |
@@ -113,12 +112,13 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc) | |||
113 | 112 | ||
114 | int do_dsemulret(struct pt_regs *xcp) | 113 | int do_dsemulret(struct pt_regs *xcp) |
115 | { | 114 | { |
116 | struct emuframe *fr; | 115 | struct emuframe __user *fr; |
117 | unsigned long epc; | 116 | unsigned long epc; |
118 | u32 insn, cookie; | 117 | u32 insn, cookie; |
119 | int err = 0; | 118 | int err = 0; |
120 | 119 | ||
121 | fr = (struct emuframe *) (xcp->cp0_epc - sizeof(mips_instruction)); | 120 | fr = (struct emuframe __user *) |
121 | (xcp->cp0_epc - sizeof(mips_instruction)); | ||
122 | 122 | ||
123 | /* | 123 | /* |
124 | * If we can't even access the area, something is very wrong, but we'll | 124 | * If we can't even access the area, something is very wrong, but we'll |
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c index a0c11efeaeeb..40c7c3eeafaf 100644 --- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c +++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c | |||
@@ -138,7 +138,6 @@ extern void toshiba_rbtx4927_irq_setup(void); | |||
138 | char *prom_getcmdline(void); | 138 | char *prom_getcmdline(void); |
139 | 139 | ||
140 | #ifdef CONFIG_PCI | 140 | #ifdef CONFIG_PCI |
141 | #define CONFIG_TX4927BUG_WORKAROUND | ||
142 | #undef TX4927_SUPPORT_COMMAND_IO | 141 | #undef TX4927_SUPPORT_COMMAND_IO |
143 | #undef TX4927_SUPPORT_PCI_66 | 142 | #undef TX4927_SUPPORT_PCI_66 |
144 | int tx4927_cpu_clock = 100000000; /* 100MHz */ | 143 | int tx4927_cpu_clock = 100000000; /* 100MHz */ |
@@ -669,15 +668,7 @@ void tx4927_pci_setup(void) | |||
669 | 668 | ||
670 | /* PCI->GB mappings (MEM 16MB) -not used */ | 669 | /* PCI->GB mappings (MEM 16MB) -not used */ |
671 | tx4927_pcicptr->p2gm1plbase = 0xffffffff; | 670 | tx4927_pcicptr->p2gm1plbase = 0xffffffff; |
672 | #ifdef CONFIG_TX4927BUG_WORKAROUND | ||
673 | /* | ||
674 | * TX4927-PCIC-BUG: P2GM1PUBASE must be 0 | ||
675 | * if P2GM0PUBASE was 0. | ||
676 | */ | ||
677 | tx4927_pcicptr->p2gm1pubase = 0; | ||
678 | #else | ||
679 | tx4927_pcicptr->p2gm1pubase = 0xffffffff; | 671 | tx4927_pcicptr->p2gm1pubase = 0xffffffff; |
680 | #endif | ||
681 | tx4927_pcicptr->p2gmgbase[1] = 0; | 672 | tx4927_pcicptr->p2gmgbase[1] = 0; |
682 | 673 | ||
683 | /* PCI->GB mappings (MEM 1MB) -not used */ | 674 | /* PCI->GB mappings (MEM 1MB) -not used */ |
@@ -910,16 +901,6 @@ void __init toshiba_rbtx4927_setup(void) | |||
910 | if (tx4927_ccfg_toeon) | 901 | if (tx4927_ccfg_toeon) |
911 | tx4927_ccfgptr->ccfg |= TX4927_CCFG_TOE; | 902 | tx4927_ccfgptr->ccfg |= TX4927_CCFG_TOE; |
912 | 903 | ||
913 | /* SDRAMC fixup */ | ||
914 | #ifdef CONFIG_TX4927BUG_WORKAROUND | ||
915 | /* | ||
916 | * TX4927-BUG: INF 01-01-18/ BUG 01-01-22 | ||
917 | * G-bus timeout error detection is incorrect | ||
918 | */ | ||
919 | if (tx4927_ccfg_toeon) | ||
920 | tx4927_sdramcptr->tr |= 0x02000000; /* RCD:3tck */ | ||
921 | #endif | ||
922 | |||
923 | tx4927_pci_setup(); | 904 | tx4927_pci_setup(); |
924 | if (tx4927_using_backplane == 1) | 905 | if (tx4927_using_backplane == 1) |
925 | printk("backplane board IS installed\n"); | 906 | printk("backplane board IS installed\n"); |