diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-04-20 18:36:05 -0400 | 
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-04-20 18:36:05 -0400 | 
| commit | 857c68f733eea07f11a061caea43a38fed61adb7 (patch) | |
| tree | 4567a9e91f717b22143ac1ccb0fb5323ac15afd3 /arch/mips/kernel/ptrace.c | |
| parent | 4741c336d27dec3ea68a35659abb8dc82b142388 (diff) | |
| parent | 402a26f0c040077ed6f941eefac5a6971f0d5f40 (diff) | |
Merge branch 'master'
Diffstat (limited to 'arch/mips/kernel/ptrace.c')
| -rw-r--r-- | arch/mips/kernel/ptrace.c | 14 | 
1 files changed, 14 insertions, 0 deletions
| diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c index f838b36cc765..f3106d0771b0 100644 --- a/arch/mips/kernel/ptrace.c +++ b/arch/mips/kernel/ptrace.c | |||
| @@ -248,10 +248,20 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
| 248 | break; | 248 | break; | 
| 249 | case FPC_EIR: { /* implementation / version register */ | 249 | case FPC_EIR: { /* implementation / version register */ | 
| 250 | unsigned int flags; | 250 | unsigned int flags; | 
| 251 | #ifdef CONFIG_MIPS_MT_SMTC | ||
| 252 | unsigned int irqflags; | ||
| 253 | unsigned int mtflags; | ||
| 254 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
| 251 | 255 | ||
| 252 | if (!cpu_has_fpu) | 256 | if (!cpu_has_fpu) | 
| 253 | break; | 257 | break; | 
| 254 | 258 | ||
| 259 | #ifdef CONFIG_MIPS_MT_SMTC | ||
| 260 | /* Read-modify-write of Status must be atomic */ | ||
| 261 | local_irq_save(irqflags); | ||
| 262 | mtflags = dmt(); | ||
| 263 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
| 264 | |||
| 255 | preempt_disable(); | 265 | preempt_disable(); | 
| 256 | if (cpu_has_mipsmt) { | 266 | if (cpu_has_mipsmt) { | 
| 257 | unsigned int vpflags = dvpe(); | 267 | unsigned int vpflags = dvpe(); | 
| @@ -266,6 +276,10 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
| 266 | __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp)); | 276 | __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp)); | 
| 267 | write_c0_status(flags); | 277 | write_c0_status(flags); | 
| 268 | } | 278 | } | 
| 279 | #ifdef CONFIG_MIPS_MT_SMTC | ||
| 280 | emt(mtflags); | ||
| 281 | local_irq_restore(irqflags); | ||
| 282 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
| 269 | preempt_enable(); | 283 | preempt_enable(); | 
| 270 | break; | 284 | break; | 
| 271 | } | 285 | } | 
