Commit 9f579d55 authored by Stéphane Eranian's avatar Stéphane Eranian Committed by David Mosberger

[PATCH] ia64: perfmon dv serialization patch

Add ia64_dv_serialize_*() macros to ia64_set_*br() calls to avoid DV warnings
from the assembler (requires updated assembler).
parent 47ee7f40
...@@ -712,6 +712,7 @@ pfm_restore_ibrs(unsigned long *ibrs, unsigned int nibrs) ...@@ -712,6 +712,7 @@ pfm_restore_ibrs(unsigned long *ibrs, unsigned int nibrs)
for (i=0; i < nibrs; i++) { for (i=0; i < nibrs; i++) {
ia64_set_ibr(i, ibrs[i]); ia64_set_ibr(i, ibrs[i]);
ia64_dv_serialize_instruction();
} }
ia64_srlz_i(); ia64_srlz_i();
} }
...@@ -723,6 +724,7 @@ pfm_restore_dbrs(unsigned long *dbrs, unsigned int ndbrs) ...@@ -723,6 +724,7 @@ pfm_restore_dbrs(unsigned long *dbrs, unsigned int ndbrs)
for (i=0; i < ndbrs; i++) { for (i=0; i < ndbrs; i++) {
ia64_set_dbr(i, dbrs[i]); ia64_set_dbr(i, dbrs[i]);
ia64_dv_serialize_data();
} }
ia64_srlz_d(); ia64_srlz_d();
} }
...@@ -3823,12 +3825,12 @@ pfm_write_ibr_dbr(int mode, pfm_context_t *ctx, void *arg, int count, struct pt_ ...@@ -3823,12 +3825,12 @@ pfm_write_ibr_dbr(int mode, pfm_context_t *ctx, void *arg, int count, struct pt_
DPRINT(("[%d] clearing ibrs, dbrs\n", task->pid)); DPRINT(("[%d] clearing ibrs, dbrs\n", task->pid));
for (i=0; i < pmu_conf->num_ibrs; i++) { for (i=0; i < pmu_conf->num_ibrs; i++) {
ia64_set_ibr(i, 0UL); ia64_set_ibr(i, 0UL);
ia64_srlz_i(); ia64_dv_serialize_instruction();
} }
ia64_srlz_i(); ia64_srlz_i();
for (i=0; i < pmu_conf->num_dbrs; i++) { for (i=0; i < pmu_conf->num_dbrs; i++) {
ia64_set_dbr(i, 0UL); ia64_set_dbr(i, 0UL);
ia64_srlz_d(); ia64_dv_serialize_data();
} }
ia64_srlz_d(); ia64_srlz_d();
} }
...@@ -3875,7 +3877,10 @@ pfm_write_ibr_dbr(int mode, pfm_context_t *ctx, void *arg, int count, struct pt_ ...@@ -3875,7 +3877,10 @@ pfm_write_ibr_dbr(int mode, pfm_context_t *ctx, void *arg, int count, struct pt_
if (mode == PFM_CODE_RR) { if (mode == PFM_CODE_RR) {
CTX_USED_IBR(ctx, rnum); CTX_USED_IBR(ctx, rnum);
if (can_access_pmu) ia64_set_ibr(rnum, dbreg.val); if (can_access_pmu) {
ia64_set_ibr(rnum, dbreg.val);
ia64_dv_serialize_instruction();
}
ctx->ctx_ibrs[rnum] = dbreg.val; ctx->ctx_ibrs[rnum] = dbreg.val;
......
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