diff options
author | Lijun Pan <LIJUN.PAN@FREESCALE.COM> | 2013-06-05 16:22:09 -0400 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2013-08-07 19:38:03 -0400 |
commit | 5815c434fdb87b9e2f7d2268d29534e8b0011439 (patch) | |
tree | 267039aa47a43068e881e242d77f82bc252b4d34 /arch/powerpc/oprofile | |
parent | 96c3c9e78f7fe45303985cce13ce26e35afd01ba (diff) |
powerpc/perf: add 2 additional performance monitor counters for e6500 core
There are 6 counters in e6500 core instead of 4 in e500 core.
Signed-off-by: Lijun Pan <Lijun.Pan@freescale.com>
Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'arch/powerpc/oprofile')
-rw-r--r-- | arch/powerpc/oprofile/op_model_fsl_emb.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/powerpc/oprofile/op_model_fsl_emb.c b/arch/powerpc/oprofile/op_model_fsl_emb.c index ccc1daa33aed..2a82d3ed464d 100644 --- a/arch/powerpc/oprofile/op_model_fsl_emb.c +++ b/arch/powerpc/oprofile/op_model_fsl_emb.c | |||
@@ -46,6 +46,12 @@ static inline u32 get_pmlca(int ctr) | |||
46 | case 3: | 46 | case 3: |
47 | pmlca = mfpmr(PMRN_PMLCA3); | 47 | pmlca = mfpmr(PMRN_PMLCA3); |
48 | break; | 48 | break; |
49 | case 4: | ||
50 | pmlca = mfpmr(PMRN_PMLCA4); | ||
51 | break; | ||
52 | case 5: | ||
53 | pmlca = mfpmr(PMRN_PMLCA5); | ||
54 | break; | ||
49 | default: | 55 | default: |
50 | panic("Bad ctr number\n"); | 56 | panic("Bad ctr number\n"); |
51 | } | 57 | } |
@@ -68,6 +74,12 @@ static inline void set_pmlca(int ctr, u32 pmlca) | |||
68 | case 3: | 74 | case 3: |
69 | mtpmr(PMRN_PMLCA3, pmlca); | 75 | mtpmr(PMRN_PMLCA3, pmlca); |
70 | break; | 76 | break; |
77 | case 4: | ||
78 | mtpmr(PMRN_PMLCA4, pmlca); | ||
79 | break; | ||
80 | case 5: | ||
81 | mtpmr(PMRN_PMLCA5, pmlca); | ||
82 | break; | ||
71 | default: | 83 | default: |
72 | panic("Bad ctr number\n"); | 84 | panic("Bad ctr number\n"); |
73 | } | 85 | } |
@@ -84,6 +96,10 @@ static inline unsigned int ctr_read(unsigned int i) | |||
84 | return mfpmr(PMRN_PMC2); | 96 | return mfpmr(PMRN_PMC2); |
85 | case 3: | 97 | case 3: |
86 | return mfpmr(PMRN_PMC3); | 98 | return mfpmr(PMRN_PMC3); |
99 | case 4: | ||
100 | return mfpmr(PMRN_PMC4); | ||
101 | case 5: | ||
102 | return mfpmr(PMRN_PMC5); | ||
87 | default: | 103 | default: |
88 | return 0; | 104 | return 0; |
89 | } | 105 | } |
@@ -104,6 +120,12 @@ static inline void ctr_write(unsigned int i, unsigned int val) | |||
104 | case 3: | 120 | case 3: |
105 | mtpmr(PMRN_PMC3, val); | 121 | mtpmr(PMRN_PMC3, val); |
106 | break; | 122 | break; |
123 | case 4: | ||
124 | mtpmr(PMRN_PMC4, val); | ||
125 | break; | ||
126 | case 5: | ||
127 | mtpmr(PMRN_PMC5, val); | ||
128 | break; | ||
107 | default: | 129 | default: |
108 | break; | 130 | break; |
109 | } | 131 | } |
@@ -133,6 +155,14 @@ static void init_pmc_stop(int ctr) | |||
133 | mtpmr(PMRN_PMLCA3, pmlca); | 155 | mtpmr(PMRN_PMLCA3, pmlca); |
134 | mtpmr(PMRN_PMLCB3, pmlcb); | 156 | mtpmr(PMRN_PMLCB3, pmlcb); |
135 | break; | 157 | break; |
158 | case 4: | ||
159 | mtpmr(PMRN_PMLCA4, pmlca); | ||
160 | mtpmr(PMRN_PMLCB4, pmlcb); | ||
161 | break; | ||
162 | case 5: | ||
163 | mtpmr(PMRN_PMLCA5, pmlca); | ||
164 | mtpmr(PMRN_PMLCB5, pmlcb); | ||
165 | break; | ||
136 | default: | 166 | default: |
137 | panic("Bad ctr number!\n"); | 167 | panic("Bad ctr number!\n"); |
138 | } | 168 | } |