Ejemplo n.º 1
0
static int perf_proc_irq(void)
{
	unsigned long snapshot;

	/*
	 * It would be nice to do this as a loop, but we don't have
	 * indirect access to CP0 registers.
	 */
	snapshot = read_c0_perfcntr0();
	if ((long)snapshot < 0) {
		extencount[0] +=
			(unsigned long long)((unsigned)read_c0_perfcntr0());
		write_c0_perfcntr0(0);
	}
	snapshot = read_c0_perfcntr1();
	if ((long)snapshot < 0) {
		extencount[1] +=
			(unsigned long long)((unsigned)read_c0_perfcntr1());
		write_c0_perfcntr1(0);
	}
	snapshot = read_c0_perfcntr2();
	if ((long)snapshot < 0) {
		extencount[2] +=
			(unsigned long long)((unsigned)read_c0_perfcntr2());
		write_c0_perfcntr2(0);
	}
	snapshot = read_c0_perfcntr3();
	if ((long)snapshot < 0) {
		extencount[3] +=
			(unsigned long long)((unsigned)read_c0_perfcntr3());
		write_c0_perfcntr3(0);
	}
	return 0;
}
Ejemplo n.º 2
0
static int proc_read_perf(char *page, char **start, off_t off,
				int count, int *eof, void *data)
{
	int totalen = 0;
	int len;

	len = sprintf(page, "PerfCnt[0].Ctl : 0x%08x\n", read_c0_perfctrl0());
	totalen += len;
	page += len;
	len = sprintf(page, "PerfCnt[0].Cnt : %Lu\n",
		extencount[0] + (unsigned long long)((unsigned)read_c0_perfcntr0()));
	totalen += len;
	page += len;
	len = sprintf(page, "PerfCnt[1].Ctl : 0x%08x\n", read_c0_perfctrl1());
	totalen += len;
	page += len;
	len = sprintf(page, "PerfCnt[1].Cnt : %Lu\n",
		extencount[1] + (unsigned long long)((unsigned)read_c0_perfcntr1()));
	totalen += len;
	page += len;
	len = sprintf(page, "PerfCnt[2].Ctl : 0x%08x\n", read_c0_perfctrl2());
	totalen += len;
	page += len;
	len = sprintf(page, "PerfCnt[2].Cnt : %Lu\n",
		extencount[2] + (unsigned long long)((unsigned)read_c0_perfcntr2()));
	totalen += len;
	page += len;
	len = sprintf(page, "PerfCnt[3].Ctl : 0x%08x\n", read_c0_perfctrl3());
	totalen += len;
	page += len;
	len = sprintf(page, "PerfCnt[3].Cnt : %Lu\n",
		extencount[3] + (unsigned long long)((unsigned)read_c0_perfcntr3()));
	totalen += len;
	page += len;

	return totalen;
}
Ejemplo n.º 3
0
void read_cntrs(unsigned int *c0, unsigned int *c1)
{
	*c0 = read_c0_perfcntr0();
	*c1 = read_c0_perfcntr1();
}