|
|
@@ -501,44 +501,10 @@ long arch_ptrace(struct task_struct *child, long request,
|
|
|
case FPC_CSR:
|
|
|
tmp = child->thread.fpu.fcr31;
|
|
|
break;
|
|
|
- case FPC_EIR: { /* implementation / version register */
|
|
|
- unsigned int flags;
|
|
|
-#ifdef CONFIG_MIPS_MT_SMTC
|
|
|
- unsigned long irqflags;
|
|
|
- unsigned int mtflags;
|
|
|
-#endif /* CONFIG_MIPS_MT_SMTC */
|
|
|
-
|
|
|
- preempt_disable();
|
|
|
- if (!cpu_has_fpu) {
|
|
|
- preempt_enable();
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
-#ifdef CONFIG_MIPS_MT_SMTC
|
|
|
- /* Read-modify-write of Status must be atomic */
|
|
|
- local_irq_save(irqflags);
|
|
|
- mtflags = dmt();
|
|
|
-#endif /* CONFIG_MIPS_MT_SMTC */
|
|
|
- if (cpu_has_mipsmt) {
|
|
|
- unsigned int vpflags = dvpe();
|
|
|
- flags = read_c0_status();
|
|
|
- __enable_fpu(FPU_AS_IS);
|
|
|
- __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp));
|
|
|
- write_c0_status(flags);
|
|
|
- evpe(vpflags);
|
|
|
- } else {
|
|
|
- flags = read_c0_status();
|
|
|
- __enable_fpu(FPU_AS_IS);
|
|
|
- __asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp));
|
|
|
- write_c0_status(flags);
|
|
|
- }
|
|
|
-#ifdef CONFIG_MIPS_MT_SMTC
|
|
|
- emt(mtflags);
|
|
|
- local_irq_restore(irqflags);
|
|
|
-#endif /* CONFIG_MIPS_MT_SMTC */
|
|
|
- preempt_enable();
|
|
|
+ case FPC_EIR:
|
|
|
+ /* implementation / version register */
|
|
|
+ tmp = current_cpu_data.fpu_id;
|
|
|
break;
|
|
|
- }
|
|
|
case DSP_BASE ... DSP_BASE + 5: {
|
|
|
dspreg_t *dregs;
|
|
|
|