Commit 714cfe78 authored by Ralf Baechle's avatar Ralf Baechle

[MIPS] Oprofile: kernel support for the R10000.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 2472d0b5
...@@ -12,5 +12,6 @@ oprofile-y := $(DRIVER_OBJS) common.o ...@@ -12,5 +12,6 @@ oprofile-y := $(DRIVER_OBJS) common.o
oprofile-$(CONFIG_CPU_MIPS32) += op_model_mipsxx.o oprofile-$(CONFIG_CPU_MIPS32) += op_model_mipsxx.o
oprofile-$(CONFIG_CPU_MIPS64) += op_model_mipsxx.o oprofile-$(CONFIG_CPU_MIPS64) += op_model_mipsxx.o
oprofile-$(CONFIG_CPU_R10000) += op_model_mipsxx.o
oprofile-$(CONFIG_CPU_SB1) += op_model_mipsxx.o oprofile-$(CONFIG_CPU_SB1) += op_model_mipsxx.o
oprofile-$(CONFIG_CPU_RM9000) += op_model_rm9000.o oprofile-$(CONFIG_CPU_RM9000) += op_model_rm9000.o
...@@ -83,6 +83,9 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) ...@@ -83,6 +83,9 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
case CPU_74K: case CPU_74K:
case CPU_SB1: case CPU_SB1:
case CPU_SB1A: case CPU_SB1A:
case CPU_R10000:
case CPU_R12000:
case CPU_R14000:
lmodel = &op_model_mipsxx_ops; lmodel = &op_model_mipsxx_ops;
break; break;
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#define M_PERFCTL_SUPERVISOR (1UL << 2) #define M_PERFCTL_SUPERVISOR (1UL << 2)
#define M_PERFCTL_USER (1UL << 3) #define M_PERFCTL_USER (1UL << 3)
#define M_PERFCTL_INTERRUPT_ENABLE (1UL << 4) #define M_PERFCTL_INTERRUPT_ENABLE (1UL << 4)
#define M_PERFCTL_EVENT(event) ((event) << 5) #define M_PERFCTL_EVENT(event) (((event) & 0x3f) << 5)
#define M_PERFCTL_VPEID(vpe) ((vpe) << 16) #define M_PERFCTL_VPEID(vpe) ((vpe) << 16)
#define M_PERFCTL_MT_EN(filter) ((filter) << 20) #define M_PERFCTL_MT_EN(filter) ((filter) << 20)
#define M_TC_EN_ALL M_PERFCTL_MT_EN(0) #define M_TC_EN_ALL M_PERFCTL_MT_EN(0)
...@@ -218,13 +218,23 @@ static inline int __n_counters(void) ...@@ -218,13 +218,23 @@ static inline int __n_counters(void)
static inline int n_counters(void) static inline int n_counters(void)
{ {
int counters = __n_counters(); int counters;
switch (current_cpu_data.cputype) {
case CPU_R10000:
counters = 2;
case CPU_R12000:
case CPU_R14000:
counters = 4;
default:
counters = __n_counters();
}
#ifdef CONFIG_MIPS_MT_SMP #ifdef CONFIG_MIPS_MT_SMP
if (current_cpu_data.cputype == CPU_34K) counters >> 1;
return counters >> 1;
#endif #endif
return counters; return counters;
} }
...@@ -284,6 +294,18 @@ static int __init mipsxx_init(void) ...@@ -284,6 +294,18 @@ static int __init mipsxx_init(void)
op_model_mipsxx_ops.cpu_type = "mips/5K"; op_model_mipsxx_ops.cpu_type = "mips/5K";
break; break;
case CPU_R10000:
if ((current_cpu_data.processor_id & 0xff) == 0x20)
op_model_mipsxx_ops.cpu_type = "mips/r10000-v2.x";
else
op_model_mipsxx_ops.cpu_type = "mips/r10000";
break;
case CPU_R12000:
case CPU_R14000:
op_model_mipsxx_ops.cpu_type = "mips/r12000";
break;
case CPU_SB1: case CPU_SB1:
case CPU_SB1A: case CPU_SB1A:
op_model_mipsxx_ops.cpu_type = "mips/sb1"; op_model_mipsxx_ops.cpu_type = "mips/sb1";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment