Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 120109
b: refs/heads/master
c: a99d6fd
h: refs/heads/master
i:
  120107: e994142
v: v3
  • Loading branch information
Paul Mundt committed Dec 22, 2008
1 parent 36dee80 commit 9222bbc
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 44 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4d1f3bbec49a080cae753aaa44dc1fc7277b3e50
refs/heads/master: a99d6fde69dd9c73ac0b4e42a77ed1ebc714e56a
4 changes: 0 additions & 4 deletions trunk/arch/sh/Kconfig.debug
Original file line number Diff line number Diff line change
Expand Up @@ -180,10 +180,6 @@ endmenu

if SUPERH64

config SH64_PROC_ASIDS
bool "Debug: report ASIDs through /proc/asids"
depends on PROC_FS && MMU

config SH64_SR_WATCH
bool "Debug: set SR.WATCH to enable hardware watchpoints and trace"

Expand Down
39 changes: 0 additions & 39 deletions trunk/arch/sh/kernel/process_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
#include <linux/reboot.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/io.h>
#include <asm/syscalls.h>
#include <asm/uaccess.h>
Expand Down Expand Up @@ -590,41 +589,3 @@ unsigned long get_wchan(struct task_struct *p)
#endif
return pc;
}

/* Provide a /proc/asids file that lists out the
ASIDs currently associated with the processes. (If the DM.PC register is
examined through the debug link, this shows ASID + PC. To make use of this,
the PID->ASID relationship needs to be known. This is primarily for
debugging.)
*/

#if defined(CONFIG_SH64_PROC_ASIDS)
static int
asids_proc_info(char *buf, char **start, off_t fpos, int length, int *eof, void *data)
{
int len=0;
struct task_struct *p;
read_lock(&tasklist_lock);
for_each_process(p) {
int pid = p->pid;

if (!pid)
continue;
if (p->mm)
len += sprintf(buf+len, "%5d : %02lx\n", pid,
asid_cache(smp_processor_id()));
else
len += sprintf(buf+len, "%5d : (none)\n", pid);
}
read_unlock(&tasklist_lock);
*eof = 1;
return len;
}

static int __init register_proc_asids(void)
{
create_proc_read_entry("asids", 0, NULL, asids_proc_info, NULL);
return 0;
}
__initcall(register_proc_asids);
#endif
1 change: 1 addition & 0 deletions trunk/arch/sh/mm/Makefile_32
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ mmu-y := tlb-nommu.o pg-nommu.o
mmu-$(CONFIG_MMU) := fault_32.o tlbflush_32.o ioremap_32.o

obj-y += $(mmu-y)
obj-$(CONFIG_DEBUG_FS) += asids-debugfs.o

ifdef CONFIG_DEBUG_FS
obj-$(CONFIG_CPU_SH4) += cache-debugfs.o
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/sh/mm/Makefile_64
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ obj-y += cache-sh5.o
endif

obj-y += $(mmu-y)
obj-$(CONFIG_DEBUG_FS) += asids-debugfs.o

obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o
obj-$(CONFIG_NUMA) += numa.o
Expand Down
79 changes: 79 additions & 0 deletions trunk/arch/sh/mm/asids-debugfs.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* debugfs ops for process ASIDs
*
* Copyright (C) 2000, 2001 Paolo Alberelli
* Copyright (C) 2003 - 2008 Paul Mundt
* Copyright (C) 2003, 2004 Richard Curnow
*
* Provides a debugfs file that lists out the ASIDs currently associated
* with the processes.
*
* In the SH-5 case, if the DM.PC register is examined through the debug
* link, this shows ASID + PC. To make use of this, the PID->ASID
* relationship needs to be known. This is primarily for debugging.
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/debugfs.h>
#include <linux/seq_file.h>
#include <linux/spinlock.h>
#include <asm/processor.h>
#include <asm/mmu_context.h>

static int asids_seq_show(struct seq_file *file, void *iter)
{
struct task_struct *p;

read_lock(&tasklist_lock);

for_each_process(p) {
int pid = p->pid;

if (unlikely(!pid))
continue;

if (p->mm)
seq_printf(file, "%5d : %02x\n", pid,
cpu_asid(smp_processor_id(), p->mm));
else
seq_printf(file, "%5d : (none)\n", pid);
}

read_unlock(&tasklist_lock);

return 0;
}

static int asids_debugfs_open(struct inode *inode, struct file *file)
{
return single_open(file, asids_seq_show, inode->i_private);
}

static const struct file_operations asids_debugfs_fops = {
.owner = THIS_MODULE,
.open = asids_debugfs_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};

static int __init asids_debugfs_init(void)
{
struct dentry *asids_dentry;

asids_dentry = debugfs_create_file("asids", S_IRUSR, sh_debugfs_root,
NULL, &asids_debugfs_fops);
if (!asids_dentry)
return -ENOMEM;
if (IS_ERR(asids_dentry))
return PTR_ERR(asids_dentry);

return 0;
}
module_init(asids_debugfs_init);

MODULE_LICENSE("GPL v2");

0 comments on commit 9222bbc

Please sign in to comment.