patch-2.4.10 linux/arch/sh/kernel/ptrace.c
Next file: linux/arch/sh/kernel/rtc-aica.c
Previous file: linux/arch/sh/kernel/process.c
Back to the patch index
Back to the overall index
- Lines: 83
- Date:
Tue Sep 18 16:56:19 2001
- Orig file:
v2.4.9/linux/arch/sh/kernel/ptrace.c
- Orig date:
Wed Jul 25 17:10:19 2001
diff -u --recursive --new-file v2.4.9/linux/arch/sh/kernel/ptrace.c linux/arch/sh/kernel/ptrace.c
@@ -1,4 +1,4 @@
-/* $Id: ptrace.c,v 1.6 2000/06/08 23:44:50 gniibe Exp $
+/* $Id: ptrace.c,v 1.12 2001/07/23 00:00:56 gniibe Exp $
*
* linux/arch/sh/kernel/ptrace.c
*
@@ -122,24 +122,39 @@
{
ctrl_outl(nextpc1, UBC_BARA);
ctrl_outb(asid, UBC_BASRA);
-#if defined(CONFIG_CPU_SUBTYPE_SH7709)
- ctrl_outl(0x0fff, UBC_BAMRA);
-#else
- ctrl_outb(BAMR_12, UBC_BAMRA);
-#endif
- ctrl_outw(BBR_INST | BBR_READ, UBC_BBRA);
+ if(UBC_TYPE_SH7729){
+ ctrl_outl(0x0fff, UBC_BAMRA);
+ ctrl_outw(BBR_INST | BBR_READ | BBR_CPU, UBC_BBRA);
+ }else{
+ ctrl_outb(BAMR_12, UBC_BAMRA);
+ ctrl_outw(BBR_INST | BBR_READ, UBC_BBRA);
+ }
if (nextpc2 != (unsigned long) -1) {
ctrl_outl(nextpc2, UBC_BARB);
ctrl_outb(asid, UBC_BASRB);
-#if defined(CONFIG_CPU_SUBTYPE_SH7709)
- ctrl_outl(0x0fff, UBC_BAMRA);
-#else
- ctrl_outb(BAMR_12, UBC_BAMRB);
-#endif
- ctrl_outw(BBR_INST | BBR_READ, UBC_BBRB);
+ if(UBC_TYPE_SH7729){
+ ctrl_outl(0x0fff, UBC_BAMRB);
+ ctrl_outw(BBR_INST | BBR_READ | BBR_CPU, UBC_BBRB);
+ }else{
+ ctrl_outb(BAMR_12, UBC_BAMRB);
+ ctrl_outw(BBR_INST | BBR_READ, UBC_BBRB);
+ }
}
- ctrl_outw(BRCR_PCBA | BRCR_PCBB, UBC_BRCR);
+ if(UBC_TYPE_SH7729)
+ ctrl_outl(BRCR_PCBA | BRCR_PCBB | BRCR_PCTE, UBC_BRCR);
+ else
+ ctrl_outw(BRCR_PCBA | BRCR_PCBB, UBC_BRCR);
+}
+
+/*
+ * Called by kernel/ptrace.c when detaching..
+ *
+ * Make sure single step bits etc are not set.
+ */
+void ptrace_disable(struct task_struct *child)
+{
+ /* nothing to do.. */
}
asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
@@ -337,21 +352,9 @@
break;
}
- case PTRACE_DETACH: { /* detach a process that was attached. */
- ret = -EIO;
- if ((unsigned long) data > _NSIG)
- break;
- child->ptrace = 0;
- child->exit_code = data;
- write_lock_irq(&tasklist_lock);
- REMOVE_LINKS(child);
- child->p_pptr = child->p_opptr;
- SET_LINKS(child);
- write_unlock_irq(&tasklist_lock);
- wake_up_process(child);
- ret = 0;
+ case PTRACE_DETACH: /* detach a process that was attached. */
+ ret = ptrace_detach(child, data);
break;
- }
case PTRACE_SETOPTIONS: {
if (data & PTRACE_O_TRACESYSGOOD)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)